如何让一个表单独立于另一个表单?

问题描述 投票:0回答:1

我有一个带有小型表单类的 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;

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

forms delphi vcl
1个回答
0
投票

将 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

© www.soinside.com 2019 - 2024. All rights reserved.