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

Вниз

ListView_SetBkImage вообще не работает   Найти похожие ветки 

 
Michael_K   (2003-07-10 23:52) [0]

Хоть кто-нибудь сумел решить проблему установки фонового рисунка в TListView? Ответа нигде не нашёл,
функция ListView_SetBkImage (описана в ComCtrls.pas) просто не работает :(


 
Ученик ©   (2003-07-11 07:18) [1]

uses
CommCtrl;

procedure TForm1.FormShow(Sender: TObject);
begin
ListView1.Brush.Bitmap := Image1.Picture.Bitmap;
ListView_SetBkcolor(ListView1.Handle, CLR_NONE);
ListView_SetTextBkcolor(ListView1.Handle, CLR_NONE)
end;


 
DVM ©   (2003-07-11 09:43) [2]


> ListView_SetBkImage (описана в ComCtrls.pas) просто не работает
>

Она работает, но применять ее грамотно надо. Данная функция позволяет вставить фон исключительно из файла на диске!

Как то так (на память я не помню, вот нашел в яндексе). Тут еще надо обязательно вызывать то ли CoInitialize то ли OleInitialize перед всем этим.

function SetListViewBackImage(ListHandle: THandle; FileName: String;
XOffset, YOffSet: LongInt): LongInt;
var
BKImage: PLVBKImage;
BKSize: LongInt;
BKPath: array[0..255] of Char;
begin
if (Handle = 0) then Exit;
try
BKSize:= SizeOf(TLVBKImage);
GetMem(BKImage, BKSize);
if (FileName = """") then BKImage^.ulFlags:= LVBKIF_SOURCE_NONE else
BKImage^.ulFlags:= LVBKIF_SOURCE_URL or LVBKIF_STYLE_NORMAL;
StrPCopy(BKPath, FileName);
BKImage^.pszImage:= BKPath;
BKImage^.hbm:= 0;
BKImage^.cchImageMax:= 255;
BKImage^.xOffsetPercent:= XOffset;
BKImage^.yOffsetPercent:= YOffSet;
Result:= SendMessage(ListHandle, LVM_SETBKIMAGE, 0, LPARAM(BKImage));
finally
FreeMem(BKImage, BKSize);
end;
end;


> Ученик ©

Фон через Brush очень глючный метод, и, кроме того, не будет работать в XP при подключенном манифесте (т. е. с новыми CommonControls 6).


 
Michael_K   (2003-07-11 10:55) [3]

Что ListView_SetBkImage, что предложенный вами код возвращает 1
(по MSDN это означает что всё OK), но реально никакой подложки не появляется и даже не проверяется существование
указанного файла с рисунком (т.е. возвращается 1 даже если такого файла на диске нет). CoInitialize также не помогает.
Вам самому удалось подложить фон под TListView через LVM_SETBKIMAGE или ListView_SetBkImage? Хочу увидеть ещё кого-то кроме БГ кому это удалось ;)


 
DVM ©   (2003-07-11 11:01) [4]


> Michael_K (11.07.03 10:55)

Это не мой код. Это я где-то нашел прямо сейчас. Но я делал почти так раньше сам и у меня работало. Могу прислать пример если напомните почтой.


 
DVM ©   (2003-07-11 11:03) [5]


> DVM ©

А, забал, еще одно замечание. Все это будет работать только там, где есть Internet Explorer 4.0 и выше.


 
Michael_K   (2003-07-11 11:38) [6]

> Все это будет работать только там, где есть Internet Explorer 4.0 и выше.
Всё безобразие происходит в XP с IE 6.0, хотя и в 98SE тоже.

> Могу прислать пример если напомните почтой.
Напомнил :)



 
Ученик ©   (2003-07-11 19:08) [7]

>DVM © (11.07.03 09:43)
Все работает и с манифестом и без глюков, наверное, Delphi правильные попались :-)



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

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

Наверх




Память: 0.48 MB
Время: 0.02 c
1-77960
R
2003-07-11 07:38
2003.07.24
Уничтожение массива из списков


1-77833
Checist [root]
2003-07-12 02:26
2003.07.24
Свойства компонента


9-77704
Antichacker
2003-01-31 10:21
2003.07.24
Существует ли какая-либо документация по GLScene?(Eng)


3-77755
Vovik
2003-07-01 15:43
2003.07.24
Уважаемые Мастера. Почему не создается ADOQuery?


1-77844
Cr@zy-EyE
2003-07-12 17:54
2003.07.24
Invalid Pointer Operation