关于DBGrid的使用方法,送上100分(100分)

  • 主题发起人 主题发起人 qingyei
  • 开始时间 开始时间
Q

qingyei

Unregistered / Unconfirmed
GUEST, unregistred user!
各位老友:
我现在遇个问题,就是DBGrid控件使用问题,
我想用DBGrid修改数据库数据,但每当我将焦点
移到最后一条记录,按下(往下)方向键时,就
成了插入记录。我需要的是完成记录的修改,而
不能变成插入记录。
1、当焦点移到最后一条记录时,如何判断这
是最后一条记录?
2、如上一方法行不通,能否设置DBGrid成不
能插入记录,只能作修改用。
谢谢!并奉上100分。
 
1读dataset的eof特性,true到了文件尾
2我也想知道。
 
判断eof然后禁止向下键和插入键,这个办法好笨的。
 
infopower2000中的TwwDBGrid可以满足你的要求,
在它的KeyOpions属性中将dgAllowInsert设为False就行了!!!
 
在数据集的beforeinsert事件中来个 abort;
 
fenix的方法很实用
 
to Fenix:
如何做,详细一点行吗?

to laker:
如何做,详细一点行吗?
谢谢大家!我期待你们的进一步解答。
 
在dbgrid的keypress中判断如果是向下的按钮就abort,我作过,很灵。
 
就这样:
procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);
begin
If Dbgrid1.Focused then
abort;
end;
 
to 各位老友:

我按大家提供给我的方法做了,不知怎么的,

还是不行,我在最后一条记录处按下方向键时,

还是会进入插入状态,由于我在DBGrid各列中定

义有可选修改参数,而不用键盘修改记录,不知

可否还有其它好的方法解决这个问题。

谢谢老友们给我的帮助,冲着大家的热情,

我再多赠50分。

 
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = VK_DOWN then
begin
key := 0;
Table1.Next;
if Table1.Eof then Table1.Cancel;
end;
end;
 
我用了liuly提供的方法,还可以,但为什么我用
abort行不通,我还会试试,谢谢大家。
 
procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);
begin
abort;
end;
就行了阿
如果要插入,这儿加个变量判断就行了
 
多人接受答案了。
 
后退
顶部