当前位置:网站首页>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。
边栏推荐
- Liu Jincheng won the 2022 China e-commerce industry innovation Figure Award
- torch. Tensor and torch The difference between tensor
- 插入排序,选择排序,冒泡排序
- PS竖排英文和数字文字怎么改变方向(变竖直显示)
- redis03——Redis的网络配置与心跳机制
- async await 在map中使用
- Hwinfo hardware detection tool v7.26 green version
- PS vertical English and digital text how to change direction (vertical display)
- Huawei ENSP simulator configures DHCP for router
- 【Try to Hack】宽字节注入
猜你喜欢
多模輸入事件分發機制詳解
Jmeter 之压测入门
搭建一个仪式感点满的网站,并内网穿透发布到公网 1/2
Stealing others' vulnerability reports and selling them into sidelines, and the vulnerability reward platform gives rise to "insiders"
数十亿公民信息遭泄漏!公有云上的数据安全还有“救”吗?
华为ensp模拟器 实现多个路由器的设备可以相互访问
[server data recovery] a case of RAID5 data recovery stored in a brand of server
杰理之AD 系列 MIDI 功能说明【篇】
[ 每周译Go ] 《How to Code in Go》系列文章上线了!!
Difference between ApplicationContext and beanfactory (MS)
随机推荐
Billions of citizens' information has been leaked! Is there any "rescue" for data security on the public cloud?
HMS Core 统一扫码服务
Redis pipeline
WGCNA分析基本教程总结
2021 CCPC Harbin B. magical subsequence (thinking question)
Why does invariant mode improve performance
【optimtool.unconstrain】无约束优化工具箱
巅峰不止,继续奋斗!城链科技数字峰会于重庆隆重举行
2021 CCPC 哈尔滨 I. Power and Zero(二进制 + 思维)
杰理之AD 系列 MIDI 功能说明【篇】
Huawei ENSP simulator configures DHCP for router
async await 在map中使用
偷窃他人漏洞报告变卖成副业,漏洞赏金平台出“内鬼”
redis事务
Test case (TC)
解析互联网时代的创客教育技术
__ init__ () missing 2 required positive arguments
OMS系统实战的三两事
Remember to build wheels repeatedly at one time (the setting instructions of obsidian plug-in are translated into Chinese)
冰河的海报封面