0

私は完全に通常の名前を付けて保存ダイアログを使用しています (Delphi Win32 XE2 では、システムは Win 7 /64 です)、OFN_OVERWRITEPROMPT (または Delphi ラッパーの同等のもの) を設定しますdlgSave.Options := [ofPathMustExist, ofOverwritePrompt];。したがって、既存のファイルを選択すると、ダイアログはファイルを上書きする確認を求めます。 .

ファイルを選択し、同じダイアログでそのファイルを削除し、[OK] を押すと、ダイアログは (既に削除された) ファイルを上書きしてもよいかどうかを尋ねます。どうやら、ダイアログはファイルシステムではなく、事前にロードされたリストに対してファイルの存在をチェックします。この問題は Delphi に固有のものではなく、メモ帳でも非常に簡単に表示できます。

  • Notepad.exe を実行します。
  • テキストを入力してください
  • ファイルとして保存
  • [ファイル] [名前を付けて保存] を再度クリックし、[名前を付けて保存] ダイアログで次の操作を行います。
    • 同じファイルをクリックして選択し、
    • ファイルを右クリックして削除し、
    • [OK] をクリックします。

ファイルはもう存在しませんが、上書きプロンプトが引き続き表示されます。

このマイナーだが迷惑な Windows のバグを回避する方法を誰か提案してもらえますか? メッセージ処理/コールバック/フックが必要になると思いますか? モーダル SaveAs ダイアログが開いている間にコード内のファイルの存在を確認する方法は?

4

0 に答える 0