高手帮忙dbgrid问题

phj0539 2003-09-05 10:30:31
请教一个 dbgrid问题,请高手帮忙
怎样实行在 dbgrid 里给某个字段输入值是从下拉框里选择,下拉框里得数据是另一个数据的某个字段;
...全文
60 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihongyue 2003-09-05
  • 打赏
  • 举报
回复
供参考:
var
a:TStringList;
begin
a:=TStringList.Create;
whdata.gg_spmc.Open;
while not whdata.gg_spmc.Eof do
begin
a.Add(whdata.gg_spmc.FieldValues['sp_name']);
whdata.gg_spmc.Next;
end;
dbgrid1.Columns[1].PickList:=a;
a.Free;
end;
phj0539 2003-09-05
  • 打赏
  • 举报
回复
是否能给picklist动态的赋值,每次打打开窗口时自动更新picklist的内容,
如果能,请给给个实例好吗,谢谢!!
superhjw 2003-09-05
  • 打赏
  • 举报
回复
有更好的方法:
1:如果下拉框数据总是不变的,设字段的PICKLIST就可以了。
他是STRINGLIST类。可以加一串噢。
2:如果有变化的话,那就在afterscroll中写上你的对picklist赋值事件噢。
Shiyl 2003-09-05
  • 打赏
  • 举报
回复
picklist
或者
//DBGRID指定列显示DBCOMBOBOX的内容
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if (gdFocused in State) then
begin
if (Field.FieldName = DBComboBox1.DataField ) then
begin
DBComboBox1.Left := Rect.Left + DBGrid1.Left;
DBComboBox1.Top := Rect.Top + DBGrid1.top;
DBComboBox1.Width := Rect.Right - Rect.Left;
DBComboBox1.Height := Rect.Bottom - Rect.Top;
DBComboBox1.Visible := True;
end;
end;
end;
//DBGRID指定单元格未获得焦点时不显示DBCOMBOBOX
procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
If DBGrid1.SelectedField.FieldName = DBComboBox1.DataField then
begin
DBComboBox1.Visible := false;
end;
end;
//再DBCOMBOBOX上进行数据输入
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (key <> chr(9)) then
begin
if (DBGrid1.SelectedField.FieldName =DBComboBox1.DataField) then
begin
DBComboBox1.SetFocus;
SendMessage(DBComboBox1.Handle,WM_Char,word(Key),0);
end;
end;
end;
phj0539 2003-09-05
  • 打赏
  • 举报
回复
谢谢了,这思路,我觉得挺好!!!

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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