- 创建一个新的 VCL Forms 应用程序
在主窗体上添加一个 Tbutton 和一个 TSaveDialog
在 SaveDialog1 的属性中将“ofOverwritePrompt”设置为 True
-
Use:
procedure TForm1.Button1Click(Sender: TObject);
begin
SaveDialog1.Execute();
end;
运行应用程序。按按钮执行保存对话框。尝试保存到已存在的文件。
如果您想要替换该文件,则会出现一个消息框。按取消。到目前为止一切都很好。关闭应用程序。
转到项目/选项/应用程序/外观并选择自定义样式(例如 Amakrits)。将 Amakrits 设置为默认样式。
- 如上面#5 所示运行应用程序。仅显示消息框的一小部分。您必须按 Enter 才能继续。
(使用 TFileSaveDialog 将给出相同的结果)
如果我使用 Delphi XE8 编译并运行该应用程序,那就没问题了,因为即使选择了其他样式,保存对话框窗口似乎也使用默认的 Windows 样式。
编辑:
我有 Windows 10 专业版。源代码使用 Delphi 10.1 Berlin 编译为 win32。
替换消息框部分隐藏。仅显示了左上角的一小部分,见图。
这里是用XE8 win32编译的:
诗。我使用默认的 100% 比例因子。
用win64(Delphi 10.1 Berlin)编译似乎没问题:
因此,编译为 win32 对我来说不起作用,但 64 位可以。有什么线索吗?
编辑:尝试使用“GetSaveFileName(OFN)”在 win32 中也不起作用(win 64 没问题):
您可以使用对话框样式代码来避免此问题VCL Styles Utils项目。
只需将这些单元添加到您的项目中即可。
uses
Vcl.Styles.Utils.Menus, //Popup and Shell Menus (class #32768)
Vcl.Styles.Utils.Forms, //dialogs box (class #32770)
Vcl.Styles.Utils.StdCtrls, //buttons, static, and so on
Vcl.Styles.Utils.ComCtrls, //SysTreeView32, SysListView32
Vcl.Styles.Utils.ScreenTips, //tooltips_class32 class
Vcl.Styles.Utils.SysControls,
Vcl.Styles.Utils.SysStyleHook;
{$R *.dfm}
procedure TForm26.Button1Click(Sender: TObject);
begin
UseLatestCommonDialogs := false;
SaveDialog1.Execute();
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)