Tuesday, February 2, 2010

ComboBox dengan icon

ComboBox dengan icon
ComboBox Item dengan Icon? Tidak Masalah. Menggunakan OwnerDraw, kita bisa membuat semua menjadi mungkin.
Buat ComboBox dan ImageList dalam sebuah Form. Isi ImageList dengan icon untuk ComboBox item dan atur Style of ComboBox menjadi csOwnerDrawFixed atau csOwnerDrawVariable. Dan yang terakhir ketikkan event OnDrawItem pada 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.

Selamat Mencoba !!!

0 comments: