各大侠:我用如下代码在DBGRID中实现RETRUN代替TAB的功能,但当在最后一条记录时,按下回车键后却会产生一条空白记录。有办法禁止吗?如何操作?谢谢! if key=#13 then if (ActiveControl is TDbgrid) Then begin With TDbgrid(ActiveControl) Do if Selectedindex<(FieldCount-1) then Selectedindex:=Selectedindex+1 else begin keybd_event(VK_TAB,KEYEVENTF_KEYUP,0, 0); // 或PostMessage(DBGrid1.Handle, WM_KEYDOWN, VK_TAB, 0); // Selectedindex:=0; end; end;
----------------------------------------------
-你的一句话,会令我少走许多弯路,衷心的多谢指点。
procedure TFrom.DBGridEh1KeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin if dbgrideh1.FieldCount<>dbgrideh1.SelectedIndex+1 then dbgrideh1.SelectedIndex:=dbgrideh1.SelectedIndex+1 else begin dbgrideh1.SelectedIndex:=0; table1.Next; end; end; end; 回车后不会产生空白记录,但按TAB 或↓时产生空白记录.
----------------------------------------------
-
那你将begin if dbgrideh1.FieldCount<>dbgrideh1.SelectedIndex+1 then dbgrideh1.SelectedIndex:=dbgrideh1.SelectedIndex+1 else begin dbgrideh1.SelectedIndex:=0; table1.Next; end; 这段写成一个函数,只要是上面说的三个键时就调用它不就可以了吗?1楼的楼主,不知道我这样说你赞成不赞成?
----------------------------------------------
生命中,不断地有人离开或进入。于是,看见的,看不见的;记住的,遗忘了。 生命中,不断地有得到和失落。于是,看不见的,看见了;遗忘的,记住了。 然而,看不见的,是不是就等于不存在?记住的,是不是永远不会消失?