Delphi World - Как поместить графический элемент в TListBox
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Как поместить графический элемент в 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;

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования