Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.01;
Скачать: CL | DM;

Вниз

Можно ли в Listbox вставить картинку?   Найти похожие ветки 

 
Crazy monkey   (2006-09-14 16:15) [0]

Есть записи и в зависимости от условий хотелось бы добавить к каждой свою картинку. Можно ли сделать такое в Listbox? Очень нужен код.
Заранее спасибо!


 
MBo ©   (2006-09-14 16:25) [1]

в справке по OnDrawItem есть пример


 
ГореПрограмист   (2006-09-14 16:54) [2]

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
begin
 ListBox1.Canvas.FillRect(Rect);
 ImageList1.Draw(ListBox1.Canvas, 1, 0, 0, true);
 ListBox1.Canvas.TextOut(Rect.Left + 19, Rect.Top + 1, ListBox1.Items.Strings[0]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 ListBox1.Style:= lbOwnerDrawFixed;
end;



> Crazy monkey   (14.09.06 16:15)



> и в зависимости от условий


Каких условий ?


 
Crazy monkey   (2006-09-14 20:42) [3]

Условий достаточно много, но мне надо было знать главным образом как рисовать в listbox.

Спасибо за ответ!


 
Crazy monkey   (2006-09-14 21:24) [4]

А не подскажете как быть? Как заполнить все записи одной картинкой? Вот этот код:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
ListBox1.Canvas.FillRect(Rect);
ImageList1.Draw(ListBox1.Canvas, 1, 0, 0, true);
ListBox1.Canvas.TextOut(Rect.Left + 19, Rect.Top + 1, ListBox1.Items.Strings[0]);
end;


позволяет нарисовать картинку только в первой строке, а как нарисовать одну и туже картинку во всех строках, которые я добавил?


 
ЮЮ ©   (2006-09-15 03:19) [5]

Он рисует не одну, а много, но в одном месте. Для задания координат надо использовать Rect, как делаешь это в случае вывода текста


 
Джо ©   (2006-09-15 03:23) [6]

> позволяет нарисовать картинку только в первой строке, а
> как нарисовать одну и туже картинку во всех строках, которые
> я добавил?

OnDrawItem вызывается для каждой строки в списке. Номер текущей строки передается в параметре Index, текущая область рисования — в параметре Rect. Почитал бы, все-таки, Справку.


 
Джо ©   (2006-09-15 03:24) [7]

П.С. У "горе программиста" код несколько некорректен.


 
Германн ©   (2006-09-15 03:50) [8]


> Джо ©   (15.09.06 03:23) [6]
>
> > позволяет нарисовать картинку только в первой строке,
> а
> > как нарисовать одну и туже картинку во всех строках, которые
> > я добавил?
>
> OnDrawItem вызывается для каждой строки в списке. Номер
> текущей строки передается в параметре Index, текущая область
> рисования — в параметре Rect. Почитал бы, все-таки, Справку.
>
>

Уж сколько лет твердили миру... А воз и ныне там :-)
Ну как просто, типа "на пальцах" объяснить новичкам принцип "отрисовки" окон в Винде?


 
ГореПрограмист   (2006-09-15 05:44) [9]


> Crazy monkey   (14.09.06 21:24) [4]


procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
begin
 ListBox1.Canvas.FillRect(Rect);
 ImageList1.Draw(ListBox1.Canvas, Rect.Left + 1, Rect.Top, 0, true);
 ListBox1.Canvas.TextOut(Rect.Left + 19, Rect.Top + 1, Text);
end;


 
Crazy monkey   (2006-09-15 12:16) [10]

Спасибо уважаемые!
Особенно ГореПрограмист! Респект.

Конечный код я сделал таким:

ListBox1.Canvas.FillRect(Rect);
Form1.ImageList1.Draw(ListBox1.Canvas, Rect.Left + 1, Rect.Top, 0, true);
ListBox1.Canvas.TextOut(Rect.Left + 19, Rect.Top + 1, ListBox1.Items.Strings[index]);

Еще раз спасибо!



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

Текущий архив: 2006.10.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
1-1155808591
Dexter12345
2006-08-17 13:56
2006.10.01
Экспорт в OpenDocument через Delphi


2-1158065122
p314
2006-09-12 16:45
2006.10.01
Двойное объявление классов


15-1157791053
Konstantin555
2006-09-09 12:37
2006.10.01
Что написать в BAT-файле для запуска соединения с Интернет?


2-1158151015
Endi
2006-09-13 16:36
2006.10.01
Function


2-1157969374
Alex_KV
2006-09-11 14:09
2006.10.01
Про SetLength