Delphi7字体对话框在Windows 7上过时了

时间:2015-01-21 14:19:28

标签: delphi delphi-7

  • 左 - 现代应用程序Win7的对话
  • 右键 - 我的Delphi7应用程序的Win7对话框

如何使我的dlg现代化? (如何修补Delphi7)

Font

1 个答案:

答案 0 :(得分:6)

对于Windows 7及更高版本,要显示的新对话框的违规部分是回调。以下是“Font Dialog Box”的引用:

  

如果在不创建自定义模板的情况下启用了挂钩过程,则   早期Windows版本的默认ChooseFont模板将是   加载。

您可以通过修改“dialogs.pas”的副本并将其放在当前项目的源文件夹中来消除钩子过程。

function TFontDialog.Execute: Boolean;
  ...
//    Flags := Devices[FDevice] or (CF_INITTOLOGFONTSTRUCT or CF_ENABLEHOOK);
    Flags := Devices[FDevice] or CF_INITTOLOGFONTSTRUCT;
  ...
//    hWndOwner := Application.Handle;
    hWndOwner := GetActiveWindow;
  ...

后一种修改用于在合理的位置显示对话框。禁用挂钩过程后,VCL将无法使对话框居中。您还将失去“应用”按钮功能和其他事件(OnShow / Close)。