Рисование картинок в TListBoxDelphi , Компоненты и Классы , СпискиРисование картинок в TListBox
Оформил: DeeCo { Create a TImage on your Formular and assign a bitmap } { Create a TListbox on your Formular } type TForm1 = class(TForm) ListBox1: TListBox; Image1: TImage; procedure FormCreate(Sender: TObject); procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); procedure ListBox1MeasureItem(Control: TWinControl; Index: Integer; var Height: Integer); private {...} public {...} end; procedure TForm1.FormCreate(Sender: TObject); begin with ListBox1.Items do begin Clear; ListBox1.Style := lbOwnerDrawVariable; AddObject('Bitmap1', Image1.Picture.Bitmap); AddObject('Bitmap2', Image2.Picture.Bitmap); AddObject('Bitmap3', Image3.Picture.Bitmap); end; end; procedure CenterText(Cnv: TCanvas; Rect: TRect; S: string); var X, Y: Integer; begin X := (Rect.Right + Rect.Left - Cnv.TextWidth(S)) div 2; Y := (Rect.Bottom + Rect.Top - Cnv.TextHeight(S)) div 2; Cnv.TextOut(X, Y, S); end; procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var Bitmap: TBitmap; begin with ListBox1 do begin Canvas.FillRect(Rect); if Items.Objects[Index] <> nil then begin Bitmap := Items.Objects[Index] as TBitmap; Canvas.BrushCopy(Bounds(Rect.Left + 2, Rect.Top + 2, Bitmap.Width, Bitmap.Height), Bitmap, Bounds(0, 0, Bitmap.Width, Bitmap.Height), Bitmap.Canvas.Pixels[0, Bitmap.Height - 1]); end; Rect.Left := Rect.Left + Bitmap.Width + 4; Rect.Bottom := Rect.Top + Bitmap.Height + 4; CenterText(Canvas, Rect, Items.Strings[Index]); end; end; procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer; var Height: Integer); begin if Index = 0 then Height := Image1.Height + 4; end; Перевод контента на русский язык: Код предназначен для рисования изображений в контроле Процедура В процедуре В процедуре Код демонстрирует, как рисовать изображения и нарисованные элементы в списке. Владельцем-нарисованный список предоставляет больше гибкости для настройки внешнего вида его элементов по сравнению с стандартным списком. В модифицированном коде я добавил Также я изменил расчет В статье описывается пример создания списка с рисунками в компоненте TListBox Delphi, где каждый элемент списка содержит изображение и текст. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |