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

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

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

在第一行那一字段输入完后自动跳转到下一行该列的这一字段。
...全文
19 13 点赞 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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设置回车就换行啊!
  • 打赏
  • 举报
回复
相关推荐
发帖
Delphi
加入

4968

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2004-05-06 01:48
社区公告
暂无公告