我有一個帶有表單和 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.
如果我沒有為創建的表單分配父級,我將獲得默認的 Windows 11 樣式。

如果我取消注釋該行
//Form1.Parent := Self;
我得到了性感的 Windows 7 油漆。呃。

這似乎是默認的 VCL 樣式皮膚,令人驚訝的是,如果我將外觀更改為內置 VCL 樣式之一,例如碳,這不是問題。
對此有什么想法嗎?
uj5u.com熱心網友回復:
這與 VCL 樣式無關,它是標準的 Windows 行為。
您可以在任何主題 Windows 版本上獲得相同的行為,而不僅僅是在 Delphi 應用程式中。
在非 MDI 設定中,您實際上不應該將有邊框的視窗作為另一個視窗的子視窗。這是非常不尋常和奇怪的。幾乎沒有 Windows 應用程式這樣做。(Win32 MDI 也很古老。)
它可以作業(盡管有一些怪癖),但正如您所觀察到的,Windows 不會為子視窗提供全套視覺效果。
對此,您可以(或應該)做的不多。
你最好的選擇是不要做這樣奇怪的事情:不要讓一個有邊框的視窗成為另一個視窗的子視窗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/481119.html
標籤:德尔福
下一篇:如何從資源中播放wav檔案
