Delphi диалоги открытия и сохранения файла. Растолкуйте пожалуйста

Delphi диалоги открытия и сохранения файла. Растолкуйте пожалуйста

Задать свой вопрос
2 ответа

Составляющие OpenDialog диалог Открыть файл и SaveDialog диалог Сохранить файл как..., пожалуй, употребляются почаще всего, в большинстве прибавлений.

   Все характеристики этих компонент схожи, только их смысл несколько разен для открытия и закрытия файлов. Главное свойство, в котором ворачивается в виде строчки избранный пользователем файл, FileName. Значение этого характеристики можно задать и перед воззванием к диалогу. Тогда оно появится в разговоре как значение по умолчанию в окне Имя файла (см. рис.1,2).

Типы искомых файлов, появляющиеся в разговоре в выпадающем перечне Тип файла (рис.1,2), задаются свойством Filter. В процессе проектирования это свойство проще всего задать с подмогою редактора фильтров, который вызывается нажатием кнопки с многоточием около имени этого характеристики в Инспекторе Объектов. При этом открывается окно редактора, вид которого представлен на рис.3. В его левой панели Filter Name вы записываете тот текст, который увидит юзер в выпадающем перечне Тип файла разговора. А в правой панели Filter записываются разделенные точками с запятой шаблоны фильтра. В образце рис.3 задано два фильтра: текстовых файлов с расширениями .txt и .doc и всех файлов с шаблоном *.*.


В обработчике OnClick кнопки "Открыть..." пишем:

   if OpenDialog1.Execute then
      Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

В итоге выбора файла свойство FileName компонента OpenDialog получает значение полного адреса избранного файла, который мы и вставляем в функцию загрузки файла компонента Memo.
Всё это хорошо, но только в данном случае, когда записанное выражение записывается в одну строчку. Если программка употребляет несколько раз выражение OpenDialog1.FileName, то писать руками устанешь. В Delphi для такового варианта есть так именуемый "оператор присоединения" with. Он употребляется для любых объектов, имеющих длиннющий "хвост" из параметров, которые приходится записывать многократно. Вот как он записывается:

   with Объект do
     begin

     end;

Свойства Объекта снутри логических скобок begin/end можно записывать конкретно. Допускается перечислять через запятую несколько объектов. Природно, в случае, когда снутри скобок находится один оператор, они необязательны. Перепишем кусок загрузки файла с использованием оператора присоединения:

   with OpenDialog1, Memo1 do
      if Execute then
         Lines.LoadFromFile(FileName);

Запись получается более малогабаритной.
Так как характеристики компонент OpenDialog и SaveDialog схожи, сохранение текста выглядит безусловно подобно. Создаём обработчик нажатия кнопки "Сохранить как..." и пишем:

   with SaveDialog1, Memo1 do
      if Execute then
        begin
           Lines.SaveToFile(FileName);
           OpenDialog1.FileName:=FileName; // Чтоб исправленный текст не затёр источник
        end;

Наконец, для кнопки "Сохранить" пишем:

   Memo1.Lines.SaveToFile(OpenDialog1.FileName); // Сохраняем туда, откуда считали
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт