Each ComboBox item with own icon? No problem. Using OwnerDraw style, we can do almost anything.
Place ComboBox and ImageList on form. Fill ImageList with icons for
ComboBox items and set Style of ComboBox to csOwnerDrawFixed or
csOwnerDrawVariable. And last thing is the OnDrawItem event of ComboBox:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ImgList, StdCtrls; type TForm1 = class(TForm) ComboBox1: TComboBox; ImageList1: TImageList; procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); var ComboBox: TComboBox; bitmap: TBitmap; begin ComboBox := (Control as TComboBox); Bitmap := TBitmap.Create; try ImageList1.GetBitmap(Index, Bitmap); with ComboBox.Canvas do begin FillRect(Rect); if Bitmap.Handle <> 0 then Draw(Rect.Left + 2, Rect.Top, Bitmap); Rect := Bounds(Rect.Left + ComboBox.ItemHeight + 2, Rect.Top,
Rect.Right - Rect.Left, Rect.Bottom - Rect.Top); DrawText(handle, PChar(ComboBox.Items[Index]),
length(ComboBox.Items[index]), Rect, DT_VCENTER+DT_SINGLELINE); end; finally Bitmap.Free; end; end; end.
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου