Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как мне вывести пункты листбокса???? [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 и покопайся тама. либо поищи по сайту (благо поиск есть). и точно найдёшь. сам оттуда взял примерчик. кстати очень хорошо работающий. (если не найдёшь, то пиши мылом. поищу у себя в архивах и вышлю)


Наверх

Титульная страница Поиск, карта сайта Написать письмо