Delphi字符串列表及应用(二)
发布时间:2006-03-15 16:17:57 来源:友佳学院(整理) 网友评论 0 条3.1.4 往字符串列表中加入对象 Strings属性中贮存字符串外,还可以在Objects
3.1.4.1 操作字符串列表中的对象 Objects
表3.1 TStrings的字符串属性和对象操作属性的方法
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作 字 符 串 对 象
─────────────────────────────── 访 问 Strings属性 Objects
加入项目 Add
项目定位
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Delete,Clear,More操作整个项目,即删除字符串时把相应的对象也删除了。但LoadFromFile,SaveToFile
3.1.4.2 加入对象 Delphi
如果把对象与已存在的字符串联系起来,
With Fruits do Objects[Indexof('apple')]:=AppleBitmap;
另一种方法是调用列表的AddObject
3.2 字符串列表应用
Delphi应用程序经常要用到字符串列表,我们编写的strlist.dpr是应用字符串列表的简单程序。程序运行状态如图3.2
列表框、组合框、Tabset
3.2.1 设置自画风格 Style
表3.2 Style的取值及含义
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Style 含 义 举 例
─────────────────────────────────Fixed 每个项目有相同的高度
Varible 每个项目有不同的高度
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ tab-set与字符串网格的Style
在Strlist程序中,列表框与tab-set
表3.3 列表框与tab-set
━━━━━━━━━━━━━━━━━━━━━━━━━━style
名称
──────────────────────────
ListBox1 lbOwnerDrawVariable
Tabset1 tsOwnerDrawVariable
━━━━━━━━━━━━━━━━━━━━━━━━━━━
3.2.2 把图像加入字符串列表 Tabset1
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
当部件的
在应用程序绘制自画控制之前,
通常由
测量项目事件有两个重要参数: 项目索引号与项目的大小。这个大小是变化的。后继项目的输出位置由前面项目的大小决定。例如,在自画式列表框中,如果应用程序把第一个项目的高度设置成5
ListBox1 MeasureItem(Control: TwinControl;Index: Integer; var Height: Integer);
例程中响应
procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
var Height: Integer);
begin
with ListBox1.Canvas do
begin
Font.Name := ListBox1.Items[Index];
Height := TextHeight('A');
end;
end;
procedure TForm1.TabSetMeasureTab(Sender: TObject; Index: Integer;
var TabWidth: Integer);
var
BitmapWidth: Integer;
begin
BitmapWidth := TBitmap( TabSet1.Tabs.Objects[Index]).Width;
Inc(TabWidth, 2 + BitmapWidth);
end;
在OnMeasureItem事件发生后,Windows激发一个叫OnDrawItem
OnMeasureItem的声明如下:
其中Control是包含项目的部件引用Index 是项目的索引号Rect 是绘制的矩形State 是项目的状态,如选中,得到焦点等。 OnDrawItem
在例程的列表框中,所列项目是屏幕支持的各种字体名称,当列表框发生
procedure TForm1.DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with ListBox1.Canvas do
begin
FillRect(Rect);
Font.Name := ListBox1.Items[Index];
TextOut(Rect.Left, Rect.Top, ListBox1.Items[Index]);
end;
end;
在
Tabset部件中,则把位图与文本同时输出,其代码如下:procedure TForm1.TabSet1DrawTab(Sender: TObject; TabCanvas: TCanvas;
R: TRect; Index: Integer; Selected: Boolean);
var
Bitmap: TBitmap;
begin
Bitmap := TBitmap(TabSet1.Tabs.Objects[Index]);
with TabCanvas do
begin
Draw(R.Left, R.Top + 4, Bitmap);
TextOut(R.Left + 2 + Bitmap.Width,
R.Top + 2, TabSet1.Tabs[Index]);
end;
end;
上节已介绍如何把对象加入字符串列表,例程把位图对象加入
由运行数据决定 csOwnerDrawVarible 高度由ItenHeight属性决定 csOwnerDrawFixed每个能进行自画式控制的部件都有一个叫
对于列表框和组合框,也有自画式风格选项,表
自画式控制有一个共同特点:它们都包含有项目列表,缺省情况下这些列表就是字符串列表,
通常,创建自画式控制有以下三个步骤:
对于字符串的每一种操作方法,列表中的对象均有相应的方法。例如,应用程序可利用对象的索引来访问对象。与字符串不同的是,不能省略
表
字符串列表除了能在
在应用程序使用列表中的字符串与列表中是否有对象没有多大关系。除非程序特地访问对象,否则
有些字符串列表忽略加入的对象。如
虽然程序可分配任何类型的对象到列表中,但最常用的是在自画式控制中把位图与字符串联系起来,注意位图与字符串成对使用。
OnDrawItem- 推荐阅讯
- 数据库系统 防止黑客入侵之技术综述
- 全面剖析Delphi 2006新增特性
- Oracle数据库中分区表的操作方法
- 用鼠标模拟视线跟踪技术
- 开发Delphi对象式数据管理功能(九)
- 5天玩转NoahWeb逻辑层--第3天
- Delphi.NET多层应用系统开发技术研讨
- VS.NET2005 Beta2初体验之感受2005
- Delphi快速入门(二)
- Visual FoxPro9.0中设计与使用查询
- 阅读排行
- 1.全面剖析Delphi 2006新增特性
- 2.用Delphi开发视频聊天软件
- 3.用Win32 API枚举应用程序窗口和进程
- 4.软件的架构与设计模式之什么是架构
- 5.软件的架构与设计模式之模式的种类
- 6.Delphi中为TreeView添加单选和复选框
- 7.用Delphi实现24位真彩色图标
- 8.VS.NET2005 Beta2初体验之感受2005
- 9.程序界面设计模式慨述
- 10.没落的奇迹 谁会买下Delphi?
- 专题教程
- Windows Server-Windows Server文档-Windows Server新闻-Windows Ser PostgreSQL-PostgreSQL文档-PostgreSQL新闻-PostgreSQL专家
- WebLogic-WebLogic文档-WebLogic新闻-WebLogic专家 FreeBSD-FreeBSD文档-FreeBSD新闻-FreeBSD专家
- Linux-内核 GUI KDE Gnome DNS FTP 安全 安装-Linux专区 Windows-AD IIS ServerCore 虚拟化 安全 HPC-Windows专区
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
