БОЛЬШОЙ FAQ ПО DELPHI



Как поместить графический элемент в TListBox

Сначала создайте bmp-файл, который вы будете помещать около каждого элемента списка, в примере это 'c:\file.bmp'. Для создания файла можете воспользоваться специальной графической утилитой ImageEditor, которая входит в пакет Delphi. Желательно, чтобы размер файлы был 16х16. После этого вынесите на форму компонент TListBox. Его свойство Style установите в lbOwnerDrawVariable - это позволит нам прорисовывать каждый элемент списка самостоятельно.

Далее объявляем переменную:


 var
   Bit: TBitmap;
 

После этого задаём обработчику события OnDrawItem следующий вид:


 procedure TForm1.ListBox1DrawItem(Control: TWinControl; index: Integer;
 Rect: TRect; State: TOwnerDrawState);
 var
   cc: TCanvas;
 begin
   cc:=(Control as TListBox).Canvas;
   cc.FillRect(rect);
   cc.Draw(Rect.Left+Rect.Right-16,Rect.Top,Bit);
   cc.TextOut(Rect.Left,Rect.Top,ListBox1.Items[index]);
 end;
 

а обработчику события OnMeasureItem такой:


 procedure TForm1.ListBox1MeasureItem(Control: TWinControl;
 index: Integer; var Height: Integer);
 begin
   Height := 16;
 end;
 

По созданию окна создаёт Bitmap и загружаем в него данные из файла:


 procedure TForm1.FormCreate(Sender: TObject);
 begin
   Bit := TBitmap.Create;
   Bit.LoadFromFile('c:\file.bmp');
 end;
 

По уничтожению окна - уничтожаем Bitmap


 procedure TForm1.FormDestroy(Sender: TObject);
 begin
   Bit.Destroy;
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ