知识大全 Delphi深度探索之使用Bold开发数据库应用(2)
Posted 知
篇首语:学习如赶路,不能慢一步。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi深度探索之使用Bold开发数据库应用(2)相关的知识,希望对你有一定的参考价值。
Delphi深度探索之使用Bold开发数据库应用(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
添加业务域对象
设定根节点的名称为MoneyModel 然后设定New_ModelRoot节点名称为MoneyModelRoot 同时别忘了设定MoneyModel的Model root class属性为MoneyModelRoot 后面的所有类都将从MoneyModelRoot类派生
在右键菜单中选New Class命令 创建新的类Person和AcctItem 设定它们的SuperClass属性为MoneyModalRoot
添加属性
在模型编辑器的树视图中选择AcctItem类 使用右键菜单中的Add Attribute来添加Amount HappenDate和Name属性 设置所有属性为Persistent类型 表示这些属性的值要保存到数据库中 设定属性的数据类型为Currency 编辑界面示意如下
添加关联
选中MoneyModel节点 然后在右键菜单中选择New Association命令创建PayAssoc关联 命名关联的两端角色为Pay和Money 每个角色的设置如下
Pay: 选择AcctItem作为角色的类 关闭Embed checkbox并选择 *作为多重度因子
PayPerson: 选择Person作为角色的类 设定多重度为
编辑界面示意如下
通过上面一系列的操作 我们就完成了整个的建模工作 它同前面的UML模型是完全等价的
添加用户界面
要想使一个应用程序可以跑起来 我们还必须做一些界面工作 在CMoney pas 单元中添加BoldAFPDefault和CDataModule到uses部分 BoldAFPDefault使得Bold for Delphi可以自动生成Bold控件可调用的商业对象的编辑界 CDataModule单元则使Bold组件可以获知数据模块中的模型 从Bold Handles组件面板上拖动 个BoldListHandle控件到窗体上 然后从Bold Controls组件面板上拖放 个BoldNavigator和 个BoldGrid组件分别用于显示人员和账目信息列表 另外还要添加 个标准的Label控件来添加界面描述 界面示意图如下
其中BoldListHandle组件就相当于在数据库开发中的DataSource数据源 两者的主要的区别是BoldListHandle中的数据是对象实例 而DataSource中的数据是数据库记录 而BoldGrid和BoldNavigator则对应于数据感知组件中的DbGrid和DbNavigator组件 区别就是DbGrid中编辑的是数据库记录 而BoldGrid中编辑的是对象属性
在数据库开发中 需要将数据源同数据感知组件绑定 同样为了编辑对象数据 也要将BoldListHandle同对象感知组件BoldNavigator和BoldGrid进行绑定 设定BoldNavigator和BoldGrid的BoldHandle为相应的数据源 设定后的结果如下
在普通数据库开发中 除了要有DataSource外 还要有同DataSource绑定的数据集DataSet 同样的 BoldListHandle对应于DataSource 也要同DataMoudle中的BoldModel进行绑定 而Bold中的BoldSystemHandle组件就对应于TDataBase 包含了对象模型中所有对象实例 因此设定两个BoldListHandle组件的RootHandle属性为DmMoney bshMoney 这还不算完 因为现在BoldListHandle是要分别获得人员和账目的相关信息 而要指定对象DataBase中的对象DataSet 在Bold中指定不同的对象集合 需要使用OCL语言 双击BoldListHandle的Expression属性 会弹出一个OCL语言编辑器 如下图示意
前面提到了OCL语言是一种标准的对象查询语言 这里先不详述 后面会进一步的介绍 这里为了获得全部人员信息的列表的话 需要输入Person allInstances表达式 同样获得账目列表信息的话 需要设定BoldListHanlde的Expression属性为AcctItem allInstances
设定好BoldHandle的属性后 右击BoldGrid然后选择Create Default Columns命令 会创建对应于对象元数据的字段 最后还要在添加DataModule的OnDestroy事件处理函数
procedure TDmMoney DataModuleDestroy(Sender: TObject);begin//更新数据库bshMoney System UpdateDatabase;end;
上面语句确保运行时录入的信息将被保存到XML文件中 最后运行程序 输入一些信息的效果图示意如下
Bold同传统数据库开发的区别
两者之间最重要的不同就是元数据 Borland的控件感知的是数据库表 字段的结构定义元数据 而Bold控件感知的是类的定义元数据 两者另一个重要的区别就是数据的同步的处理方式 在传统的数据库程序中 我们想同步不同网格中的数据的话 可以使用下列方法
A) 多个查询
三个网格控件每个连接到不同的SQL数据源来获取数据 每次更新任意网格的数据时 重新运行这些查询来更新 这要求我们进行大量代码编写 并且要仔细考虑数据集的状态 比如当前数据集是否处于编辑模式等
B)过滤网格
通过使用单一查询 并借助于某些更为强大的第三方的带有内置的过滤功能的网格控件我们可以稍微简单一些的实现这个功能 但依赖于SQL表达式的查询会产生一个只读的数据集 同时对第三方控件的依赖也是不好的问题
cha138/Article/program/Delphi/201311/24784相关参考
知识大全 Delphi深度探索之使用Bold开发数据库应用(3)
Delphi深度探索之使用Bold开发数据库应用(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
知识大全 Delphi深度探索-数据库明了的ActiveX控件
Delphi深度探索-数据库明了的ActiveX控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Delphi深度探索之自动完成外壳扩展 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
知识大全 Delphi深度探索之PItemIDList的基本概念
Delphi深度探索之PItemIDList的基本概念 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
Delphi深度探索-CodeSite应用指南 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! D
Delphi深度探索之外壳执行操作记录器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!记录外壳的活
DELPHI基础教程:Delphi开发数据库应用程序概述(一)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
DELPHI基础教程:Delphi开发数据库应用程序概述(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
利用Delphi开发网络数据库应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Delphi是
DELPHI基础教程:Delphi开发数据库应用程序概述(一)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快