Форум: "Основная";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c