让没有连续TabOrder的Edit连续获得焦点 [精华]

来源:互联网 发布:书体坊米芾体 mac 编辑:程序博客网 时间:2024/05/01 01:12

让没有连续TabOrder的Edit连续获得焦点 [精华]

有时候一个界面上存在很多控件,设计时没有合理安排TabOrder,每个窗口控件
获得焦点是根据TabOrder的顺序号来的,为此,我们必须认真地去合理调整好
TabOrder的序号。

下面这个代码则不需要这样,任何时候只要Edit控件获得焦点时,压下回车键,
焦点会进入下一个Edit控件:

procedure TForm1.FormCreate(Sender: TObject);
var
n:integer;
begin
for n:=0 to ControlCount-1 do
if Controls[n] is TEdit then // 把所有存在的TEdit的KeyDown关联到Key_ReturnToTab
   TEdit(Controls[n]).OnKeyDown:=Key_ReturnToTab;
end;

procedure TForm1.Key_ReturnToTab(Sender:TObject;var Key:Word;Shift:TShiftState);
var
TWC:TWinControl;
begin // 这里处理回车键改为换挡键
if key=$D then // 检查是否是回车键的代码
  if Sender is TEdit then
   begin
    TWC:=TWinControl(Sender);
     repeat
      TWC:=FindNextControl(TWC,True,True,False);
     until TWC.ClassName='TEdit';
   TWC.SetFocus;
   end;
end;

FindNextControl(TWC,True,True,False) 函数的最后一个参数,用来定义查找是否
局限在某个父控件范围。大多数情况应该为 True。

原创粉丝点击