gpt4 book ai didi

delphi - 在 Delphi 10.1 Berlin 中使用 VCL 样式时,TSaveDialog 的属性 "ofOverwritePrompt"不起作用

转载 作者:行者123 更新时间:2023-12-03 14:47:48 25 4
gpt4 key购买 nike

  1. 创建新的 VCL Forms 应用程序
  2. 在主窗体上添加一个Tbutton和一个TSaveDialog

  3. 在 SaveDialog1 的属性中将“ofOverwritePrompt”设置为 True

  4. 用途:

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    SaveDialog1.Execute();
    end;
  5. 运行应用程序。按按钮执行保存对话框。尝试保存到已存在的文件。如果您想要替换该文件,则会出现一个消息框。按取消。到目前为止一切都很好。关闭应用程序。

  6. 转至项目/选项/应用程序/外观并选择自定义样式(例如 Amakrits)。将 Amakrits 设置为默认样式。

  7. 按照上面#5 中的方式运行应用程序。仅显示消息框的一小部分。您必须按 Enter 才能继续。

(使用 TFileSaveDialog 将给出相同的结果)

如果我使用 Delphi XE8 编译并运行应用程序,那就没问题了,因为即使选择了其他样式,保存对话框窗口似乎也使用默认的 Windows 样式。

编辑:我有 Windows 10 专业版。源代码使用 Delphi 10.1 Berlin 编译为 win32。替换消息框部分隐藏。仅显示了左上角的一小部分,见图。

The replace message box is partly hidden. Only a small top left part is shown.

这里是用XE8 win32编译的:

enter image description here

诗。我使用默认的 100% 比例因子。

用win64(Delphi 10.1 Berlin)编译似乎没问题:

enter image description here

所以,编译为 win32 对我来说不起作用,但 64 位可以。有什么线索吗?

编辑:尝试使用“GetSaveFileName(OFN)”在 win32 中也不起作用(win 64 也可以):

enter image description here

最佳答案

您可以使用 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;

enter image description here

关于delphi - 在 Delphi 10.1 Berlin 中使用 VCL 样式时,TSaveDialog 的属性 "ofOverwritePrompt"不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38485043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com