Delphi XE2 之 FireMonkey 入门(31) - 数据绑定: 绑定数据库
为什么80%的码农都做不了架构师?>>>
一、全设计时操作:
先在窗体上放置控件:
DataSource1 : TDataSource;
ClientDataSet1 : TClientDataSet;
Label1 : TLabel;
Edit1 : TEdit;
Memo1 : TMemo;
ImageControl1 : TImageControl;
BindNavigator1 : TBindNavigator;{在连接过程中, 会自动添加下面部件}
BindingsList1 : TBindingsList;
BindScopeDB1 : TBindScopeDB;DBLinkLabel1SpeciesNo1 : TBindDBTextLink;
DBLinkEdit1Category1 : TBindDBEditLink;
DBLinkMemo1Notes1 : TBindDBMemoLink;
DBLinkImageControl1Graphic1 : TBindDBImageLink;
测试使用官方提供的测试数据 biolife.xml(或 biolife.cds), 其路径通常是: C:\Program Files\Common Files\CodeGear Shared\Data\biolife.xml
连接步骤:
1、置 DataSource1 的 DataSet 属性为 ClientDataSet1;2、置 ClientDataSet 的 FileName 属性为 'C:\Program Files\Common Files\CodeGear Shared\Data\biolife.xml';3、将四个控件分别关联到 biolife.xml 中的字段:Label1 -> 右键 -> Link To DB Field... -> 选择 Species No (数字)Edit1 -> 右键 -> Link To DB Field... -> 选择 CateGory (string)Memo1 -> 右键 -> Link To DB Field... -> 选择 Notes (Text)ImageControl -> 右键 -> Link To DB Field... -> 选择 Graphic (Graphics)4、置 BindNavigator1 的 BindScope 属性为 BindScopeDB1;5、置 ClientDataSet1 的 Active 属性为 True.
二、运行时连接:
先在窗体上放置控件(其它在运行时完成):
DataSource1 : TDataSource;
ClientDataSet1 : TClientDataSet;
Label1 : TLabel;
Edit1 : TEdit;
Memo1 : TMemo;
ImageControl1 : TImageControl;
BindNavigator1 : TBindNavigator;
BindingsList1 : TBindingsList;
BindScopeDB1 : TBindScopeDB;
与设计时功能相同的代码:
procedure TForm1.FormCreate(Sender: TObject);
beginClientDataSet1.FileName := 'C:\Program Files\Common Files\CodeGear Shared\Data\biolife.xml';DataSource1.DataSet := ClientDataSet1;BindScopeDB1.DataSource := DataSource1;BindNavigator1.BindScope := BindScopeDB1;with TBindDBTextLink.Create(BindingsList1) dobeginControlComponent := Label1;DataSource := BindScopeDB1;FieldName := 'Species No';end;with TBindDBEditLink.Create(BindingsList1) dobeginControlComponent := Edit1;DataSource := BindScopeDB1;FieldName := 'Category';end;with TBindDBMemoLink.Create(BindingsList1) dobeginControlComponent := Memo1;DataSource := BindScopeDB1;FieldName := 'Notes';end;with TBindDBImageLink.Create(BindingsList1) dobeginControlComponent := ImageControl1;DataSource := BindScopeDB1;FieldName := 'Graphic';end;ClientDataSet1.Active := True;
end;
要绑定到 TStringGrid, 在设计时(在上面的基础上)只需: StringGrid1 -> Link to DB DataSource... -> BindScopeDB1
下面是运行时绑定到 TStringGrid 的代码:
uses Fmx.Bind.Editors, Data.Bind.DBLinks, Fmx.Bind.DBLinks;procedure TForm1.FormCreate(Sender: TObject);
beginClientDataSet1.FileName := 'C:\Program Files\Common Files\CodeGear Shared\Data\biolife.xml';DataSource1.DataSet := ClientDataSet1;BindScopeDB1.DataSource := DataSource1;BindNavigator1.BindScope := BindScopeDB1;ClientDataSet1.Active := True;with TBindDBGridLink.Create(BindingsList1) do //还可用 TBindGridLinkbeginGridControl := StringGrid1;DataSource := BindScopeDB1;Active := True;end;
end;
转载于:https://my.oschina.net/hermer/blog/319742
Delphi XE2 之 FireMonkey 入门(31) - 数据绑定: 绑定数据库相关推荐
- Delphi XE2 之 FireMonkey 入门(23) - 数据绑定: TBindingsList: TBindExpression
准备用 TBindingsList 重做上一个例子. 可以先把 TBindingsList 理解为是一组绑定表达式(TBindExpression)的集合; 官方应该是提倡在设计时完成 TBindEx ...
- Delphi XE2 之 FireMonkey 入门(30) - 数据绑定: TBindingsList: TBindExpression 的 OnAssigningValue 事件...
为什么80%的码农都做不了架构师?>>> 表达式中的函数有限, 譬如我想通过绑定输出文本的长度(譬如在 Label1 中绑定输出 Edit1.Text 的长度)就没有相应的函数 ...
- Delphi XE2 之 FireMonkey 入门(26) - 数据绑定: TBindingsList: TBindExprItems
如果要给一对 "源控件" 和 "目标控件" 写多个表达式, 使用 TBindExpression 就不如 TBindExprItems 了. TBindExpr ...
- Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它
Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它 TFmxObject 增加了 TagObject.TagFloat.TagString, 算 ...
- Delphi XE2 之 FireMonkey 入门(1)
Delphi XE2 的 FireMonkey 是跨平台的, 暂时只准备看看它在 Windows 下(我是 32 位 Win7)的应用情况. 很新的东西, 相信有了它, 以后的界面将会更灵活.漂亮, ...
- Delphi XE2 之 FireMonkey 入门(17) - 特效
刚打开 XE2 时, 就从 Tool Palette 窗口的 Effects 组中发现洋洋洒洒的六十多个特效... 每个特效分别对应一个类, 分别来自 FMX.Effects 和 FMX.Filter ...
- Delphi XE2 之 FireMonkey 入门(2)
FireMonkey 的控件都是自己绘制的(而不是基于系统组件), 我想它们应该是基于一些基本图形; 就从基本图形开始吧. FMX.Objects 单元给出的类: TShape //基本图形的基类 T ...
- Delphi XE2 之 FireMonkey 入门(20) - TStyleBook(皮肤、样式相关)
我觉得叫 "皮肤" 不如叫 "样式" 或 "风格", 因为它可以包含和动作关联的动画. 在 FMX 下, 控件可以任意绘制, 各部件个性化的 ...
- Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox
TScrollBox -> TCustomListBox -> TListBox; 其元素项是 TListBoxItem 类型. TListBox 的功能在 TCustomListBox ...
最新文章
- 数据库权限的分配与回收
- 【每日DP】day 9、P1156 垃圾陷阱(神奇的背包,时间节点处理)难度⭐⭐⭐
- 金融业如何更好地利用大数据实现突破性变革?(实例解读)
- 拓普微智能TFT液晶显示模块
- 单例销毁_【PHP设计模式】单例模式
- 2019日历全年一张_带上这份2019全年活动日历,旅行打卡不迷路
- viewpager 自定义翻页效果_轻松打造专业的录音棚效果,连网红用了都说好的唱吧声卡K10套装...
- 踩坑之旅:springboot+vue+webpack项目实战(一)
- Java之jdk和CGLib实现动态代理
- 文件字符串变量插入linux,Linux Shell脚本实现在文件指定的行插入字符串
- Python 精简入门级学习(一)
- PyTorch 深度学习:37分钟快速入门——FCN 做语义分割
- Shell:函数返回值接收
- Python+Wind:用 Pyautogui 轻松下载 Wind 数据
- java在微信的应用_java版微信公众平台消息接口应用示例
- 学成在线官网首页完整版(含psd源文件)
- 1978-2021中国统计年鉴、2003-2019(省、市面板数据)、1999-2019(县域面板数据)
- 智能功放 ACS 保护
- tc7102路由器虚拟服务器,电信华为tc7102路由器怎么设置
- 【图像】焦距与景深的关系
热门文章
- FishC《零基础学习python》笔记--第007、008讲、009讲:了不起的分支和循环1、2、3
- 手机端操作| Auto.js一键解密/一键加密工具免费分享
- 史上最全Java面试题:数据结构+算法+JVM+线程+finalize+GC
- 打开新世界?从产品经理角度聊聊“高智商”这件事儿
- (二)证明数列{(1+1/n)^(n+1)}为递减数列,{(1+1/n)^(n)}为递增数列
- 关于Oracle数据库基本知识①——基本操作语句
- 互联网行业人才缺口到底有多大?
- html中alert弹窗自动消失,模拟alert2秒后自动消失弹出框
- Java项目:基于Java药品管理系统(计算机毕业设计)
- python 漏洞扫描器_SRCHunter Python开源漏洞扫描器