Save диалог не работает

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
resident
энтузиаст
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Save диалог не работает

Сообщение resident »

Здрасть )

Задаю в программе DefaultExt и Filter, еще включено ofOverwritePrompt. В первого взгляда, всё работает. При вызове показывает только файлы с моим расширением и при выполнении диалога он к названию файла приписывает мое расширение, например, сохраняю единичку и получаю файл 1.test. Ок.
Но! Как только я начинаю набирать название файла на клавиатуре и в папке есть файл без расширения - эти настройки уже не действуют.
Пример: в папке лежат только два файла с именами 1, 123.txt
Я хочу сохранить туда файл с моим расширением 1.test, набрав как обычно в нормальных программах только единичку с клавиатуры.
Набираю единичку и диалог, забыв обо всяких фильтрах, мне выдает список всех файлов, начинающихся на единичку, т.е. 1, 123.txt
Ладно, диалог перестарался, когда его не просили. Пытаюсь сохранить единичку. Мне выдает, что файл с таким именем существует - переписать или нет? Блин, существует файл 1 без расширения, а не файл с расширением 1.test.
Ни один обычный юзер не сможет сохранить файл в такой ситуации.
vkhacker
незнакомец
Сообщения: 9
Зарегистрирован: 06.02.2014 09:50:35

Сообщение vkhacker »

Можно сделать, например, так(.ext - наше расширение файла):

Код: Выделить всё

SaveDialog.FileName:='Новый файл.ext';
if SaveDialog.Execute then
  begin
    if (RightStr(SaveDialog.FileName, 4)<>'.ext') then
      SaveDialog.FileName:=SaveDialog.FileName+'.ext';
  end;

RightStr из модуля sysutils.
Ответить