![]() |
![]() ![]() ![]() ![]() |
|
Вывод картинок в 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 прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||