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

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

TListBox.OnDrawItem [D6, Win95/98, WinXP]


Miwa ©   (2002-05-03 18:42:00) 

Точно помню, что был когда-то такой вопрос, но никак не могу найти. Да и поиск не работает. Временно. А суть - как реализовать сабж? Тоесть, код

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var i:integer;
begin
listbox1.Canvas.Font.Color:=clRed;
for i:=0 to listbox1.Count do listbox1.Canvas.TextOut(1*10+10,5,listbox1.Items[i]);
end;

делает то, что ничего не делает. Обидно. А хотелось бы увидеть красные буковки на листбоксе ;о)


MBo   (2002-05-04 06:13:00) [1]

Молчу...


Song   (2002-05-03 20:04:00) [2]

Подожжи, подожжи, тут ошибочка маленькая... чтобы сработало нужно With... изменить на With TListBox(Control), TListBox(Control).Canvas Do


Miwa   (2002-05-03 20:01:00) [3]


> данный код писал программист Паскаля а не Дельфи

Холмс, Вы гений! Кроме шуток. Я вправду взращен на паскале. ;о)

> свойство Style поставить в OwnerDrawFixed

Черт. Во, где собака зарыта! Большое спасибо!


Song   (2002-05-03 19:33:00) [4]

Var i уже не нужен


Song   (2002-05-03 19:32:00) [5]

Чтоб работало нужно 1 в отрывке "1*10+10..." заменить на I
Но данный код писал программист Паскаля а не Дельфи.. Зачем-то высчитывать смещение... А если строк будет больше чем убирается в клиентскую область ListBox? Вообщем, бред здесь написан.

Юзай, тока не забудь свойство Style поставить в OwnerDrawFixed:

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var i:integer;
begin
With TListBox(Control).Canvas Do
Begin
Font.Color:=clRed;
TextOut(Rect.Left+2,Rect.Top+2,Items[Index]);
End;
end;


Наверх

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