当前位置:网站首页>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。
边栏推荐
猜你喜欢
Stealing others' vulnerability reports and selling them into sidelines, and the vulnerability reward platform gives rise to "insiders"
[1200. Minimum absolute difference]
【1200. 最小絕對差】
解析steam教育中蕴含的众创空间
奋斗正当时,城链科技战略峰会广州站圆满召开
Gobang go to work fishing tools can be LAN / man-machine
Solution of 5g unstable 5g signal often dropped in NetWare r7000 Merlin system
js 3D爆炸碎片图片切换js特效
maya灯建模
巅峰不止,继续奋斗!城链科技数字峰会于重庆隆重举行
随机推荐
[server data recovery] a case of RAID5 data recovery stored in a brand of server
[wechat applet] collaborative work and release
HMS Core 机器学习服务
TweenMax表情按钮js特效
Jerry's ad series MIDI function description [chapter]
2021 CCPC Harbin I. power and zero (binary + thinking)
maya灯建模
PS vertical English and digital text how to change direction (vertical display)
redis管道
Jerry's ad series MIDI function description [chapter]
In the release version, the random white screen does not display the content after opening the shutter
迈动互联中标北京人寿保险
仿ps样式js网页涂鸦板插件
Configuration of DNS server of Huawei ENSP simulator
网络命名空间
Y56. Chapter III kubernetes from entry to proficiency -- business image version upgrade and rollback (29)
【C语言】符号的深度理解
Redis cache
Billions of citizens' information has been leaked! Is there any "rescue" for data security on the public cloud?
minidom 模块写入和解析 XML