如何使DBGRID中的某一网格的下拉列表的内容从一个数据库中用ADOQUERY导入

shangui 2003-08-11 11:08:43
如何使DBGRID中的某一网格的下拉列表的内容从一个数据库中用ADOQUERY导入.就是使DBGRID中COLUMNS[].PICKLIST中的内容可以从一个数据库中导入.我把数据库中的某一字段的全部记录都读入到一个数组中,然后把数组赋给它,类型不匹配,请各位大侠快快帮小弟一把.
...全文
74 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hnhb 2003-08-12
  • 打赏
  • 举报
回复
我没有用picklist,我是把一个combobox控件加入实现的.

在form上放一个ComboBox组件,设定它的visible为false
先把另一个数据表的可用记录放入其中

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if gdfocused in state then
begin
if column.FieldName='xxx' then //xxx为你要让combobox显示的那列的字段名
begin
ComboBox1.Left:=rect.Left+form1.DBGrid1.Left;
ComboBox1.Top:=rect.Top+form1.DBGrid1.Top;
ComboBox1.Width:=rect.Right-rect.Left;
ComboBox1.Height:=rect.Bottom-rect.Top;
ComboBox1.Visible:=true;
end;
end;
end;
ltmb118 2003-08-12
  • 打赏
  • 举报
回复
用 wwdbgrid 可以非常容易的实现
  • 打赏
  • 举报
回复
PICKLIST 是 TSTRINGLIST 类型,当然数组不匹配了,
你读的时候事先建立一个TSTRINGLIST,

VAR MYSTR :TSTRINGLIST;
BEGIN
MYSTR :=TSTRINGLIST.CREATE;

FOR I:=0 TO N DO
BEGIN
MYSTR.ADD('...');
END;

DBGRID中COLUMNS[].PICKLIST:= MYSTR;

微雪缤纷 2003-08-12
  • 打赏
  • 举报
回复
hnhb(不死鸟) 的方法更简单些。
frogshero 2003-08-11
  • 打赏
  • 举报
回复
类型不匹配?picklist是TStrings

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧