当前位置:网站首页>EhLib 数据库记录的下拉选择
EhLib 数据库记录的下拉选择
2022-07-04 20:34:00 【pcplayer】
目标:
通过下拉选择,知道用户选择了数据库里面的哪条记录。仅仅是用来知道,而不是用来输入。
有一个表,有很多记录。提供一个界面让用户从表里面选择一条记录。程序获取用户的选择结果。
最简单的方法,给一个 DBGrid,用户将游标走到选择的记录(通过滚动和鼠标点击 DBGrid 里面的一条记录),然后程序读其对应的 DataSet。
DBGrid 太占空间。最好是一个类似 Edit 的东西,然后有一个下拉按钮,点这个按钮,下来出来一个框,框里面有多条记录供用户选择。选择结果要显示到这个 Edit 里面。
采用 EhLib 的控件,比较容易做到这样的效果。
方法
可以采用的控件有两种:
A. TDBLookupComboboxEh;
B. TDBEditEh;
假设:用于用户选择的表有 2 个字段:V_ID 和 V_Name;
界面的数据敏感控件的值,不是直接读控件,而是读控件绑定的 DataSet。因此,我们为了读到用户选择界面控件的结果,必须放一个 DataSet 在这里。这里我放一个 ClientDataSet1,并且为它创建3个字段:V_ID; V_Name; VName;其中 VName 是一个 Lookup 字段;
A. 采用 TDBLookupComboboxEh
DBLookupComboboxEh1 本身是有个下拉按钮的,这个下拉按钮会下拉出来一个框。这个框里面可以显示多个字段。关于这个框的设置,是其属性:DropDownBox;
但是,这个下拉的选择框,不如 DropDownForm 好用。因为 DropDownForm 里面我可以放一个 DGBridEh,功能更强大,比如多一个筛选过滤输入栏。
要使得 DBLookupComboboxEh1 右边的下拉三角形按钮,点了以后是一个 DropDownForm,需要找到其属性:EditButton,在属性面板上展开这个属性,底下就有 DropDownFormParams 属性,展开它,就可以设置其 DropDownForm 了。
设置好以后,运行时,点它的三角形下拉按钮,出来的就不是它自己的 DropDownBox 而是这个 DropDownForm 了。
DBLookupComboboxEh1 的 DataSet 的几个属性:
目标:通过下拉选择,知道用户选择了数据库里面的哪条记录。仅仅是用来知道,而不是用来输入。
1. DataSource 属性,对应的 DataSource 及其 DataSet,就是一个本地的 ClientDataSet,它仅仅用来承载用户选择后的结果。它有三个字段:V_ID; V_Name; VName;其中 VName 是一个 Lookup 字段;
2. DataField 属性,对应 V_ID 字段;
3. ListSource 属性,对应用来让用户选择的有多条记录的 DataSet;
4. ListField 属性,是用来在 DropDownBox 里面显示的字段。当然,如果专门去设置 DropDownBox 属性底下的一些属性设置,可以增加几个字段。也就是下拉后看到多几个字段的显示。
5. 如果采用 DropDownForm,可能上述 ListSource 的设置就不用了?
关于 EhLib 的 DropDownForm,这里不详细讲解。EhLib 自带的 Demo 里面有它的例子代码。
我也写过一篇文章,讲关于 DropDownForm 的用法,地址是:
https://blog.csdn.net/pcplayer/article/details/113873604
B. 采用 DBEditEh:
使用 DBEditEh1 也可以做到下拉 DropDownForm 让用户选择一条记录的效果,做法如下:
1. 最重要的一点,这个 DBEditEh1 的 DataField 要指向 VName 这个 Lookup 字段,而不是 V_Name 这个字段;否则没有显示;
2. DBEditEh1 的 DataSource 同样是执行上述的本地 ClientDataSet;
3. 属性面板里面,找到它的 EditButtons 项,双击会弹出一个小窗口,用于增加按钮。在小窗口里面右键菜单选择 Add 后,就会出来一个按钮。选择小窗口里面新增加的按钮,其属性面板里面有 DropDownFormParams 项,展开这一项,可以为它设置一个 DropDownForm;
完成上述设置,就可以在 DBEditEh1 里面,也看到一个下拉按钮,下拉后就会弹出 DropDownForm。
边栏推荐
- 数十亿公民信息遭泄漏!公有云上的数据安全还有“救”吗?
- 华为模拟器ensp常用命令
- FastDfs的快速入门,三分钟带你上传下载文件到云服务器
- redis RDB AOF
- colResizable.js自动调整表格宽度插件
- Huawei ENSP simulator configures ACL access control list
- 阿里云国际版CDN的优势
- 华为ensp模拟器 三层交换机
- Y56. Chapter III kubernetes from entry to proficiency -- business image version upgrade and rollback (29)
- 网件r7000梅林系统虚拟内存创建失败,提示USB磁盘读写速度不满足要求解决办法,有需要创建虚拟内存吗??
猜你喜欢
随机推荐
Render function and virtual DOM
Flutter在 release版本,打开后随机白屏不显示内容
刘锦程荣获2022年度中国电商行业创新人物奖
Jerry's ad series MIDI function description [chapter]
[server data recovery] a case of RAID5 data recovery stored in a brand of server
__ init__ () missing 2 required positive arguments
华为ensp模拟器 DNS服务器的配置
Huawei ENSP simulator realizes communication security (switch)
minidom 模塊寫入和解析 XML
At the right time, the Guangzhou station of the city chain science and Technology Strategy Summit was successfully held
杰理之AD 系列 MIDI 功能说明【篇】
Maidong Internet won the bid of Beijing life insurance
Maya lamp modeling
Liu Jincheng won the 2022 China e-commerce industry innovation Figure Award
五子棋 上班摸鱼工具 可局域网/人机
Billions of citizens' information has been leaked! Is there any "rescue" for data security on the public cloud?
Configuration of DNS server of Huawei ENSP simulator
redis03——Redis的网络配置与心跳机制
Jmeter 之压测入门
Remember to build wheels repeatedly at one time (the setting instructions of obsidian plug-in are translated into Chinese)









