在 dbgrid 中按向下箭头会插入一新行,如何得知这一事件?(50分)

  • 主题发起人 microwave
  • 开始时间
M

microwave

Unregistered / Unconfirmed
GUEST, unregistred user!
我的表中第一栏是ID,我想在插入新行时在这一栏先自动写入ID号(由生成器生成),如何实现?
 
KeyDown事件的判断
 
在数据库中设置成自动增长列不就可以了
 
keydown只能得到向下箭头这一事件,并不知是不是新行,
 
after insert 事件
DBGrid1.Fields[0].Text:='asdf';
 
有这个事件(AFTER INSERT)吗?怎么在 Object inspector 中看不到?
 
keydown以后判断一下是否已经有id了
 
向下箭的虚拟码是什么?
 
TO qianwt:
我用的是 interbase 没有自动增长列.
 
在 DBGrid1.Fields[0].Text:= 此句中如何调用生成器呢?
 
ID字段是自动增1类型的吗?
如果是,你就不用理会这个字段了,数据库会帮你完成的;
如果不是可以这样写在数据集新增记录的事件里
ADOTable1NewRecord(DataSet: TDataSet);
 
我不是用ADO,我用的是IBX
 
为何我这样写(尚未使用生成器,只是个例子)后,新增的那一栏中并没有'1'而要等再增一行后那个
'1'才显示出来?由于可以继续增加证明'1'已经写入了,只是没有显示出来,如何让它立即显示出来?
if key=vk_down then
if vf.Fields[0].Text ='' then
vf.Fields[0].Text :='1'(这个值如何才能从生成器中得到?);
 
在 dbgrid.datasource中写如下事件

procedure TForm1.DataSource1StateChange(Sender: TObject);
begin
if datasource1.State=dsinsert then
showmessage('你插入了一个新的行!');
end;
 
DataSet.OnInsert
 
为何我这样写(尚未使用生成器,只是个例子)后,新增的那一栏中并没有'1'而要等再增一行后那个
'1'才显示出来?由于可以继续增加证明'1'已经写入了,只是没有显示出来,如何让它立即显示出来?
if key=vk_down then
if vf.Fields[0].Text ='' then
vf.Fields[0].Text :='1'(这个值如何才能从生成器中得到?);
 
上面的都在说什么啊?
有没有用过?别乱说哦
在table里的onNewRecord里给ID号赋值就行了
别在grid里搞什么key
实例:
procedure TDM1.tblDetailNewRecord(DataSet: TDataSet);
begin
DataSet.FieldByName('Code').value:=datetimeToStr(now);
DataSet.FieldByName('InputDate').value:=Now;
end;
 
搞定,放分,
 
顶部