我有一个带有小型表单类的 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;
一切似乎都很好。但问题是当用户最小化主窗体时,小窗体也被最小化了。如何始终将小窗体保持在屏幕上而不连接到主窗体?理想情况下,我希望它永远放在最前面。
将 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
。