Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];

Вниз

Как мне вывести пункты листбокса????   Найти похожие ветки 

 
anod   (2003-01-18 22:09) [0]

Ну, вообщем, ловлю я событие 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;

но с высотой пунктов ничего не происходит???


 
CjCrazy   (2003-01-18 22:41) [1]

зайди на delphi.vitpc.com и покопайся тама. либо поищи по сайту (благо поиск есть). и точно найдёшь. сам оттуда взял примерчик. кстати очень хорошо работающий. (если не найдёшь, то пиши мылом. поищу у себя в архивах и вышлю)


 
anod   (2003-01-18 23:20) [2]

2CjCrazy
Если не сложно, то скинь мне на alvg@nm.ru
Чего-то королевство в дауне, а здесь ничего не могу найти, может я не правильные ключевые слова задаю?
WM_DRWITEM WM_MEASUREITEM...


 
CjCrazy   (2003-01-19 17:28) [3]

щас скину.
попробуй организовать поиск с русскими словами. шо-нить типа разноцветных строк и всё в этом духе. так больше шансов найти


 
anod   (2003-01-19 20:12) [4]

Спасибо, буду разбираться


 
Nick_N_A   (2003-01-21 06:50) [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-22 18:16) [6]

2Nick_N_A
Хмм, программа полностью на WinApi..


 
Nick_N_A   (2003-01-23 06:09) [7]

Понравилось? Работает?


 
anod   (2003-01-23 22:49) [8]

2Nick_N_A
Ну если учесть, что у меня нет ни Tform, ни TBitmap ,ни TListbox, то все работать должно.


 
Nick_N_A   (2003-01-24 06:21) [9]

Вitmap является временным буфером - чтобы небыло проблем,
а воьще можно исользывать и
ListBox1.Canvas.TextOut(rect.Left,Rect.Top,bm,"message"),
но обрати внимание на:
- ты должен полностью заполнить выделеный тебе квадрат
- State есть флажок if (odSelected in State) then Выделено.
- ListBox1.Style=lbOwnerDrawFixed



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

Форум: "WinAPI";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
9-53837
Gandalf
2002-10-17 15:01
2003.03.17
Пишем DirectX-движок


1-54029
KpeHgeJIb
2003-03-04 20:49
2003.03.17
Как получить список всех дочерных окон относящихся к пределенном.


3-53885
Geka
2003-02-25 10:19
2003.03.17
SQL и триггер


14-54303
Merlin
2003-02-28 04:58
2003.03.17
По геометрии


3-53944
~
2003-02-26 11:44
2003.03.17
Исключения хранимой процедуры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский