我觉得hubdog的解法太麻烦,每个form都要判断一下!
下面的解法可以在整个程序中有效!
也就是说,只要在主窗口中定义一下,整个程序中都有效:
1、在主窗口中定义如下函数:
public
{ Public declarations }
procedure AppMessage(var Msg: TMsg;
var Handled: Boolean);
2、编写过程体如下:
procedure TFormMain.AppMessage(var Msg: TMsg;
var Handled: Boolean);
begin
if (Msg.message)=(WM_KEYDOWN)
then
if (Screen.ActiveForm.ActiveControl is TEdit)
and (Msg.wParam=VK_RETURN )
then
Msg.wParam:=VK_TAB;
end;
注:若不止是在TEdit中要实现此功能,还要在别的构件(如TComboBox等)中有效,
则只需在第二个IF条件中加入即可!
3、在主窗口的CREATE时间中加入如下语句:
procedure TFormMain.FormCreate(Sender: TObject);
begin
Application.onMessage:=AppMessage;
end;
:
procedure TForm1.FormKeyPress(Sender: TObject;
var Key: Char);
begin
if key=#13 then
{ 判断是按回车键}
begin
key:=#0;
perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
end;
end;
用这个方法很好解决
这个问题太简单了,解决办法如下:
例如:Edit1,Edit2为两个文本输入框.
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if key=#13 then
Edit2.SetFocus;
end;
这样就可以了。