gpt4 book ai didi

Delphi Xe2 与 Firemonkey : Can you have a non-client area that is painted in a style other than the default Windows nonclient paint style?

转载 作者:行者123 更新时间:2023-12-03 14:37:17 25 4
gpt4 key购买 nike

这是我使用 firemonkey + Delphi XE2 制作的 Delphi 应用程序的示例。

如您所见,您可以使用 Firemonkey 中的视觉样式“样式书”来自定义窗口框架内大多数内容的外观。然而,窗框的外部是使用 Windows 决定的任何样式绘制的。现在,如果我使用 VCL 而不是 Firemonkey,我可以应用“VCL 样式”并将整个 VCL 应用程序“换肤”为深色配色方案。

我的猜测是 Delphi XE2 + Firemonkey 还不可能做到这一点。谁能展示如何做到这一点?

enter image description here

在设计时,表单的“预览”会显示一个漂亮的黑色边框。但是当我运行我的应用程序时,Windows XP“Luna”主题边框(下图中的蓝色部分)看起来很糟糕。讽刺的是,VCL 比 Firemonkey 更漂亮(在带有样式的 XE2 中)...

最佳答案

您可以像往常一样创建一个 VCL 表单应用程序,如果您喜欢的话可以使用样式,在运行时加载您的 Firemonkey 表单并将您的 VCL 表单设置为其父表单:

uses
FMX.Platform.Win, FMX.Forms,
Unit2;

procedure TForm1.FormCreate(Sender: TObject);
var
Form2: TForm2;
begin
Form2 := TForm2.Create(nil);
Form2.BorderStyle := FMX.Forms.TFmxFormBorderStyle.bsNone;
Form2.SetBounds(0, 0, ClientWidth, ClientHeight);
Winapi.Windows.SetParent(FmxHandleToHWND(Form2.Handle), Handle);
Form2.Show;
end;

在下面的截图中,Form1是VCL应用程序主窗体(Carbon风格),带有按钮的深灰色区域是嵌入的Firemonkey窗体:

Firemonkey form embedded in a VCL form

请注意,我没有处理父窗口的大小调整 - 它也应该调整嵌入表单的大小,模拟 alClient 对齐方式。这种方法似乎存在许多潜在问题 - 我认为 IDE 不允许您轻松地将 Firemonkey 表单与 VCL 表单混合是有原因的 - 它会警告可能的“编译错误或意外行为”。

关于Delphi Xe2 与 Firemonkey : Can you have a non-client area that is painted in a style other than the default Windows nonclient paint style?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9013285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com