Delphi。如何禁用 TFileOpenDialog 和 TOpenDialog 的 Vcl 主题
Delphi. How to disable Vcl Themes for TFileOpenDialog and TOpenDialog
如何禁用 TFileOpenDialog 和 TOpenDialog 的 Vcl 主题?
我试试
procedure TForm1.FormCreate(Sender: TObject);
var
chosenDirectory: String;
openDialog : TFileOpenDialog;
begin
TStyleManager.Engine.RegisterStyleHook(TFileOpenDialog, TStyleHook);
chosenDirectory:='';
try
openDialog:=TFileOpenDialog.Create(Self);
openDialog.Options := [fdoPickFolders];
// var 2
// Not works
//TStyleManager.Engine.RegisterStyleHook(TFileOpenDialog, TStyleHook);
if openDialog.Execute then
chosenDirectory:=openDialog.FileName;
finally
openDialog.Free;
end;
end;
但这行不通。
我尝试了变体 2。它也不起作用。
它不起作用,因为 FileOpenDialog 是系统 windows 对话框,而不是在 VCL 中实现,因此您需要添加基于 class 名称的系统挂钩。此外,您还需要为该对话框中所有 Windows 控件的 class 名称添加挂钩。
尝试这样的事情。请注意,这将影响所有系统对话框。
TStyleManager.Engine.RegisterSysStyleHook('#32770', TSysStyleHook);
TStyleManager.Engine.RegisterSysStyleHook('ReBarWindow32', TSysStyleHook);
TStyleManager.Engine.RegisterSysStyleHook('Static', TSysStyleHook);
TStyleManager.Engine.RegisterSysStyleHook('Edit', TSysStyleHook);
TStyleManager.Engine.RegisterSysStyleHook('ScrollBar', TSysStyleHook);
TStyleManager.Engine.RegisterSysStyleHook('ToolbarWindow32', TSysStyleHook);
TStyleManager.Engine.RegisterSysStyleHook('ComboBox', TSysStyleHook);
禁用通用对话框样式的正确方法是删除 TStyleManager.SystemHooks 属性.
的 shDialogs 元素
TStyleManager.SystemHooks := [shMenus, shToolTips];
如何禁用 TFileOpenDialog 和 TOpenDialog 的 Vcl 主题?
我试试
procedure TForm1.FormCreate(Sender: TObject);
var
chosenDirectory: String;
openDialog : TFileOpenDialog;
begin
TStyleManager.Engine.RegisterStyleHook(TFileOpenDialog, TStyleHook);
chosenDirectory:='';
try
openDialog:=TFileOpenDialog.Create(Self);
openDialog.Options := [fdoPickFolders];
// var 2
// Not works
//TStyleManager.Engine.RegisterStyleHook(TFileOpenDialog, TStyleHook);
if openDialog.Execute then
chosenDirectory:=openDialog.FileName;
finally
openDialog.Free;
end;
end;
但这行不通。 我尝试了变体 2。它也不起作用。
它不起作用,因为 FileOpenDialog 是系统 windows 对话框,而不是在 VCL 中实现,因此您需要添加基于 class 名称的系统挂钩。此外,您还需要为该对话框中所有 Windows 控件的 class 名称添加挂钩。
尝试这样的事情。请注意,这将影响所有系统对话框。
TStyleManager.Engine.RegisterSysStyleHook('#32770', TSysStyleHook);
TStyleManager.Engine.RegisterSysStyleHook('ReBarWindow32', TSysStyleHook);
TStyleManager.Engine.RegisterSysStyleHook('Static', TSysStyleHook);
TStyleManager.Engine.RegisterSysStyleHook('Edit', TSysStyleHook);
TStyleManager.Engine.RegisterSysStyleHook('ScrollBar', TSysStyleHook);
TStyleManager.Engine.RegisterSysStyleHook('ToolbarWindow32', TSysStyleHook);
TStyleManager.Engine.RegisterSysStyleHook('ComboBox', TSysStyleHook);
禁用通用对话框样式的正确方法是删除 TStyleManager.SystemHooks 属性.
的 shDialogs 元素TStyleManager.SystemHooks := [shMenus, shToolTips];