Delphi 德尔菲。如何为TFileOpenDialog和TopEndDialog禁用Vcl主题

Delphi 德尔菲。如何为TFileOpenDialog和TopEndDialog禁用Vcl主题,delphi,styles,themes,vcl,Delphi,Styles,Themes,Vcl,如何为TFileOpenDialog和TopEndDialog禁用Vcl主题 我试着 但这不是工作。 我尝试变体2。它也不起作用。它不起作用,因为FileOpenDialog是系统窗口对话框,而不是在VCL中实现的,所以需要根据类名添加系统钩子。此外,您还需要在此对话框上为所有Windows控件的类名添加挂钩 试试这样的。请注意,这将影响所有系统对话框 TStyleManager.Engine.RegisterSysStyleHook('#32770', TSysStyleHook);

如何为TFileOpenDialog和TopEndDialog禁用Vcl主题

我试着

但这不是工作。
我尝试变体2。它也不起作用。

它不起作用,因为FileOpenDialog是系统窗口对话框,而不是在VCL中实现的,所以需要根据类名添加系统钩子。此外,您还需要在此对话框上为所有Windows控件的类名添加挂钩

试试这样的。请注意,这将影响所有系统对话框

  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);

禁用公共对话框样式的正确方法是删除属性的shDialogs元素

TStyleManager.SystemHooks := [shMenus, shToolTips];

尝试是在获得资源之后,而不是之前。嗯。。。你知道,这是不兼容的。应该类似于使用TStyleManager do SystemHooks:=SystemHooks-[shDialogs]
TStyleManager.SystemHooks := [shMenus, shToolTips];