![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как мне вывести пункты листбокса???? [D7, WinXP]
anod © (2003-01-18 22:09:00)Ну, вообщем, ловлю я событие WM_DRAWITEM и из него вызываю процедуру:
procedure drawplist(dis: TDrawItemStruct);
var rect: TRECT; i,n:integer; buf: PCHAR;
begin
if Dis.CtlType = ODT_LISTBOX then begin
FillRect(dis.hDC, dis.rcItem, CreateSolidBrush($996633));
n:=0;
for i:=0 to SendMessage(hPlist, LB_GETCOUNT, 0,0)-1 do begin
buf:=PCHAR(SendMessage(hPlist, LB_GETITEMDATA, i,0));
GetClientRect(hPlist, rect);
SetBkMode(dis.hDC, TRANSPARENT);
TextOut(dis.hDC, rect.Left+5, n, buf, Length(Buf));
n:=n+20;
end;
end;
end;
Яхочу заменить фон, а также поменять шрифт и цвет надписей.
Подскажите, пожалуйста как выводить надписи нужно?
Да, и ёще я в событии WM_MEASUREITEM ишу следующее:
if mis.CtlID = IDC_LIST then begin
mis.itemHeight:=15;
Result:=true;
end;
но с высотой пунктов ничего не происходит???
Nick_N_A (2003-01-24 06:21:00) [1]Вitmap является временным буфером - чтобы небыло проблем,
а воьще можно исользывать и
ListBox1.Canvas.TextOut(rect.Left,Rect.Top,bm,"message"),
но обрати внимание на:
- ты должен полностью заполнить выделеный тебе квадрат
- State есть флажок if (odSelected in State) then Выделено.
- ListBox1.Style=lbOwnerDrawFixed
anod (2003-01-23 22:49:00) [2]2Nick_N_A
Ну если учесть, что у меня нет ни Tform, ни TBitmap ,ни TListbox, то все работать должно.
Nick_N_A (2003-01-23 06:09:00) [3]Понравилось? Работает?
anod (2003-01-22 18:16:00) [4]2Nick_N_A
Хмм, программа полностью на WinApi..
Nick_N_A (2003-01-21 06:50:00) [5]procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
Var bm:TBitMap;
begin
bm:=TBitMap.Create;
bm.Width:=ListBox1.Width;
bm.Heigth:=ListBox1.ItemHeigth;
...
ListBox1.Canvas.Draw(rect.Left,Rect.Top,bm);
bm.Free;
end;
anod (2003-01-19 20:12:00) [6]Спасибо, буду разбираться
CjCrazy (2003-01-19 17:28:00) [7]щас скину.
попробуй организовать поиск с русскими словами. шо-нить типа разноцветных строк и всё в этом духе. так больше шансов найти
anod (2003-01-18 23:20:00) [8]2CjCrazy
Если не сложно, то скинь мне на alvg@nm.ru
Чего-то королевство в дауне, а здесь ничего не могу найти, может я не правильные ключевые слова задаю?
WM_DRWITEM WM_MEASUREITEM...
CjCrazy (2003-01-18 22:41:00) [9]зайди на delphi.vitpc.com и покопайся тама. либо поищи по сайту (благо поиск есть). и точно найдёшь. сам оттуда взял примерчик. кстати очень хорошо работающий. (если не найдёшь, то пиши мылом. поищу у себя в архивах и вышлю)