AdvCardList、DBAdvCardList的使用
AdvCardList、DBAdvCardList主要是以卡片的形式來自動顯示資料,自動處理滾動,特别是DBAdvCardList能夠将資料庫記錄自動用卡片的形式顯示出來,而且能夠定制每個字段的顯示,支援boolean、integer、string、date、time、datetime、float、image類型。下面主要介紹下如何使用DBAdvCardList,AdvCardList類似。
1. 重點屬性
如上圖所示,為DBAdvCardList控件的主要模樣。
AdvCardList主要設定的屬性是CardTemplate,CardTemplate主要是設定AdvCardList展示資料庫記錄的哪些字段。CardTemplate下面的Items屬性就是對應到每個字段的具體項目,可以一個一個添加,點選Items彈出如下界面:

裡面已經添加了一個項目,點選此項目,觀察它的Object Inspector:
裡面有很多屬性可以定制,如Caption、Item的顔色等等,大家可以逐一摸索,重要的屬性是DataType和FieldName,DataType是此條目資料類型,決定了如果将資料庫記錄的字段資料映射過來;FieldName就是此條目要調取那個字段。定義了這兩個屬性就可以取出資料了。
2. 表現特征
AdvCardList可以靈活的設定自己的顯示特征,可以獨立設定4種顯示形式:正常表現、滑鼠移動到上面時的表現(Hover)、被選中時的表現(Selected)、正在編輯時的表現(Editing)。每種表現都可以通過對應的Appearance屬性設定:CardNormalAppearance、CardHoverAppearance、CardSelectedAppearance、CardEditingAppearance。
更簡單一些,AdvCardList也支援類似于換膚的特征,可以集中設定其表現特征,這就需要TAdvCardListStyler元件,TAdvCardListStyler元件内置了較多的表現特征(通過Style屬性),如clsXPBlue、clsOffice2003等。隻需要設定TAdvCardListStyler元件的CardList屬性就可以整體改變對應CardList的表現特征,大家可以設定不同的Style進行實驗。
3. 通路、改變每個卡片資料
如果要通路其中的某個卡片可以用類似于:
DBAdvCardList2.Cards[0].ItemList[0].AsString := "hello world";
如果想定制或在加載的時候修改某個字段的内容,可以在OnCardUpdata事件中進行處理。比如資料庫記錄中有個字段是“state”,整型,表示某種狀态,如果用ADVCardList顯示的時候用不同的圖檔表示不同的狀态而不是顯示代表狀态的數字,如果做呢?我們可以在AdvCardList的Template中加入一個item,設定此Item的DataType為idtImage,假設此Item的Index為0,可以編寫OnCardUpdata事件如下:
procedure TForm1.DBAdvCardList1CardUpdate(Sender: TObject; Card: TAdvCard);
begin
if Table1.FiledByName('State').asinteger = 0 then
Card.ItemList[0].Picture.Assign(img1.Picture)
else if Table1.FiledByName('State').asinteger = 1 then
begin
Card.ItemList[0].Picture.Assign(img2.Picture)