Delphi перезаписывает существующий файл в диалоговом окне сохранения - PullRequest
5 голосов
/ 31 марта 2010

Я использую компонент TSaveDialog, чтобы сохранить файл нажатием кнопки. Однако у меня возникли проблемы с сохранением существующего имени файла. Обычно, когда вы хотите сохранить поверх существующего файла в Windows, появляется окно с сообщением о том, действительно ли вы хотите перезаписать файл. Это не относится к компоненту TSaveDialog, и он запишет файл без запроса.

Я надеялся, что есть функция или событие TSaveDialog, которые я мог бы использовать, но я не видел ничего похожего на это. Возможно, я просто не нашел правильный метод для использования. Если есть событие, я мог бы использовать

if FileExists(saveDialog.FileName) then
  //and so forth

но событиями TSaveDialog являются OnCanClose, OnClose, OnFolderChange, OnIncludeItem, OnSelectionChange, OnShow, OnTypeChange ...

Мой вопрос заключается в том, как открыть всплывающее окно с сообщением пользователю, хотят ли они перезаписать существующий файл, используя компонент TSaveDialog. Спасибо.

1 Ответ

16 голосов
/ 31 марта 2010

Используйте saveDialog.Options := saveDialog.Options + [ofOverwritePrompt] перед выполнением диалога. Затем он спросит, хочет ли пользователь перезаписать файл или нет.

Но вы же знаете, что TSaveDialog на самом деле не сохраняет файл, верно? Он просто отображает стандартное диалоговое окно сохранения файлов Windows, а затем возвращает путь, выбранный пользователем. Вы должны сохранить файл вручную, используя этот путь, например, MyStringList.SaveToFile(saveDialog.FileName).

...