Delphi 如何使TSaveDialog定制dpi感知/可扩展?
使用Delphi2010,我使用资源模板方法定制了一个TSaveDialog,如Delpi的ExtDlgs中的TOpenPictureDialog所示。 模板方法允许我在“系统保存”对话框中成功插入包含多个控件的表单。只要Windows DPI设置为96,该选项就可以正常工作。通过用户定义(文本)缩放或hdpi监视器,插入的表单仅部分可见。这当然是由于Form.Scaled=True导致包含控件的Form plus缩放(变大)。当前,模板文件(例如TOpenPictureDialog中使用的默认文件)包含固定大小的对话框和静态文本元素,用于定义插入表单将占用的空间 我可以想出几个变通办法:Delphi 如何使TSaveDialog定制dpi感知/可扩展?,delphi,topendialog,Delphi,Topendialog,使用Delphi2010,我使用资源模板方法定制了一个TSaveDialog,如Delpi的ExtDlgs中的TOpenPictureDialog所示。 模板方法允许我在“系统保存”对话框中成功插入包含多个控件的表单。只要Windows DPI设置为96,该选项就可以正常工作。通过用户定义(文本)缩放或hdpi监视器,插入的表单仅部分可见。这当然是由于Form.Scaled=True导致包含控件的Form plus缩放(变大)。当前,模板文件(例如TOpenPictureDialog中使用的默认
- 无形式缩放(不是hdpi监视器的真正解决方案)
- 根据屏幕提供不同的模板。PixelsPerInch/96:100%125%,150% 200%等)
- 使用IFileDialogCustomize界面,但这对于我想要的东西来说还不够表达
有这样的东西吗?听起来不太对。对话框资源使用相对于系统字体的单位系统。它应该尊重缩放。我不认为Scaled属性是相关的,该对话框是一个系统对话框,而不是Delphi表单。最后,IFileDialogCustomization机制允许您避免向用户展示那些可怕的15年前的xp遗留对话框。不是系统对话框不可伸缩:插入的自定义Delphi表单不适合模板创建的空间。如果没有Scaled=True,则表单的大小和适合性不正常。如前所述:IFileDialogCustomization不适用于我(其中一个是XP支持),在我必须支持XP的糟糕日子里,我使用XP模板,而IFileDialogCustomization适用于Vista+。然后,我没有把可怕的遗留对话框强加给我的所有用户。如果我是你,我就不会试图在那里塞进德尔菲表格。按预期方式使用对话框资源。如果必须使用非标准控件,则在Delphi中构建整个文件对话框。您当前的解决方案并不是使用本机文件对话框。您正在使用传统对话框。一个纯粹的Delphi文件对话框可能不会像现在这样刺耳。