Delphi 切换主题时 VCL 应用程序布局发生变化
Delphi VCL application layout changes when switching theme
我有一个玩具程序,它看起来像这样:
这是代码:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Clipbrd, System.Actions,
Vcl.ActnList, Vcl.Themes, Vcl.StdActns;
type
TForm1 = class(TForm)
txt: TMemo;
ActionList1: TActionList;
act_change_theme: TAction;
act_clear_text: TAction;
is_autocopy: TCheckBox;
is_autotrim: TCheckBox;
procedure act_change_themeExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
var
is_dark: Boolean;
implementation
{$R *.dfm}
procedure TForm1.act_change_themeExecute(Sender: TObject);
begin
if is_dark then
begin
TStyleManager.TrySetStyle('Windows', false);
is_dark := false;
end
else
begin
TStyleManager.TrySetStyle('Carbon', false);
is_dark := true;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
is_dark := true;
end;
end.
当我使用快捷键 Ctrl+d 更改主题时,布局会发生一点变化。
怎样才能有一个固定的布局?您可以从 https://www.dropbox.com/s/gtbwis1c6p9j57l/editor.rar?dl=1
下载该项目
Windows 10 在客户区外用深色 1 像素宽的线条绘制 window 的边框。此外,在这条 1 像素线之外,它绘制了 6 或 7 像素宽的光影或可选的完全透明。 (阴影/无阴影可从 Performance
设置中选择。
大多数(如果不是全部)样式(我没有检查)以更传统的方式绘制边框,具有清晰可见的 7 像素宽边框。
此处以Windows10(无样式)为例:
这里是深色风格(Carbon):
最后还有Light
风格
使用 Light
和 Carbon
样式可以得到相似的明暗布局。
我有一个玩具程序,它看起来像这样:
这是代码:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Clipbrd, System.Actions,
Vcl.ActnList, Vcl.Themes, Vcl.StdActns;
type
TForm1 = class(TForm)
txt: TMemo;
ActionList1: TActionList;
act_change_theme: TAction;
act_clear_text: TAction;
is_autocopy: TCheckBox;
is_autotrim: TCheckBox;
procedure act_change_themeExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
var
is_dark: Boolean;
implementation
{$R *.dfm}
procedure TForm1.act_change_themeExecute(Sender: TObject);
begin
if is_dark then
begin
TStyleManager.TrySetStyle('Windows', false);
is_dark := false;
end
else
begin
TStyleManager.TrySetStyle('Carbon', false);
is_dark := true;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
is_dark := true;
end;
end.
当我使用快捷键 Ctrl+d 更改主题时,布局会发生一点变化。
怎样才能有一个固定的布局?您可以从 https://www.dropbox.com/s/gtbwis1c6p9j57l/editor.rar?dl=1
下载该项目Windows 10 在客户区外用深色 1 像素宽的线条绘制 window 的边框。此外,在这条 1 像素线之外,它绘制了 6 或 7 像素宽的光影或可选的完全透明。 (阴影/无阴影可从 Performance
设置中选择。
大多数(如果不是全部)样式(我没有检查)以更传统的方式绘制边框,具有清晰可见的 7 像素宽边框。
此处以Windows10(无样式)为例:
这里是深色风格(Carbon):
最后还有Light
风格
使用 Light
和 Carbon
样式可以得到相似的明暗布局。