用Ai来完成一个小小的功能,迭代20版都没有实现-Delphi10+access+Ehlib控件
使用了chatgpt+copilot+DeepSeek 三个Ai的免费额度来尝试实现以下的功能:
使用delphi10.4.2+access+EhLib+DevExpress+FastReport 制作一个类似图示的窗体,有好多输入框;其中有的输入框内部有个按钮,在输入框内输入内容再点击按钮可以弹出一个下拉或者窗体检索指定的数据表,从数据表选择条目可以录入输入框。
chatgpt给出的方案
你提供的截图展示的是一个典型的 数据录入窗体,带有如下功能:
-
多个输入框
-
某些输入框右侧有一个小按钮(通常用于弹出下拉列表或弹出窗口进行数据选择)
-
点击按钮后,可以从数据表中检索、选择记录
-
选择后自动填充输入框内容
你希望用 Delphi 10.4.2 + Access + EhLib + DevExpress + FastReport 实现类似功能。下面是一个完整的思路与示例:
💡 功能实现结构
1. 基础组件
-
使用 TForm 创建窗体
-
使用 TDBEdit / TEdit / TDBComboBox / TButtonedEdit 显示输入框
-
使用 TButton 或 DevExpress 的 TcxButtonEdit 实现右侧按钮
-
使用 EhLib 的 TDBGridEh + TDataSource + TADOQuery/TAdoTable 显示下拉或弹窗列表
-
使用 TADOConnection 连接 Access 数据库
🧩 示例实现(TButtonedEdit + 弹出选择窗口)
数据结构(假设你要选择药品分类)
-- Access 表结构示例 CREATE TABLE 药品分类 ( ID AUTOINCREMENT PRIMARY KEY, 分类名称 TEXT(100), 拼音码 TEXT(20) );
主窗体设计
-
放一个
TButtonedEdit
(或 DevExpress 的TcxButtonEdit
),命名为edtCategory
-
放一个按钮
btnSelectCategory
弹出窗口设计(frmSelectCategory)
-
一个
TDBGridEh
-
一个查询组件
ADOQuery1
(如:SELECT * FROM 药品分类 WHERE 分类名称 LIKE :param
) -
一个按钮【确定】用来将选中的值返回主窗体
🔧 代码示例
procedure TFormMain.btnSelectCategoryClick(Sender: TObject); begin with TfrmSelectCategory.Create(Self) do try if ShowModal = mrOk then edtCategory.Text := SelectedCategoryName; // SelectedCategoryName 是从选择窗体传出的变量 finally Free; end; end;
选择窗体关键代码
procedure TfrmSelectCategory.FormShow(Sender: TObject); begin ADOQuery1.Close; ADOQuery1.SQL.Text := 'SELECT * FROM 药品分类'; ADOQuery1.Open; end; procedure TfrmSelectCategory.btnOKClick(Sender: TObject); begin if not ADOQuery1.IsEmpty then begin SelectedCategoryName := ADOQuery1.FieldByName('分类名称').AsString; ModalResult := mrOk; end; end;
SelectedCategoryName
可以是 public
变量或通过 property
暴露。
✅ 附加建议
功能 | 组件推荐 |
---|---|
搜索过滤 | TEdit + OnChange + SQL LIKE |
可拖动列/排序 | TDBGridEh 非常强大 |
多字段模糊匹配 | SQL 拼接 + 参数 |
结果分页 | Access 不支持 LIMIT,可使用分页逻辑 |
快速预览报表 | FastReport |
然后让chatgpt帮忙生成了一套源码
打包下载完成跑不起来,然后当天的额度用完了
接着去使用了GitHub Copilot Free
https://github.com/copilot/share/88165396-43c0-80d0-9053-1408c05e6072