10.3.OrangeUI控件使用说明(列表框控件ListBox)(示例3 使用列表项设计面板 动态绑定)

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

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

要达到的效果:

如果列表项的Checked为True,那么CheckBox显示打勾,

如果列表项的Checked为False,那么CheckBox显示不打勾,

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

首先,

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

这在ListBox的OnPrepareDrawItem事件中处理,

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

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

代码如下:

引用uDrawCanvas,uSkinItems这两个单元,

procedure TFrameListBox_UseRunTimeBinding.lbFileListPrepareDrawItem(

Sender: TObject; Canvas: TDrawCanvas;

ItemDesignerPanel: TSkinFMXItemDesignerPanel; Item: TSkinItem;

ItemRect: TRect);

Begin

//Canvas用于绘制列表项,TDrawCanvas在uDrawCanvas中定义

//Item是当前绘制的列表项,TSkinItem在uSkinItems中定义

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

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

end;

 

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

在事件中写如下代码:

procedure TFrameListBox_UseRunTimeBinding.chkItemCheckedClick(Sender: TObject);

begin

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

Self.lbFileList.Properties.InteractiveItem.Checked:=

Not Self.lbFileList.Properties.InteractiveItem.Checked;

end;

 

 

发表评论