当前位置:网站首页>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。
边栏推荐
- What are the functional modules of RFID warehouse management system solution
- FastDfs的快速入门,三分钟带你上传下载文件到云服务器
- 学习突围3 - 关于精力
- __ init__ () missing 2 required positive arguments
- Poster cover of glacier
- Jerry added the process of turning off the touch module before turning it off [chapter]
- 吐槽 B 站收费,是怪它没钱么?
- Golang中UTF编码和字符集
- [1200. Différence absolue minimale]
- torch. Tensor and torch The difference between tensor
猜你喜欢

ApplicationContext 与 BeanFactory 区别(MS)

shp数据制作3DTiles白膜

Methods of improving machine vision system

Can be displayed in CAD but not displayed in print

Advantages of RFID warehouse management system solution

Y56. Chapter III kubernetes from entry to proficiency -- business image version upgrade and rollback (29)

迈动互联中标北京人寿保险

数十亿公民信息遭泄漏!公有云上的数据安全还有“救”吗?

IIC (STM32)

Difference between ApplicationContext and beanfactory (MS)
随机推荐
Huawei ENSP simulator layer 3 switch
[1200. Différence absolue minimale]
Jerry's ad series MIDI function description [chapter]
js 3D爆炸碎片图片切换js特效
maya灯建模
minidom 模塊寫入和解析 XML
华为模拟器ensp的路由配置以及连通测试
Numpy vstack and column_ stack
Jerry's ad series MIDI function description [chapter]
Vue cleans up the keepalive cache scheme in a timely manner
Jerry added the process of turning off the touch module before turning it off [chapter]
杰理之AD 系列 MIDI 功能说明【篇】
Huawei ENSP simulator enables devices of multiple routers to access each other
Billions of citizens' information has been leaked! Is there any "rescue" for data security on the public cloud?
__ init__ () missing 2 required positive arguments
Day24: file system
redis布隆过滤器
torch. Tensor and torch The difference between tensor
redis03——Redis的网络配置与心跳机制
Jerry's ad series MIDI function description [chapter]