一步一步学习使用LiveBindings(3) 绑定到ListView,用TProtoTypeBindSource创建样例数据
一步一步学习使用LiveBindings(3) 绑定到ListView,用TProtoTypeBindSource创建样例数据
百度 相关新闻:FireMonkey(简称FMX)是一个跨平台的应用程序设计框架,这个框架其实不再将开发的重心放在PC端,毕竟Windows PC上还有强大的VCL框架。FMX重心还是在移动端多一些,而移动端的小屏设备使用Grid的场景很少,屏小数据多,体验应该并不佳,使用ListView这种列表式控件就非常常见。
为了测试ListView的外观,常常需要测试数据,好在LiveBidings有一个原型绑定源,可以轻松拿捏测试数据。
跟着下面的步骤开始吧,先开启你的Delphi 12.3。
1. 单击主菜单中的 File > New > Multi-Device Application - Delphi > Blank Application ,创建一个新的多设备应用程序。
建议立即单击工具栏上的Save All按钮,将单元文件保存为uMainForm.pas,将项目保存为LiveBinding_BindToListView.dproj。
你的项目结构应该像这样:
2. 从工具面板,拖一个TListView控件,一个TPrototypeBindSource控件到主窗口。
在主窗口上选中ListView1控件,然后在属性面板上指定其Align属性为Client,设置其SearchVisible属性为True,窗体看起来像下面这样:
除了上述设置,还需设置ListView1控件的ItemAppearance.ItemAppearance属性为ImageListItemRightButton,这样ListView控件将会呈现为一个图片,右侧一个按钮,中间是ListView项的文本。
注意: 当设置不同的ItemAppearance属性后,ListView的可绑定的属性也会相应的发生一些变化。
2. 右键单击主窗口的PrototypeBindSource1控件,选择“Fields Editor”菜单项,这将打开一个字段编辑窗口,在这里可以像设置一个内存表一样设置字段。
在Fields Editor的工具栏面板上单击“Add”按钮,将弹出一个包含数据的字段列表,按住Ctrl键,分别选择ColorNames,Bitmaps和Currency字段数据,单击“OK”按钮完成原型数据的添加。
3. 准备好了控件和数据,接下来在任意位置右击鼠标,从弹出的菜单中选择“Bind Visually”菜单项,进入到LiveBindings Designer设计器。
- 从PrototypeBindSource1中选择ColorsName1到ListView1的Item.Text。
- 从PrototypeBindSource1中选择Bitmap1到ListView1的Item.Bitmap。
- 从PrototypeBindSource1中选择CurrencyField1到ListView1的Item.ButtonText。
做完这几步,在主窗体上,毫不意外一个TBindingList控件被添加来了。ListView已经可以预览到测试数据,并且可以看到ListView的外观呈现效果。
4. 最后给ListView1添加一个单击事件,在主窗体中选中ListView1控件,然后进入到属性面板,切换到Events标签页,找到OnButtonClick右侧的文本框双击一下,Delphi会切换到代码视图,一个单击事件的骨架代码已经生成好。
注意:在生成代码骨架后,建议在代码中添加一行注释,否则在下一次保存时,这个骨架代码会被IDE给收回去。
请在代码编辑器中输入如下的代码:
procedure TForm1.ListView1ButtonClick(const Sender: TObject;
const AItem: TListItem; const AObject: TListItemSimpleControl);
begin
const LItem = AItem as TListViewItem; //得到当前的单击项。
//显示当前选中的Item信息。
ShowMessage(LItem.Text + ' ' + LItem.ButtonText + ' 被单击了.');
end;
5.现在就完成了所有的工作,万事皆备,只欠一Run了,按下F9,或者是主菜单的“Run > Run”菜单项,一个漂亮的列表视图出现了,它包含一个搜索框,单击右边的按钮还能弹出详细信息,可以满足很多应用上的需求了。
在这一节中,学到了TListView和TProtoTypeBindingSource控件的用法,这为下一步继续深入LiveBindings打下了坚实的基础。