Delphi中ListBox控件的六种特效

本文介绍了如何在Delphi中通过设置TListBox的Style属性为lbOwnerDrawVariable来实现六种特效:1) 图标及热链接效果;2) 横向滚动条效果;3) 图标、背景图片及透明文字效果;4) 文字对齐方式效果;5) 照片列表框效果;6) 缩略图浏览文件夹下图片效果。通过TBitmap, TIcon, TImage, TImageList及Windows API函数,实现了TListBox的外观定制。" 135232014,11199248,Qt Creator交互界面:按钮信号与槽的实战应用,"['Qt', 'GUI开发', 'C++', '编程']
摘要由CSDN通过智能技术生成
一、 基础知识

  涉及TListBox自定义重绘的属性和事件:

  属性:

   Style: 取值为lbStandard(标准风格),lbOwnerDrawFixed(所有者固定绘制风格),lbOwnerDrawVariable(所有者可变绘制风格)

  说明:

   1. 当Style = lbStandard时,使用控件默认的绘制风格。

   2. 当Style = lbOwnerDrawFixed时,用户只能在控件默认大小的区域绘图。

   3. 当Style = lbOwnerDrawVariable时,用户可改变控件默认的绘图区域大小并决定如何绘图。

  事件:

   OnMeasureItem:当Style = lbOwnerDrawVariable时计算TListBox中某项的高度时调用。

   OnDrawItem :当Style = lbOwnerDrawVariable时由用户例程确定如何绘制TlistItem。

  由此,可以看出,要实现定制界面风格的TListBox,首先,需要设置TlistBox的Style 属性为lbOwnerDrawVariable,其次,需要写自定义的重绘事件。
二、 特殊效果的实现

  在窗体(Form1)上放置5个ListBox,名称分别为 ListBox1……ListBox5,将所有ListBox的Style属性设置为lbOwnerDrawVariable;在Form1上添加两个 TImageList控件,命名为ImageList1,ImageList2;在ImageList1中装入两个16X16大小的图标;添加两个 TButton控件,命名为Button1,Button2;再添加一个TImage控件,命名为Image1。其它操作,见下。

  1. 具有图标及热链接效果的列表框

  在ListBox1的Items属性中添加几个字符串,并在ListBox1的OnDrawItem事件中编写代码如下:


procedure TForm1.ListBox2DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
AIcon, BIcon: TIcon;
begin
try
file://从上述ImageList1中装入两个图标
AIcon := TIcon.Create;
BIcon := TIcon.Create;
file://装入图标到AIcon, BIcon
ImageList1.GetIcon(0, AIcon);
ImageList1.GetIcon(1, BIcon);
file://填充绘图区
ListBox1.Canvas.FillRect(Rect);
file://判断ListBox1中的当前重绘项是否被选中,根据状态装入不同的图标
if odSelected in State then
ListBox1.Canvas.Draw
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值