Форум: "Начинающим";
Текущий архив: 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