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