Информационный портал Media Systems & Bear Corp.


Портал :: Программирование под Дельфи

Как вставить растровое изображение в ListBox.

 
Кажется ужасно сложная задача.. Но как известно глаза боятся а руки делают.. Приступим..

Шаг 1
Откройте новый проэкт в Delphi.
На пустой форме разместите компоненты:
listbox:TListbox;
imagelist:TImageList;
image:TImage;
button:TButton;

Шаг 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;

Теперь можно запустить то что получилось и посмотреть на результат. Дальнейшая модификация этого примера дело читающего...


©Media Studio, 2001.

 
     
  Гостевая книга . Связь с разработчиками: Bear Corporation, Media Studio.  
  Это место для вашей рекламы  

Дизайн: Bear Corner, Inc. & Media Sudio.
Последнее обновление: 26.03.2001.

Rambler's Top100 Rambler's Top100
Hosted by uCoz