Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.12;
Скачать: CL | DM;

Вниз

ListView и фоновая картинка   Найти похожие ветки 

 
tytus   (2008-01-09 12:50) [0]

Доброго дня мастера. Вот пытаюсь рисовать фоновую картинку на онном компоненте посредством сообщения LVM_SETBKIMAGE.
Исходные данные:
LV1 - TListView (но переделанный - перекрыта WndProc)
  ViewStyle=vsReport, три столбца, якоря по всем углам
Image3 - TImage, в нем картинка bmp 206х25
LVBmp - TBitMap - для фоновой картинки
теперь процедура:
procedure TMainFm.SetBkImage;
var
 pw,ph,w,h:integer;
begin
pw:=Image3.Picture.Bitmap.Width;
ph:=Image3.Picture.Bitmap.Height;
w:=LV1.Width;
h:=LV1.Height;
LVBmp.Width:=w;
LVBmp.Height:=h;
StretchBlt(LVBmp.Canvas.Handle,0,0,w,h,
 Image3.Picture.Bitmap.Canvas.Handle,0,0,pw,ph,SRCCOPY);
FillChar(LVBKIMAGE,SizeOf(LVBKIMAGE),0);
LVBKIMAGE.ulFlags:=LVBKIF_SOURCE_HBITMAP or LVBKIF_STYLE_TILE;
LVBKIMAGE.hbm:=LVBmp.Handle;
LVBKIMAGE.pszImage:=nil;
LVBKIMAGE.xOffsetPercent:=0;
LVBKIMAGE.yOffsetPercent:=0;
SendMessage(LV1.Handle,LVM_SETTEXTBKCOLOR,0,CLR_NONE);
SendMessage(LV1.Handle,LVM_SETBKIMAGE,0,Integer(@LVBKIMAGE));
end;
Все рисуеццо нормально, но когда размер LV1 уменьшаеться так, что появляются полосы прокрутки (гор. к прим.) то вылетает ошибка "EInvalidGraphic with message Bitmap Image is not valid"
При увеличении контрола - все ОК.
Сию процедуру вызываю в обработчике OnResize LV1.
Вот прошу помощи в сем нелегком деле - как правильно рисовать фоновую картинку?


 
tytus   (2008-01-10 12:32) [1]

не интересно ? - ну и ладно....


 
clickmaker ©   (2008-01-10 12:45) [2]


> [1] tytus   (10.01.08 12:32)

на какой строке вылетает означенная ошибка?


 
tytus   (2008-01-10 18:31) [3]

>clickmaker ©   (10.01.08 12:45) [2]
в том то и дело, что строка не подсвечивается.
(только не нужно говорить что ошибка в 17 стр -)))


 
clickmaker ©   (2008-01-10 18:33) [4]


> [3] tytus   (10.01.08 18:31)

да ладно. Отладочные галки включены? use debug dcu и иже с нею?


 
tytus   (2008-01-10 18:46) [5]

>clickmaker ©   (10.01.08 18:33) [4]
первый раз о таком слышу... где это?


 
clickmaker ©   (2008-01-10 18:50) [6]


> [5] tytus   (10.01.08 18:46)

чё, правда?
так до второго пришествия можно баги ловить.
в project options - compiler
галки поставь, потом rebuild all


 
tytus   (2008-01-10 18:54) [7]

>clickmaker ©   (10.01.08 18:50) [6]
нашел... подсветилась строка в модуле Graphics
в процедуре :
procedure InvalidGraphic(Str: PResStringRec);
begin
 raise EInvalidGraphic.CreateRes(Str);
end;

что-то мне сдаеться, что проблема нерешаемая...


 
clickmaker ©   (2008-01-10 18:59) [8]


> [7] tytus   (10.01.08 18:54)

посмотри стек вызовов (call stack), откуда ноги растут


 
tytus   (2008-01-11 09:57) [9]

>clickmaker ©   (10.01.08 18:59) [8]
посмотрел. Получается, что последние вызовы процедур в списке call stack начинаются сначала, тоесть в начале списка. На что обратить внимание? На процедуры, где вместо параметров знаки вопроса? К примеру вот такие строки:
TMainFm.LV1Resize(???);
...
TBkListView.WndProc(???);- это я написал компонент, добавив лишь сию процедуру:
procedure TBkListView.WndProc(var Message:TMessage);
begin
if Message.Msg=WM_ERASEBKGND then
 DefaultHandler(Message)
else
 inherited WndProc(Message);
end;
Самым первым в списке идет сообщение "Invalid Graphic ($425B88)".
Вот так, и что из этого мне может быть полезным?


 
clickmaker ©   (2008-01-11 10:32) [10]

ну если из OnResize вызывается только SetBkImage, то, видимо, ошибка при манипуляциях с одним из Image или Bitmap.
Invalid Graphic - исключение VCL, а не виндозного ListView, оберткой которого является TListView


 
tytus   (2008-01-11 11:12) [11]

>clickmaker ©   (11.01.08 10:32) [10]
ок, будем разбираться со своей процедурой SetBkImage...



Страницы: 1 вся ветка

Текущий архив: 2008.10.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
3-1207907676
Xmen
2008-04-11 13:54
2008.10.12
Проблемы с DBGridом


1-1199544751
Wolf
2008-01-05 17:52
2008.10.12
Перевод функций на asm для ускорения работы


4-1197478143
DeBUGger13
2007-12-12 19:49
2008.10.12
Cannon PS (pro1) SDK


11-1194368147
XL007
2007-11-06 19:55
2008.10.12
Оффлайн справочник по библиотеке


15-1219088046
Тимохов
2008-08-18 23:34
2008.10.12
Helpdesk и работа с пользователями