怎样控制 dbgrid ,使它不能用向下光标键自动追加记录?(100分)

  • 主题发起人 主题发起人 yifawu
  • 开始时间 开始时间
可设定readonly为true,如不想改数据的话。
 
可是我还要 Edit 表啊!
 
并且我还要用 table.insert 语句插入记录!
 
用DBGridEh吧,很简单就搞掂
 
我可没有DBGridEh,并且已经用上了DBGrid ,难到用DBGrid 就没有办法吗?

我想给表格增加一 keydown 事件,当按下向下光标键时,此时 var 的值为
40, 用del(key,40)退回此键,可是不知道什么时候用它?
 
将DataSource的AutoEdit 属性设为False,需要修改时用Table.Edit;
 
为什么没有能回答此问题?
 
能否将记录做上书签?
 
用下面的办法:

procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if table1.RecNo=table1.RecordCount then key:=0;
end;
 
刚才错了,应该这样:

procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=Vk_down then if table1.RecNo=table1.RecordCount then key:=0;
end;

 
给表格增加一 keydown 事件,判断,然后key:=0;
应该可以。

 
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;
 
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = VK_DOWN then
begin
key := #0;
Table1.Prior;
end;
end;

 
If dbgrid1.focued then
在 dbgrid1.dbdate.beforeinsert事件中: Abort;
 
要使其不自动增加记录,只是屏蔽DOWN键是不行的。
因为TAB,INSERT键都可以增加记录。
如果只有菜单或按键才能加记录,可以这样。
1.在FORM的PRIVATE中设一标志,区分是不可以
增加.
CANINSERT:BOOLEAN
2.在TABLE或其它数据集的BEFOREINSERT中加入以
下代码:
IF NOT CANINSERT
ABORT;
3.在菜单的命令中
CANINSERT:=TRUE;
TABLE1.APPEND;
CANINSERT:=FALSE;
 
应该是mech的方法,在Table的事件onNewRecord或BeforeInsert过程中处理,
而不是DBGRID的按键事件
 
多人接受答案了。
 
后退
顶部