说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

为列表框添光彩-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
为列表框添光彩-Delphi资料

为了改变Listbox和Combobox两个控件的单调风格, 我想在它们的每一项前面加上个图标。从表面上看好像不大可能啦。就在走投无路的时候,我忽然发现这两个构件都有一个style属性, 它可以设为lbOwnerDrawFixed,Draw这个单词吸引了我,然后我又从Delphi的在线帮助中找到了一个相关的事件OnDrawItem,在这个事件中写一段代码,就可以在列表框中的每一项前面添加一个小图标啦。

---- 下面是在Listbox 的OnDrawItem事件中添加的代码:

procedure TForm1.ListBox1DrawItem(Control:

TWinControl; Index: Integer;

Rect: TRect; State: TOwnerDrawState);

var

Bitmap: TBitmap;

Offset: Integer;

begin

with (Control as TListBox).Canvas do

begin

FillRect(Rect);

Offset := 2;

Bitmap := TBitmap.create;

Bitmap.LoadFromFile(′d:\temp1\1.bmp′);

//指定图文件是d:\temp1\1.bmp

BrushCopy(Bounds(Rect.Left + 2

Rect.Top

Bitmap.Width

Bitmap.Height)

Bitmap

Bounds(0

0

Bitmap.Width

Bitmap.Height)

clRed);

Offset := Bitmap.width + 6;

TextOut(Rect.Left + Offset

Rect.Top

(Control as TListBox).Items[Index])

end;

end;

---- 进一步,利用OnDrawItem事件的参数Index还可以在不同项前面添加不同的图标。还要告诉你的是, 当用add方法为列表框或下拉框添加项目时, 会自动执行 OnDrawItem事件,这样新添加的项目前面也就有了一个图标。

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘