關于FOCUS的問題----得分好容易啊(50分)

  • 主题发起人 主题发起人 徐杰
  • 开始时间 开始时间

徐杰

Unregistered / Unconfirmed
GUEST, unregistred user!
能否幫我看一下下面的一段代碼.我的意思是七個TEdit都用這個過程,每當在Edit中按ENTER,
則焦點自動移到下一個EDIT上!
但是總是報錯,請各位大俠幫我看一下.

是否有更好的方法呢?

procedure Tmainform.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key='#13' then
begin
case windows.GetFocus of
edit1.handle:edit2.SetFocus;
edit2.handle:edit3.SetFocus;
edit3.handle:edit4.SetFocus;
edit4.handle:edit5.SetFocus;
edit5.handle:edit6.SetFocus;
edit6.handle:edit7.SetFocus;
end;

end;
 
你将他们的的TabOrder的顺序排一下,用以下代码移动焦点:
procedure Tmainform.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
Key:=#0
SelectNext(ActiveControl,True,True);
end;
end;
 
接受答案了.
 

下边是我特意为你写的测试代码,能实现你的要求。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then begin
PostMessage(Handle,WM_NEXTDLGCTL,0,0);
Key:=#0;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
KeyPreview:=True;
end;

end.
 
后退
顶部