让没有连续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。