我曾经写过几十个Vcl操作的公共调用,现把以下代码给你使用。
procedure EnterToTab(aForm: TForm; var Key: Char);
begin
if Key = #13 then
begin
key := #0;
aForm.Perform(CM_DialogKey, VK_TAB, 0);
end;
end;
看看如下代码吧:
procedure TForm1.FormKeyPress(sender : TObject;varkey : char) ;
begin
if key=13 then
if not (ActiveControl is TDBgrid) then
begin
key := 0 ;
perform(WM_NEXTDLGCTL,0,0) ;
end
else if (ActiveControl is TDBgrid) then
begin
with TDBgrid(ActiveControl) do
if Selectedindex<(FiledCount-1) then
Selectedindex := selectindex+1
else
Selectedindex := 0 ;
end ;
end ;
1、如果是用TEdit或TComcobox和TDBEdit,在Form1的onkeyDown写:
if (Key=VK_RETURN) THEN
ActiveControl:=FindNextControl(TWinControl(Sender),True,True,False);
然后上面的三个组件的OnkeyDown指向Form1的onkeydown就行了。
2、至于TDBgrid,可以参考caili,也可以下载infopower组件的Twwdbgrid组件。
Form.KeyPreview := true; 在Form的KeyDown中
if Key = VK_RETURN then
begin
if ActiveControl is TDBGrid or ... then
PostMessage(ActiveControl.Handle, WM_KEYDOWN, VK_TAB, 0);
else
PostMessage(Handle, WM_KEYDOWN, VK_TAB, 0);
Key := 0;
end