Главная страница
    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.016 c
3-1154357051
Anton22
2006-07-31 18:44
2006.10.01
mdb доступная в сети


15-1157982084
Rule
2006-09-11 17:41
2006.10.01
понедельничная задачка, для поступающих в первый класс


2-1157630489
Ruslan D
2006-09-07 16:01
2006.10.01
назначение события для компонент


2-1157795695
Kalt
2006-09-09 13:54
2006.10.01
Путь к выделеному файлу или автоматическая загрузка текста.


2-1158225782
Монг
2006-09-14 13:23
2006.10.01
messagedig





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