delphi 获取上一个焦点位置
时间: 2023-12-06 10:44:46 浏览: 135
可以使用`Screen.ActiveControl`来获取当前拥有焦点的控件,然后在控件失去焦点时记录下来,以备下次使用。
例如,在一个`TForm`中,你可以在`OnDeactivate`事件中记录当前焦点控件:
```delphi
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure FormDeactivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
FLastActiveControl: TWinControl;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormDeactivate(Sender: TObject);
begin
FLastActiveControl := Screen.ActiveControl;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if FLastActiveControl <> nil then
begin
FLastActiveControl.SetFocus;
end;
end;
end.
```
在上面的例子中,`FLastActiveControl`是一个私有变量,用来记录上一个拥有焦点的控件。在`FormDeactivate`事件中,将当前拥有焦点的控件赋值给`FLastActiveControl`。当你需要获取上一个焦点位置时,只需要调用`FLastActiveControl.SetFocus`即可将焦点设置回上一个控件。
阅读全文