接下来要讲的在是运行时操作ItemDesignerPanel中的控件来设置列表项的属性,

我们在ItemDesignerPanel中添加一个CheckBox来举例。

要达到的效果:

如果列表项的CheckedTrue,那么CheckBox显示打勾,

如果列表项的CheckedFalse,那么CheckBox显示不打勾,

并且点击CheckBox的时候可以设置列表项的Checked属性,

首先,

根据每个列表项的Checked属性来让CheckBox显示是否勾选,

这在ListBoxOnPrepareDrawItem事件中处理,

OnPrepareDrawItem在每个列表项开始绘制的时候调用,

可以在这个事件里面根据列表项来设置ItemDesignerPanel上子控件的属性:

代码如下:

引用uDrawCanvas,uSkinItems这两个单元,

procedure TFrameListBox_UseRunTimeBinding.lbFileListPrepareDrawItem(

  Sender: TObject; Canvas: TDrawCanvas;

  ItemDesignerPanel: TSkinFMXItemDesignerPanel; Item: TSkinItem;

  ItemRect: TRect);

Begin

  //Canvas用于绘制列表项,TDrawCanvasuDrawCanvas中定义

  //Item是当前绘制的列表项,TSkinItemuSkinItems中定义

  //ItemRect,此列表项的显示矩形

  Self.chkItemChecked.Prop.StaticChecked:=Item.Checked;

end;

 

接着,将CheckBoxHitTest设置成True,让其响应鼠标点击事件,

在事件中写如下代码:

procedure TFrameListBox_UseRunTimeBinding.chkItemCheckedClick(Sender: TObject);

begin

    //InteractiveItem是鼠标当前点击所在列表项。

    Self.lbFileList.Properties.InteractiveItem.Checked:=

      Not Self.lbFileList.Properties.InteractiveItem.Checked;

end;