Чи можна в Listbox вставити картинку?
Є записи і в залежності від умов хотілося б додати до кожної свою картинку. Чи можна зробити таке в Listbox? Дуже потрібен код.
Заздалегідь дякую!
в довідці по OnDrawItem є приклад
procedure TForm1.ListBox1DrawItem (Control: TWinControl; Index: Integer;
# XA0; Rect: TRect; State: TOwnerDrawState);
begin
# XA0; ListBox1.Canvas.FillRect (Rect);
# XA0; ImageList1.Draw (ListBox1.Canvas, 1, 0, 0, true);
# XA0; ListBox1.Canvas.TextOut (Rect.Left + 19, Rect.Top + 1, ListBox1.Items.Strings [0]);
end;
procedure TForm1.FormCreate (Sender: TObject);
begin
# XA0; ListBox1.Style: = lbOwnerDrawFixed;
end;
> Crazy monkey # XA0; (14.09.06 16:15)
> І в залежності від умов
Умов досить багато, але мені треба було знати головним чином як малювати в listbox.
Спасибі за відповідь!
А чи не підкажете як бути? Як заповнити всі записи однієї картинкою? Ось цей код:
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;
дозволяє намалювати картинку тільки в першому рядку, а як намалювати одну й ту ж саму картинку в усіх рядках, які я додав?
Він малює не одну, а багато, але в одному місці. Для завдання координат треба використовувати Rect, як робиш це в разі виведення тексту
> Дозволяє намалювати картинку тільки в першому рядку, а
> Як намалювати одну й ту ж саму картинку в усіх рядках, які
> Я додав?
OnDrawItem викликається для кожного рядка в списку. Номер поточного рядка передається в параметрі Index, поточна область малювання - в параметрі Rect. Почитав би, все-таки, Довідку.
П.С. У "горе програміста" код кілька некоректний.
> Crazy monkey # XA0; (14.09.06 21:24) [4]
procedure TForm1.ListBox1DrawItem (Control: TWinControl; Index: Integer;
# XA0; Rect: TRect; State: TOwnerDrawState);
begin
# XA0; ListBox1.Canvas.FillRect (Rect);
# XA0; ImageList1.Draw (ListBox1.Canvas, Rect.Left + 1, Rect.Top. 0, true);
# XA0; ListBox1.Canvas.TextOut (Rect.Left + 19, Rect.Top + 1, Text);
end;
Дякую шановні!
Особливо ГореПрограміст! Респект.
Кінцевий код я зробив таким:
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]);