Вывод картинок в TComboBoxDelphi , Компоненты и Классы , СпискиВывод картинок в TComboBox
Оформил: DeeCo // This code works also with a TListBox var Bitmap1, Bitmap2, Bitmap3, Bitmap4: TBitmap; procedure TForm1.FormCreate(Sender: TObject); begin ComboBox1.Style := csOwnerDrawVariable; //Set height of one item ComboBox1.ItemHeight := 20; //load all bitmaps Bitmap1 := TBitmap.Create; Bitmap1.LoadFromFile('chem16.bmp'); Bitmap2 := TBitmap.Create; Bitmap2.LoadFromFile('chip16.bmp'); Bitmap3 := TBitmap.Create; Bitmap3.LoadFromFile('factry16.bmp'); Bitmap4 := TBitmap.Create; Bitmap4.LoadFromFile('skylin16.bmp'); //assign bitmaps with item objects - caption of the items: Bitmap 1 - Bitmap 4 ComboBox1.Items.AddObject('Bitmap 1', Bitmap1); ComboBox1.Items.AddObject('Bitmap 2', Bitmap2); ComboBox1.Items.AddObject('Bitmap 3', Bitmap3); ComboBox1.Items.AddObject('Bitmap 4', Bitmap4); end; procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var Bitmap: TBitmap; Offset: Integer; begin offset := 0; with ComboBox1.Canvas do begin FillRect(Rect); Bitmap := TBitmap(ComboBox1.Items.Objects[Index]); if Bitmap <> nil then begin //copy bitmap to combobox coordinate BrushCopy(Bounds(Rect.Left + 2, Rect.Top + 2, Bitmap.Width, Bitmap.Height), Bitmap, Bounds(0, 0, Bitmap.Width, Bitmap.Height), clred); Offset := Bitmap.Width + 8; end; //Set a caption to each item TextOut(Rect.Left + Offset, Rect.Top, Combobox1.Items[Index]); end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin //free all bitmap objects bitmap1.Free; bitmap2.Free; bitmap3.Free; bitmap4.Free; end; Это код на Delphi, который отображает изображения (битмапы) в TComboBox. Код использует стиль Вот разбивка кода:
Рисование изображений и надписей происходит в обработчике события
Наконец, в обработчике события
Обратите внимание, что этот код предполагает, что файлы битмапов располагаются в том же каталоге, что и исполняемый файл, и имеют те же имена, которые указаны в коде (например, 'chem16.bmp', 'chip16.bmp' и т.д.). В целом, это хороший пример использования стиля владельца для отображения изображений в TComboBox. В статье описана реализация вывода картинок в TComboBox Delphi, которая позволяет отображать изображения наряду с текстовыми значениями в списке комбобокса. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |