当前位置:网站首页>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。
边栏推荐
- Flutter在 release版本,打开后随机白屏不显示内容
- __init__() missing 2 required positional arguments 不易查明的继承错误
- __ init__ () missing 2 required positive arguments
- Jerry's ad series MIDI function description [chapter]
- 多模輸入事件分發機制詳解
- Day24: file system
- 华为ensp模拟器 给路由器配置DHCP
- 杰理之AD 系列 MIDI 功能说明【篇】
- Foxit pdf editor v10.1.8 green version
- TweenMax表情按钮js特效
猜你喜欢
随机推荐
Redis bloom filter
华为ensp模拟器 DNS服务器的配置
Redis pipeline
Explication détaillée du mécanisme de distribution des événements d'entrée multimodes
网络命名空间
Roast B station charges, is it because it has no money?
Minidom module writes and parses XML
Vue cleans up the keepalive cache scheme in a timely manner
Golang中UTF编码和字符集
华为模拟器ensp的路由配置以及连通测试
heatmap.js图片热点热力图插件
In the release version, the random white screen does not display the content after opening the shutter
杰理之AD 系列 MIDI 功能说明【篇】
HMS Core 统一扫码服务
minidom 模块写入和解析 XML
redis事务
华为ensp模拟器实现通信安全(交换机)
改善机器视觉系统的方法
D3.js+Three.js数据可视化3d地球js特效
numpy vstack 和 column_stack









