手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

Delphi字符串列表及应用(二)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
Delphi可以把字符串列表与某一对象相联系,这就使得应用程序能用对象来绘制项目。

  通常,创建自画式控制有以下三个步骤:

  1. 设置自画风格;

  2. 把图像对象加入字符串列表中;

  3. 绘制自画项目。 

3.2.1 设置自画风格 

  每个能进行自画式控制的部件都有一个叫Style的属性,Style决定部件是以缺省方式还是以自画方式绘制项目。

  对于列表框和组合框,也有自画式风格选项,表3.2列出了Style的取值及含义。 

3.2 Style的取值及含义

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 

 Style 含  义         举   例

─────────────────────────────────

 

 Fixed 每个项目有相同的高度    1bOwnerDrawFixed

 

        高度由ItenHeight属性决定   csOwnerDrawFixed

Varible 每个项目有不同的高度     1bOwnweDrawVarible

 

        由运行数据决定   csOwnerDrawVarible

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

  tab-set与字符串网格的Style属性通常是Varible.

Strlist程序中,列表框与tab-set取值如表3.3: 

3.3 列表框与tab-set的取值

━━━━━━━━━━━━━━━━━━━━━━━━━━

    名称         style

──────────────────────────

ListBox1 lbOwnerDrawVariable

Tabset1 tsOwnerDrawVariable

━━━━━━━━━━━━━━━━━━━━━━━━━━━

3.2.2 把图像加入字符串列表 

  上节已介绍如何把对象加入字符串列表,例程把位图对象加入Tabset1Tabs中: 

procedure TForm1.FormCreate(Sender: TObject);

var

Bitmap: TBitMap;

begin

Listbox1.Items := Screen.Fonts;

Bitmap := TBitmap.Create;

Bitmap.LoadFromFile('PHONE.BMP');

Tabset1.Tabs.AddObject('phone',Bitmap);

Bitmap := TBitmap.Create;

Bitmap.LoadFromFile('PRINTER.BMP');

Tabset1.Tabs.AddObject('printer ',Bitmap);

end; 

3.2.3 绘制自画项目 

  当部件的Style属性是自画式时,Windows不再绘制部件,相反Windows为每个可视项目产生事件,而应用程序必须在事件中绘制项目。

  在应用程序绘制自画控制之前,Windows产生测量项目事件,这个事件告诉程序项目显示的位置

  通常由Windows决定项目显示的大小,但应用程序可以处理这个事件并自己选择显示区域。例如,程序要用位图代替文本显示,则需要把区域设置成位图的大小。测量项目事件的名称随部件的名称不同而不同,对于列表框和组合框,该事件叫OnMeasureItem。对于Tabset,该事件叫OnMeasureTab

  测量项目事件有两个重要参数: 项目索引号与项目的大小。这个大小是变化的。后继项目的输出位置由前面项目的大小决定。例如,在自画式列表框中,如果应用程序把第一个项目的高度设置成5个象素点,则第二个项目在第六个象素点开始输出。列表框和组合框中,应用程序只能设置成项目的高度,而项目的宽度就是部件的高度。在Tabset中,tabs的宽度是可变的,而高度则是固定的。自画式网格允许应用程序改变网格单元的高度和宽度。

  OnMeasureItem的声明如下:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!