往字符串列表中加入對象
字符串列表除了能在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的取值
From:http://tw.wingwit.com/Article/program/Delphi/201311/24766.html