Упражнение 5. Создайте приложение, которое открывает текстовый файл с использованием метода OpenDialog, считывает текст из него в объект Memo, затем сохраняет измененный текст в файле с использованием метода SaveDialog и выводит текст на печать, используя метод PrintDialog.
Создайте форму и разместите на ней компоненты Memo1, Button1, Button2 и Button3. Задайте для свойства Form1.Caption значение «Пример с OpenDialog, SaveDialog, PrintDialog», для Button1.Caption – «Открыть», для Button2.Caption – «Сохранить», для Button3.Caption – «Печатать». Удалите текст «Memo1» из окна Memo1. Для обеспечения возможности просмотра в окне Memo1 длинных текстов с использованием вертикальной полосы прокрутки установите для свойства Memo1.Scrollbars значение ssVertical. Выровняйте и зафиксируйте визуальные компоненты на форме. Выберите в палитре компонентов страницу Dialogs и поместите на форму компоненты OpenDialog, SaveDialog и PrintDialog. Так как они не являются визуальными компонентами, то их можно поместить в любое место формы. Задайте для свойства SaveDialogl.Title значение «Сохранить текстовый файл», а для OpenDialogl.Title – «Открыть текстовый файл». Эти текстовые строки будут отображаться в заголовках диалоговых окон сохранения и открытия файла.
Чтобы реализовать выбор типа файла при открытии файла в окне диалога, выберите в окне Инспектора объектов объект OpenDialog1, на странице Свойства произведите двойной щелчок по списку значений свойства Filter. В окне Filter Editor задайте фильтры для выбора типа и расширения файла.
Чтобы установить в качестве расширения файла по умолчанию первый вариант (*.txt), задайте для свойства OpenDialog1.Filterlndex значение 1. Отредактируйте фильтры SaveDialog1, как описано в предыдущем упражнении. Чтобы в диалоговом окне Печать включить возможность выбора диапазона печатаемых страниц и печати выделенного фрагмента, задайте для свойств PrintDialog1.Options.poPageNums и PrintDialog1.Options.poSelection значение True.
После этого раздел описания модулей будет выглядеть следующим образом:
Отредактируйте раздел описания переменных модуля следующим образом:
Процедура обработчика щелчка мышью на кнопке Button2 (Сохранить) создается, как описано в предыдущем упражнении. Чтобы файл можно было сохранять с другим расширением, отредактируйте фрагмент, описывающий выбор типа файла, добавив строки удаления прежнего расширения файла:
Для создания процедуры обработчика щелчка мышью на кнопке Открыть выберите в окне Инспектора объектов объект Button1 и на странице События произведите двойной щелчок на пустом поле списка в событии OnClick. После этого в окне Редактора кода будет сгенерирована заготовка процедуры обработчика события procedure TForm1.Button1Click(Sender: TObject);
Отредактируйте текст процедуры следующим образом:
Как видно из текста процедуры, в начале процедуры открывается диалоговое окно, в котором выбирается файл (FName:=OpenDialog1.FileName;), затем имя файла связывается с файловой переменной (AssignFile(F,OpenDialog1.FileName);), и файл открывается для чтения (Reset(F);). После этого содержимое открытого файла считывается в переменную S (Readln(F, S);) и присваивается свойству Text объекта Memo1 (Memo1.Text:= S;). После завершения чтения содержимого файл закрывается (CloseFile(F);).
Для создания процедуры обработчика щелчка мышью на кнопке Печатать выберите в окне Инспектора объектов объект Button3 и на странице События произведите двойной щелчок на пустом поле списка в событии OnClick. После этого в окне Редактора кода будет сгенерирована заготовка процедуры обработчика события procedure TForm1.Button3Click(Sender: TObject);, которую следует отредактировать следующим образом:
Сохраните, откомпилируйте и запустите на выполнение созданное приложение. Щелкните мышью на кнопке Открыть, в диалоговом окне Открыть текстовый файл выберите папку, задайте тип файла и выберите текстовый файл, после чего нажмите кнопку Открыть. Отредактируйте текст в окне приложения и нажмите кнопку Сохранить. После этого в диалоговом окне Сохранить текстовый файл выберите в поле Тип файла расширение для сохраняемого файла, задайте