Шаг 2
Теперь заполните какими-нибудь рисунками imagelist. Важно чтобы число
рисунков было не меньше чем будет записей в вашем listbox.
Шаг 3
Создайте обработчик события нажатия кнопки button и поместите в него
код заполнения ListBox. Вы должны получить примерно такой код:
procedure TForm1.ButtonClick(Sender: TObject);
begin
listbox.Clear;
with listbox.items do begin
Append('Красный');
Append('Синий');
Append('Голубой');
Append('Зеленый');
end
end;
Шаг 4
Установите для image свойство visible в false. Width и Height для image
установите 30 на 30. Шаг 5
(основной) Установите свойство style для listbox в lbOwnerDrawFixed.
Создайте обработчик DrawItem для ListBox его код должен быть примерно
таким:
procedure TForm1.ListBoxDrawItem(Control: TWinControl; Index:
Integer;
Rect: TRect; State: TOwnerDrawState);
var
Offset : Integer;
BMPRect: TRect;
begin
with (Control As Tlistbox).Canvas do begin
FillRect(Rect);
Offset := 0;
//Создаем регион для рисунка
BMPRect := Bounds(Rect.Left+2, Rect.Top+2,
(Rect.Bottom-Rect.Top-2)*2, Rect.Bottom-Rect.Top-2);
//Читаем картинку из контейнера
imagelist1.draw(image.canvas,index);
//Рисуем картинку
StretchDraw(BMPRect, image.picture.Bitmap);
//Вычисляем смещение надписи
Offset := (Rect.Bottom-Rect.Top+1)*2;
//Выводим надпись
TextOut(Rect.Left+Offset, Rect.Top, ListBox.Items[Index]);
end;
end;
Теперь можно запустить то что получилось
и посмотреть на результат. Дальнейшая модификация этого примера дело
читающего...