{不知道楼主的Panel、Edit和Frame是怎么放置的 因此用一个PageControl做一下演示 当然,这只是给楼主一个思路}{PageControl上有多页TabSheet,每页上有多个Edit。 只有单击Edit改变焦点有效,用Tab键改变焦点无效}procedure TForm1.FormCreate(Sender: TObject); var I, J : integer; begin for J := Self.PageControl1.PageCount-1 downto 0 do for I := Self.PageControl1.Pages[J].ControlCount-1 downto 0 do if Self.PageControl1.Pages[J].Controls[I] is TEdit then TEdit(Self.PageControl1.Pages[J].Controls[I]).OnClick := Self.EdtClick; end;procedure TForm1.EdtClick(Sender: TObject); begin TEdit(Sender).Parent.Tag := TEdit(Sender).Handle; end;procedure TForm1.PageControl1Change(Sender: TObject); var H: hWnd; begin H := Self.PageControl1.ActivePage.Tag; if H <> 0 then Windows.SetFocus(H); end;
procedure TForm1.FormCreate(Sender: TObject); var I, J : integer; begin for J := Self.PageControl1.PageCount-1 downto 0 do for I := Self.PageControl1.Pages[J].ControlCount-1 downto 0 do if Self.PageControl1.Pages[J].Controls[I] is TEdit then TEdit(Self.PageControl1.Pages[J].Controls[I]).OnClick := Self.EdtClick; end;procedure TForm1.EdtClick(Sender: TObject); begin TEdit(Sender).Parent.Tag := TEdit(Sender).Handle; end;procedure TForm1.PageControl1Change(Sender: TObject); var H: hWnd; begin H := Self.PageControl1.ActivePage.Tag; if H <> 0 then Windows.SetFocus(H); end;
因此用一个PageControl做一下演示
当然,这只是给楼主一个思路}{PageControl上有多页TabSheet,每页上有多个Edit。
只有单击Edit改变焦点有效,用Tab键改变焦点无效}procedure TForm1.FormCreate(Sender: TObject);
var
I, J : integer;
begin
for J := Self.PageControl1.PageCount-1 downto 0 do
for I := Self.PageControl1.Pages[J].ControlCount-1 downto 0 do
if Self.PageControl1.Pages[J].Controls[I] is TEdit then
TEdit(Self.PageControl1.Pages[J].Controls[I]).OnClick := Self.EdtClick;
end;procedure TForm1.EdtClick(Sender: TObject);
begin
TEdit(Sender).Parent.Tag := TEdit(Sender).Handle;
end;procedure TForm1.PageControl1Change(Sender: TObject);
var
H: hWnd;
begin
H := Self.PageControl1.ActivePage.Tag;
if H <> 0 then Windows.SetFocus(H);
end;
var
I, J : integer;
begin
for J := Self.PageControl1.PageCount-1 downto 0 do
for I := Self.PageControl1.Pages[J].ControlCount-1 downto 0 do
if Self.PageControl1.Pages[J].Controls[I] is TEdit then
TEdit(Self.PageControl1.Pages[J].Controls[I]).OnClick := Self.EdtClick;
end;procedure TForm1.EdtClick(Sender: TObject);
begin
TEdit(Sender).Parent.Tag := TEdit(Sender).Handle;
end;procedure TForm1.PageControl1Change(Sender: TObject);
var
H: hWnd;
begin
H := Self.PageControl1.ActivePage.Tag;
if H <> 0 then Windows.SetFocus(H);
end;