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

Вниз

Можно ли в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.013 c
15-1157662081
Offtoper
2006-09-08 00:48
2006.10.01
Просто оффтоп


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


15-1157900925
новоалексан
2006-09-10 19:08
2006.10.01
Как создать true type шрифт?


1-1155712822
Dell3r
2006-08-16 11:20
2006.10.01
Доступ к закладкам в .rtf


3-1154322875
yaral
2006-07-31 09:14
2006.10.01
LoadFromStream FIB Plus





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский