天天看点

AdvCardList、DBAdvCardList的使用

AdvCardList、DBAdvCardList的使用

AdvCardList、DBAdvCardList主要是以卡片的形式来自动显示数据,自动处理滚动,特别是DBAdvCardList能够将数据库记录自动用卡片的形式显示出来,而且能够定制每个字段的显示,支持boolean、integer、string、date、time、datetime、float、image类型。下面主要介绍下如何使用DBAdvCardList,AdvCardList类似。

1. 重点属性

如上图所示,为DBAdvCardList控件的主要模样。

AdvCardList主要设置的属性是CardTemplate,CardTemplate主要是设置AdvCardList展示数据库记录的哪些字段。CardTemplate下面的Items属性就是对应到每个字段的具体项目,可以一个一个添加,点击Items弹出如下界面:

AdvCardList、DBAdvCardList的使用

里面已经添加了一个项目,点击此项目,观察它的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进行实验。

AdvCardList、DBAdvCardList的使用

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)