Delphi child window 上的 VCL 样式
Delphi VCL style on child window
我有一个带有表单和 OnClick 的简单单元,甚至可以在单击主表单时创建一个新表单。
unit DPS.Main;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, DPS.Materials, System.Generics.Collections, Vcl.ExtCtrls, DPS.ChildForm;
type
TForm6 = class( TForm )
procedure FormClick( Sender : TObject );
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
{$R *.dfm}
procedure TForm6.FormClick( Sender : TObject );
var
Form1 : TForm;
begin
Form1 := TForm.Create( Self );
//Form1.Parent := Self;
Form1.Show();
end;
end.
如果我没有为创建的表单分配 parent,我将获得默认的 Windows 11 样式。
如果我取消注释行
//Form1.Parent := Self;
我得到了性感 Windows 7 舔油漆。呃。
这似乎是默认的 VCL 样式外观,令人惊讶的是,如果我将外观更改为内置 VCL 样式之一(例如碳),这不是问题。
对此有什么想法吗?
这与 VCL 样式无关,它是标准 Windows 行为。
您在任何主题 Windows 版本上都会获得相同的行为,而不仅仅是在 Delphi 应用程序中。
你真的不应该有一个带边框的 window 作为 child 另一个 window 在 non-MDI设置。这是非常不寻常和奇怪的。几乎没有 Windows 应用程序这样做。 (而且 Win32 MDI 也很古老。)
它有效(尽管有一些怪癖),但 Windows 不会像您观察到的那样为 child window 提供全套视觉效果。
对此你能(或应该)做的不多。
你最好的选择是不要做这样奇怪的事情:不要让带边框的 window 成为另一个 window 的 child。
我有一个带有表单和 OnClick 的简单单元,甚至可以在单击主表单时创建一个新表单。
unit DPS.Main;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, DPS.Materials, System.Generics.Collections, Vcl.ExtCtrls, DPS.ChildForm;
type
TForm6 = class( TForm )
procedure FormClick( Sender : TObject );
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
{$R *.dfm}
procedure TForm6.FormClick( Sender : TObject );
var
Form1 : TForm;
begin
Form1 := TForm.Create( Self );
//Form1.Parent := Self;
Form1.Show();
end;
end.
如果我没有为创建的表单分配 parent,我将获得默认的 Windows 11 样式。
如果我取消注释行
//Form1.Parent := Self;
我得到了性感 Windows 7 舔油漆。呃。
这似乎是默认的 VCL 样式外观,令人惊讶的是,如果我将外观更改为内置 VCL 样式之一(例如碳),这不是问题。
对此有什么想法吗?
这与 VCL 样式无关,它是标准 Windows 行为。
您在任何主题 Windows 版本上都会获得相同的行为,而不仅仅是在 Delphi 应用程序中。
你真的不应该有一个带边框的 window 作为 child 另一个 window 在 non-MDI设置。这是非常不寻常和奇怪的。几乎没有 Windows 应用程序这样做。 (而且 Win32 MDI 也很古老。)
它有效(尽管有一些怪癖),但 Windows 不会像您观察到的那样为 child window 提供全套视觉效果。
对此你能(或应该)做的不多。
你最好的选择是不要做这样奇怪的事情:不要让带边框的 window 成为另一个 window 的 child。