字符串列表及应用(二)

来源:互联网 时间:1970-01-01

 

3.1.4 往字符串列表中加入对象

字符串列表除了能在Strings属性中贮存字符串外,还可以在Objects属性中贮存对象。与Stings一样,Objects也是可以索引的,它是对象的索引。

在应用程序使用列表中的字符串与列表中是否有对象没有多大关系。除非程序特地访问对象,否则Objects中的内容不变,Delphi只是保存了这些信息,应用程序在必要时对其进行操作。

有些字符串列表忽略加入的对象。如TMemo部件中代表行的列表对加入其中的对象不保存。还有一些字符串列表,把对象与字符串联系起来,如TNotebook部件的Pages属性,它同时保存着页的名字和代表页的对象。如果应用程序往Pages中加入或删除字符串,Delphi自动的加入或删除与之相应的对象。

虽然程序可分配任何类型的对象到列表中,但最常用的是在自画式控制中把位图与字符串联系起来,注意位图与字符串成对使用。

Delphi在释放对象的内存空间时并不破坏与之相应的字符串。

3.1.4.1 操作字符串列表中的对象

对于字符串的每一种操作方法,列表中的对象均有相应的方法。例如,应用程序可利用对象的索引来访问对象。与字符串不同的是,不能省略Objects,因为Strings才是列表的缺省属性。

表3.1中总结了字符串对字符串和对象操作的方法。

表3.1 TStrings的字符串属性和对象操作属性的方法

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

                操 作 字 符 串 对 象

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

访 问 Strings属性                    Objects属性

加入项目 Add 方法 AddObjects方法

插入项目 Insert方法 InsertObjects方法

           项目定位 Indexof方法                  IndexofObject方法

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

Delete,Clear,More操作整个项目,即删除字符串时把相应的对象也删除了。但LoadFromFile,SaveToFile方法只对字符串进行操作。

3.1.4.2 加入对象

如果把对象与已存在的字符串联系起来,Delphi将分配给该对象同样的索引号。例如,一个叫Fruits的列表中有字符串('apple'),程序可将名为AppleBitmap的位图与apple字符相联系。

With Fruits do Objects[Indexof('apple')]:=AppleBitmap;

另一种方法是调用列表的AddObject方法,AddObject有两个参数:字符串和对象,如下:

Fruits AddObject('Apple',AppleBitmap);

3.2 字符串列表应用

          Delphi应用程序经常要用到字符串列表,我们编写的strlist. dpr是应用字符串列表的简单程序。程序运行状态如图3.2所示。列表框列出了屏幕支持的各种字体名称,并且以名称所代表的字体显示在列表中;Tabs


Top