delphi 如何使一个窗体独立于另一个窗体?

0g0grzrc  于 2023-04-20  发布在  其他
关注(0)|答案(1)|浏览(210)

我有一个VCL应用程序,它有一个小的表单类,它只是一个普通的表单,下面是FormCreate事件。

procedure TSmallForm.FormCreate(Sender: TObject);
begin
  FormStyle := fsStayOnTop;
  self.BorderStyle := bsNone;

  AlphaBlend := True;
  AlphaBlendValue := 50;
  self.Color := clRed;

  left := 100;
  top := 100;
  width := 15;
  height := 15;

  self.Show;
end;

我在主窗体上有一个按钮。当用户单击按钮时,我创建一个小窗体。

procedure TForm1.Button1Click(Sender: TObject);
begin
  var f :=  TSmallForm.Create(nil);
end;

一切似乎都很好。但问题是,当用户最小化主窗体时,小窗体也被最小化了。如何始终保持小窗体在屏幕上,而不连接到主窗体?理想情况下,我希望总是把它放在最上面。

cgh8pdjw

cgh8pdjw1#

将WndParent设置为零将在CreateParams中实现这个技巧:

type
  TSmallForm = class(TForm)
  private
    { Private declarations }
  protected
    { Protected declarations }
    procedure CreateParams(var Params: TCreateParams); override;
  public
    { Public declarations }
  end;

var
  SmallForm: TSmallForm;

implementation

{$R *.dfm}

{ TSmallForm}

procedure TSmallForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.WndParent := 0;
end;

要保持窗体在顶部,请将FormStyle设置为fsStayOnTop

相关问题