往字符串列表中加入对象
字符串列表除了能在Strings属性中贮存字符串外还可以在Objects属性中贮存对象与Stings一样Objects也是可以索引的它是对象的索引
在应用程序使用列表中的字符串与列表中是否有对象没有多大关系除非程序特地访问对象否则Objects中的内容不变Delphi只是保存了这些信息应用程序在必要时对其进行操作
有些字符串列表忽略加入的对象如TMemo部件中代表行的列表对加入其中的对象不保存还有一些字符串列表把对象与字符串联系起来如TNotebook部件的Pages属性它同时保存着页的名字和代表页的对象如果应用程序往Pages中加入或删除字符串Delphi自动的加入或删除与之相应的对象
虽然程序可分配任何类型的对象到列表中但最常用的是在自画式控制中把位图与字符串联系起来注意位图与字符串成对使用
Delphi在释放对象的内存空间时并不破坏与之相应的字符串
操作字符串列表中的对象
对于字符串的每一种操作方法列表中的对象均有相应的方法例如应用程序可利用对象的索引来访问对象与字符串不同的是不能省略Objects因为Strings才是列表的缺省属性
表中总结了字符串对字符串和对象操作的方法
表 TStrings的字符串属性和对象操作属性的方法
DeleteClearMore操作整个项目即删除字符串时把相应的对象也删除了但LoadFromFileSaveToFile方法只对字符串进行操作
加入对象
如果把对象与已存在的字符串联系起来Delphi将分配给该对象同样的索引号例如一个叫Fruits的列表中有字符串(apple)程序可将名为AppleBitmap的位图与apple字符相联系
With Fruits do Objects[Indexof(apple)]:=AppleBitmap;
另一种方法是调用列表的AddObject方法AddObject有两个参数字符串和对象如下
Fruits AddObject(AppleAppleBitmap);
字符串列表应用
Delphi应用程序经常要用到字符串列表我们编写的strlist dpr是应用字符串列表的简单程序程序运行状态如图所示列表框列出了屏幕支持的各种字体名称并且以名称所代表的字体显示在列表中Tabs的标签不只以字符串来表示而且附有位图这就是所谓的自画式控制下面介绍字符串列表在自画式控制中的应用
列表框组合框Tabset部件中有一个叫自画(Ownerdraw)的风格它能替代Windows的文本输出部件的自画式控制在运行状态对每个项目进行重新绘制最常用的是用图像代替文本输出
自画式控制有一个共同特点它们都包含有项目列表缺省情况下这些列表就是字符串列表Windows把它们当成文本显示Delphi可以把字符串列表与某一对象相联系这就使得应用程序能用对象来绘制项目
通常创建自画式控制有以下三个步骤
设置自画风格
把图像对象加入字符串列表中
绘制自画项目
设置自画风格
每个能进行自画式控制的部件都有一个叫Style的属性Style决定部件是以缺省方式还是以自画方式绘制项目
对于列表框和组合框也有自画式风格选项表列出了Style的取值及含义
表 Style的取值及含义
tabset与字符串网格的Style属性通常是Varible
在Strlist程序中列表框与tabset取值如表
表 列表框与tabset的取值