edit类控件检索后下面弹出列表框的实现方法
如图所示:

delphi10+dev控件或者其它控件,需要制作一个信息录入窗体,有不少输入框需要可以进行检索,检索时在输入框下方弹出一个小窗口显示检索的内容
代码如下:
procedure TfrmUsers.btnUserInfoClick(Sender: TObject);
var
aUserInfo:TUserInfo;
begin //查找用户组织架构信息
edtUsrNam.Text:=Trim(edtUsrNam.Text);
if edtUsrNam.Text<>'' then
begin
with TfrmUserInfo.Create(Self) do
try
aUserInfo.FullName:=edtUsrNam.Text;
UserInfo:=aUserInfo;
if (ShowModal=mrOk) then //如果实时搜索,就不能用 ShowModal 了,要让窗口置顶
begin
aUserInfo:=UserInfo;
edtUsrNam.Text:=aUserInfo.UsrNam; //姓名
edtJobID.Text:=aUserInfo.JobID; //工号
edtUsrNbr.Text:=aUserInfo.UsrNbr; //手机号码
......
end;
finally
Free;
end;
end
else MsgBox('提示','请输入搜索关键字!');
if edtUsrNam.CanFocus then
edtUsrNam.SetFocus;
end;
以下是弹窗的部份代码
type
TfrmUserInfo = class(TForm)
StringGrid: TStringGrid;
......
procedure StringGridDblClick(Sender: TObject);
private
{ Private declarations }
FUserInfo:TUserInfo;
function GetUserInfo():TUserInfo;
public
{ Public declarations }
property UserInfo:TUserInfo read FUserInfo write FUserInfo;
end;
procedure TfrmUserInfo.FormShow(Sender: TObject);
var
UserInfos:TUserInfos;
begin
if FUserInfo.FullName<>'' then
begin
StringGrid.RowCount:=2;
StringGrid.Rows[1].Clear;
if DM.QueryUserInfo(FUserInfo,UserInfos)>0 then //从数据库查询数据,返回到数组UserInfos
begin
for var iIndex :Integer:= Low(UserInfos) to High(UserInfos) do
with UserInfos[iIndex] do
begin
.... //把UserInfos数组数据显示到 StringGrid 里
end;
end;
end;
end;
procedure TfrmUserInfo.StringGridDblClick(Sender: TObject);
begin
FUserInfo:=GetUserInfo(); //获取选中行数据赋值给FUserInfo
//也可以放置一个button,设置ModalResult=mrOK
Self.ModalResult:=mrOK;
Self.Close;
end;
//员工组织架构
TUserInfo = record
JobID, //工号
UsrNam, //姓名
UsrNbr, //电话
......
end;
TUserInfos=Array of TUserInfo;
我现在需要一个录入窗体
录入人员吧
姓名
民族(从民族数据表检索)
性别 直接写死下拉
籍贯 省 市 区(从行政区划数据表检索)
毕业院校 (从教育部发布的高校列表数据表检索)
入职部门 (从部门数据表检索)
直属上级 (从员工数据主表检索)
岗位 (从岗位数据表检索)
….
请问如何实现?
如果只是选值, combobox 控件就可以啊.

民族 性别 籍贯 省 市 区 毕业院校 入职部门 直属上级 岗位 这些全部可以各自建一个数据表, 数据表的记录另外设窗体来录入.在程序启动时, 去创建 N 个内存表, 把这些记录全部读进内存表中保留以后使用. 在你要检索记录的那个窗体(控件) 那里, 去检索的是内存表中的记录, 速度快且不占用带宽.
这个,用 DBGridEh 很容易做到。
使用上面我的博客文章里面介绍的方法,你在 DBGridEh 的每个单元格里面都可以下拉出来一个表。而且下拉出来的这个表本身也是 DBGridEh,可以把 DBGridEh 的抬头里面的搜索过滤框的功能都用上。
https://blog.csdn.net/pcplayer/article/details/125579693
https://blog.csdn.net/pcplayer/article/details/113873604
