Существует простой вопрос об идее TSaveDialog и [ofOverwritePromt] на Delphi overwrite existing file on save dialog.Расширение файла TSaveDialog и [ofOverwritePromt] issue
Так что мой вопрос/сценарий выглядит следующим образом:
- У меня есть
TSaveDialog
- Я поставил
[ofOverwritePromt]
вOptions
- Я установил фильтр «PDF (* .pdf) | * .pdf "
- индекс фильтра устанавливается на 1
Так что теперь я выполняю программу и вызовите диалог. Если файл я выбираю с помощью мыши или клавиатуры (без ввода) существует, то диалог сохранения просит меня переписать с сообщением:
Но если я те же действия, но введите имя файла как «Test» без указав расширение, диалог сохранения не подтверждает перезапись. Я знаю, что на самом деле он возвращает другое имя файла «C: \ Users \ xxx \ Desktop \ Test» вместо «C: \ Users \ xxx \ Desktop \ Test.pdf». Это вроде не хорошо, если диалоговое окно попросит вас сохранить файл, но вам нужно ввести расширение .. Так обычно я справиться с этим, как это:
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