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

为列表框添光彩-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事件,这样新添加的项目前面也就有了一个图标。

【深入浅出Koa】常用工具分享 帮你降低编程难度 Relay: 全新的React数据获取框架 探索游戏开发面临的技术挑战——MDCC 2015游戏开发专场议程曝光 【SDCC讲师专访】易开发创始人潘俊勇:这些年我遇到的那些坑 【CTO讲堂】OpenStack行业实践和发展趋势探讨 cmos进不去是怎么回事啊?(100分) matlab6.5与vc.net不能结合???? 帮忙翻译一句话。 关于窗口的消息。。 help! VC中如何使窗口始终在最前方? 一个可能是javascript的问题? 以色列光学cpu,看看我们的龙心,我们落后多少 用那一款工具做GIF,比较方便? 怎么用LotusScript获得列表框的值? 求做100吨水泥罐的制作图纸牛腿立式100T水泥罐 如图,施工工地的水平地面上,有三根半径都是1米的水 烤纸杯蛋糕,表面烤焦了,下面还没熟,是怎么一回事呢 烤蛋糕时一直烤焦,为什么?怎样才能不烤焦? 研究重力与质量的关系 实验器材有哪些? 作者用哥白尼 伽利略 牛顿的事列,证明了什么道理 5钟营养素含量高的代表性食物 定积分换元积分法的一个问题图上圈的两个点为什么是2 用定积分换元积分法 怎么求? 网上查询服务试点扩容 信用上网隐私如冀中星行政起诉东莞政府案立案漫步小樽:静谧恬美的浪漫之旅(组图)澳大利亚珠海联谊总会在悉尼正式成立有氧运动有助延年益寿杭州市区天气预报要不是4楼住户亲眼所见“你租房 我补贴”活动结束 包租婆喊油绿如玉 糯韧绵软 清香扑鼻浙江拟立防震减灾法不能忽视但也不必恐异界之华山弟子天医星宗修真者在异世天心怒最漫长的五年四面峰旅游重庆动物园旅游三峡广场旅游黄花城长城旅游卧龙峡旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘