数据控制部件
数据控制部件页上的部件 主要用于设计用户界面 对数据库中的数据进行浏览 编辑 插入 删除等 *** 作 因而数据控制部件常常又被称为数据浏览部件 数据控制部件其实是在Standard页上的标准部件的基础上 相应地增加了数据浏览功能 使得它们能够显示和编辑数据库中数据信息
数据控制部件既能够把数据库中的数据显示到窗体中 又可以将其自身的经过修改的数据写回到数据库中 下表列出了数据控制页上的数据控制部件及它们的主要用途
表 数据控制部件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
部件名称 主 要 用 途
───────────────────────────────
TDBNavigator 使用该部件可以向前向后移动记录指针 可以使用该部件对单条记录进行编辑 还可以用它来插入 删除记录以及刷新显示和取消前一次的 *** 作
───────────────────────────────
它是显示数据库中的数据的文本框 它只能显示
TDBText 数据库表当前记录的字段值 用户不能对其中的
数据进行修改
───────────────────────────────
TDBEdit 它是显示和编辑数据库表中的数据的编辑框 它既可以显示又可以编辑数据库表中当前记录的字段值
───────────────────────────────
TDBCheckBox 它是浏览数据库中的数据的检查框 它可以用来显示和编辑数据库中的布尔型字段的字段值
───────────────────────────────
TDBListBox 它是浏览数据库中的数据的列表框 它可以用一个列表框来显示数据库表中一个字段的值
───────────────────────────────
TDBComboBox 它是浏览数据库中的数据的组合框 它可以用一个组合框来显示数据库表中一个字段的值
───────────────────────────────
TDBRadioGroup 它是浏览数据库表中的数据的单选钮 用一组单选钮可以确定显示数据库表中哪一个字段
───────────────────────────────
TDBGrid 它是浏览数据库中的数据的网格 以网格的方式显示数据库中的数据 在网格中还可以对数据库中的数据进行编辑 利用Fields Editor可以对数据库表中字段的显示格式 显示顺序 是否显示等进行控制
───────────────────────────────
TDBMemo 它主要用于浏览数据库中备注型的字段 它可以用来显示数据库表中当前记录中的BLOB型字段
───────────────────────────────
TDBImage 它是浏览数据库中的数据的图像框 它可以用于显示 拷贝 粘贴据库表中图像类型的字段
───────────────────────────────
TDBLookUpList 它是浏览数据库表中的数据的列表框 在基于一个数据库表的应用中 用它可以显示另一个数据库表中一个指定的字段值
───────────────────────────────
TDBLookUpCombo 它是浏览数据库表中的数据的组合框 在基于一个数据库表的应用中 用它可以显示另一个数据库表中一个指定的字段值
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
数据控制部件为开发Delphi数据库应用程序提供可视化的用户界面 不管应用程序是访问本地数据库中的数据文件 还是访问远程数据库服务器中的数据文件 用户界面都是一致的 即数据库的物理位置对数据控制部件是透明的
lishixinzhi/Article/program/Delphi/201311/25176
内建的Bold对象编辑界面
双击BoldGrid中左侧的箭头 或者记录可以激活对象编辑对话框 对象编辑对话框可以同时启动多个 如下图所示意
在BoldGrid中 我们可以使用ctrl+鼠标点击来多选对象 也可以点击网格左上角来选中所有的对象 但是默认的BoldGrid对象编辑器不支持人员和账目对象的关联的显示和编辑 但d出的对象编辑器则支持这些关联 上图框起来的箭头 可以用来拖放对象 将哈巴狗拖动到PayPerson的位置 就可以建立支付人同账目对象之间的关联了
还有一点要注意的是d出式对象编辑器并不是同Grid同步绑定的 因此我们可以打开多个编辑器的同时还可以在网格内的记录间导航到不同的位置 两者可以做到互不影响游标 而传统的数据库程序无法做到这点 因为当游标改变时 会同步改变所有同DataSource绑定的数据感知组件中的内容
退出系统后 可以看到Data xml中记录了刚才输入的信息
主从关系的实现
使用上面的Bold程序 再输入一个大尾巴兔兔的用户 你会发现有一个问题 就是大尾巴兔兔同志目前没有任何账目支出 但是点选到大尾巴兔兔对象上时 账目网格组件仍然是显示所有的账目信息 而没有实现主从关联
为了实现主从关系 需要修改一下账目对象的BoldListHandle组件的属性 将blhAcct的RootHandle属性由原来的DmMoney bshMoney改成blhPerson 表示父对象是人员 同时要将Expression属性改成Pay 另外为了能够在账目网格中显示同账目关联的人员信息 双击bgAcct网格 添加一个新的Column 设定它的BoldProperties Expression为PayPerson name 表示字段用来显示支付账目人的名字 见下图示意
再次运行程序 可以看到这回实现了真正的主从关联 当点击哈巴狗时 只显示同哈巴狗关联的账目 同时 如果这时点击账目网格的添加命令的话 新建的对象的PayPerson自动设定为哈巴狗 如下图示意
级联删除的实现
前面虽然我们实现了主从关系 但是将所有人员都删除后 你会发现data xml文件中仍然有账目信息 这表明 删除人员时 没有将同人员绑定的账目信息删除 也就是说并没有实现级联删除
为了更形象的察看这一现象 在界面添加一个BoldGrid BoldNavigator和BoldListHandle来显示系统中所有的对象 设定BoldListHandle的RootHandle属性为DmMoney bshMoney 设定Expression属性为MoneyModelRoot allInstances表示显示系统中所有的对象实例
然后向前面一样将BoldListHandle绑定到BoldGrid和BoldNavigator 并创建默认的Columns 再次运行后的效果如下图所示意
可以看到全部对象列表中有两个字段 type字段表示系统中对象的类型 而AsString字段则显示对象的字符串表达 但是默认Person对象的AsString字段里面显示的是对象组件加类别字符串 而AcctItem对象的AsString显示的是对象的Amount属性 但是为了观察对象被删除的情况 我希望能够显示更有意义的字符串 如显示人员的名称 显示账目的名称及支付人
因此需要修改模型中对象默认字符串的定义 双击数据模块中bmMoney 激活Bold UML Editor 选中Person对象 设定Default string rep为name 表示默认的AsString属性为人员的名称 见下图示意
同样的 设定AcctItem的Default string rep为payPerson name+ +name 表示AsString由支付人的名称及账目名称构成
再次运行程序 显示效果示意如下
这时 将哈巴狗从人员列表中删除后 界面示意图如下
可以看到账目对象大白菜和化妆品仍然还在 只是支付人信息为空了 看来账目对象确实没有被级联删除 为了实现级联删除 再次打开Bold UML Editor 展开PayAssoc关联 选中Pay 然后设定Delete action为Cascade 表示使用级联删除 见下图示意
再次运行程序 输入人员信息及人员账目信息后 再删除人员 会发现这回将绑定的账目信息也一同删除了
总结
lishixinzhi/Article/program/Delphi/201311/24783
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)