请问dbgrid的一个问题,100分送给主要解答建议人!

pgz_007 2004-05-06 01:48:24
我想在dbgrid中实现抄表的功能,就是:

让某一个字段(某一列)可以编辑,其它的不能编辑。

在第一行那一字段输入完后自动跳转到下一行该列的这一字段。
...全文
43 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
pgz_007 2004-05-07
  • 打赏
  • 举报
回复
有没有直接的getColumn方法呀。
miky 2004-05-07
  • 打赏
  • 举报
回复
字段和你的DataSet有关,你的ClientDataset的Fields是怎么排列的,那么在DbGrid里也怎么排列,现在知道怎么找了吧?
pgz_007 2004-05-07
  • 打赏
  • 举报
回复
我是楼主,双击DBGrid1什么都没有,我是用ClientDataset设置的。
DBGrid1.Columns[i].ReadOnly := true;
这个i是列号,但是我数据表里面列很多,有20多列,那么我怎样得到需要编辑的字段所在的DBGrid表格中的列号呢?
yrhkds 2004-05-06
  • 打赏
  • 举报
回复
楼上说得对。
你可以通过属性来设置
双击DBDGrid弹出的框中,添加的字段可以分别设置其只读属性,readonly :=true;
miky 2004-05-06
  • 打赏
  • 举报
回复
更正,上面的方法不太好,
DBGrid1.Columns[i].ReadOnly := true; //i 是不可编辑的列
miky 2004-05-06
  • 打赏
  • 举报
回复
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if DBGrid1.SelectedIndex = 可编辑的列 then
Include(DBGrid1.Options,dgEditing)
else
Exclude(DBGrid1.Options,dgEditing);
end;
viaboy 2004-05-06
  • 打赏
  • 举报
回复
1,你再找找属性应该能解决。


2 procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);

begin

if Key = #13 then

if ActiveControl = DBGrid1 then

begin

TDBGrid(ActiveControl).SelectedIndex := TDBGrid (ActiveControl).SelectedIndex + 1;

Key := #0;

end;

end;
rockswj 2004-05-06
  • 打赏
  • 举报
回复
净态列的readonly属性
if key=#13 then
begin
if not(ADOQuery.Eof) then
begin
ADOQuery.Next ;
DBGrid1.SelectedField:=你的字段名
end;
end;
AdoreTour 2004-05-06
  • 打赏
  • 举报
回复
双击DBGrid1,再加入所有字段,将除了要编辑的字段的ReadOnly设为False外,其它全为True
然后在DBGrid1KeyPress中加代码
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
if not(ADOTable1.Eof) then
begin
ADOTable1.Next ;
DBGrid1.SelectedIndex:=x;//x为你的字段在 DBGrid1中的排位,从0开始
end;
end;
end;
Kaykay 2004-05-06
  • 打赏
  • 举报
回复
你把你的问题说详细点,看我能不能明确的告诉你如何解决
pgz_007 2004-05-06
  • 打赏
  • 举报
回复
那么我怎样得到该字段所在的列号呢?也就是某字段是哪一列。
Kaykay 2004-05-06
  • 打赏
  • 举报
回复
关于只读的设置听楼上各位的;

关于回车换行,很简单:
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
DBGrid1.DataSource.DataSet.Next;
end;
lincs3000 2004-05-06
  • 打赏
  • 举报
回复
在每列设置readonly为true,在keypress设置回车就换行啊!

5,391

社区成员

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

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