当前位置:网站首页>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。

原网站

版权声明
本文为[pcplayer]所创,转载请带上原文链接,感谢
https://blog.csdn.net/pcplayer/article/details/125579693