すでにTSaveDialogと[ofOverwritePromt]の考え方については、Delphi overwrite existing file on save dialogに簡単な質問があります。TSaveDialogファイルの拡張子と[ofOverwritePromt]の問題
だから私の問題/シナリオは以下の通りです:
- を私は「PDF(* .PDF)にフィルタを設定私は
Options
- に
[ofOverwritePromt]
を設定TSaveDialog
- 持って| * .PDFを「
- フィルタ索引は、だから今、私はプログラムを実行し、ダイアログを呼び出す1
に設定されています。私は(入力しない)、マウスやキーボードを使用したSELECTファイルが存在する場合、ダイアログはメッセージで上書きするために私に尋ね保存:
しかし、私は同じアクションを行いますが、せずに「試験」のようなファイル名を入力した場合保存ダイアログで拡張子を指定しても上書きは確認されません。 実際には、 "C:\ Users \ xxx \ Desktop \ Test.pdf"ではなく、 "C:\ Users \ xxx \ Desktop \ Test"という別のファイル名を返します。 だから通常、私はこのようにそれを扱う...ダイアログがファイルを保存するように要求されます場合は一種の素敵ではないですが、拡張子を入力する必要があります。
repeat
{ Ask for the file if not silent }
if not dlgSave.Execute then
Exit;
{ Read the filename from the save dialog }
LTempFile := dlgSave.FileName;
if not SameText(ExtractFileExt(LTempFile), '.pdf') then
begin
{ Add the extension }
LTempFile := LTempFile + '.pdf';
{ As we bypassed the overwrite check in dialog do it now }
if FileExists(LTempFile) then
if MsgWarn(Format('%s already exists. Replace?', [ExtractFileName(LTempFile)]), mbOKCancel) <> mrOk then
Continue;
end;
Break;
until False;
は、よりエレガントなことを行うにはそこの方法です標準ダイアログをカスタマイズすることなく?
ありがとうございました!どのように私はそのプロパティを逃すことができます...多分それは休暇の前日です:D –
あなたは大歓迎です。あなたが満足している場合は、回答を受け入れたものとしてマークしてください。 – Dsm