Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л.р.18 ОАиП.doc
Скачиваний:
7
Добавлен:
27.09.2019
Размер:
1.1 Mб
Скачать

Реализация команд меню Файл

  • Разместите на форме со страницы Dialogs палитры компонентов компоненты OpenDialog и SaveDialog. OpenDialog предназначен для создания окна диалога “Открыть файл”. SaveDialog предназначен для создания окна диалога “Сохранить файл”. Свойства этих компонентов одинаковы, только их смысл различен для открытия и сохранения файлов. Измените у обоих компонентов следующие свойства:

  • Свойство Filter задает тип файла, появляющегося в диалоге в выпадающем списке “Тип файла”. Оформите это свойство следующим образом:

  • Свойство DefaultExt позволяет задать значение расширения файла в диалоге по умолчанию. Напишите в нем txt. Т.е. теперь пользователь может писать в диалоге имя текстового файла без расширения;

  • Свойство Options определяет условие выбора файла. Для компонента OpenDialog установите значение свойства Options ofFileMustExist = true, что обозначает, если пользователь написал имя несуществующего файла, то появится сообщение об ошибке. Для компонента SaveDialog установите значение свойства Options ofOverwritePrompt = true, что обозначает, если при сохранении файла пользователь написал имя существующего файла, появится замечание, что файл с таким именем существует, и запрос на перепись существующего файла;

  • Для компонента SaveDialog установите значение свойства FileName «без имени». Чтобы контролировать сохраняли ли уже файл или нет.

  1. Пункт главного меню Файл/Открыть предназначен для организации диалога выбора файла на редактирование. Метод OpenDialog1.Execute открывает диалоговое окно, а после нажатия на кнопку «Открыть» в диалоговом окне возвращает значение True и заполняет свойство OpenDialog.FileName, помещая в него имя выбранно­го в окне диалога файла.

Метод LoadFromFile объекта TStrings, представляющего свойство Lines компонента RichEdit1, позволяет одновременно организовать от­крытие и чтение файла в область редактирования. Если процесс загрузки файла закончился удачно, изменяется заголовок окна приложения (в него помещается имя открытого файла) и заполняется глобальная переменная CurrentFileName, служащая для хранения имени текущего файла. В слу­чае возникновения ошибки при загрузке файла управление передается в блок обработки исключений и выдается диалоговое окно сообщения.

  • Процедура обработки события OnClick для пункта меню Файл/Открыть и кнопки панели инструментов Открыть имеет следующий вид:

procedure TForm1.N2Click(Sender: TObject);

begin

if opendialog1.Execute then

try

richedit1.Lines.LoadFromFile(opendialog1.FileName);

form1.Caption:=form1.Caption+'-'+opendialog1.FileName;

currentfilename:=opendialog1.FileName;

except

on efopenerror do

messagedlg('Ошибка при открытии файла',mterror, [mbok],0)

end;

end;

  1. Пункт Главного меню Файл/Сохранить как... предназначен для сохранения результатов редактирования в файле, имя которому назначает пользователь. При организации процесса сохранения ре­зультатов необходимо учесть возможность существования файла с именем, указанным в окне диалога сохранения. В предлагаемой про­цедуре-обработчике используется стандартная функция FileExists для проверки существования файла и организуется запрос-диалог для принятия решения. Стандартная функция MessageDlg открывает диалоговое окно с тремя управляющими кнопками — [Yes], [No] и [Cancel] и возвращает константу — признак выполненного действия (нажатой кнопки).

В зависимости от принятого пользователем решения выполняет­ся одна из трех последовательностей действий: сохранение результа­тов редактирования с помощью применения метода SaveToFile, симметричного методу LoadFromFile; повторяется диалог назначения имени файла или происходит выход из процедуры-обработчика.

  • Процедура обработки события OnClick для пункта меню Файл/Сохранить как…имеет следующий вид:

procedure TForm1.N4Click(Sender: TObject);

label 1;

var

btn: word;

fsave: boolean;

begin

if richedit1.Text<>'' then

begin

1: if savedialog1.Execute then

if fileexists(savedialog1.FileName) then

begin

btn:= messagedlg(Файл существует. Перезаписать?',mtwarning, [mbyes, mbno, mbcancel],0);

if btn=mrNo then goto 1;

if btn=mrCancel then fsave:=false;

if btn=mrYes then fsave:=true;

end

else fsave:= true;

if fsave then

try

richedit1.Lines.SaveToFile(savedialog1.FileName);

currentFileName:=savedialog1.FileName;

form1.Caption:=progcaption+'-'+savedialog1.FileName;

except

on einouterror do

messagedlg('Ошибка записи в файл',mterror, [mbok],0);

end;

end;

end;

  1. Посредством пункта Главного меню Файл/Сохранить результаты редактирования сохраняются в текущем файле, если имя текущего фай­ла не пусто, или происходит вызов процедуры-обработчика для пункта меню Файл/Сохранить как,..

  • Процедура обработки события OnClick для пункта меню Файл/Сохранить и кнопки панели инструментов Сохранить имеет следующий вид:

procedure TForm1.N3Click(Sender: TObject);

label 1;

var

btn: word;

fsave: boolean;

begin

if richedit1.Text<>'' then

if currentfilename='' then N4.Click {кнопка Сохранить как…}

else

try

richedit1.Lines.SaveToFile(currentFileName);

except

on einouterror do

messagedlg('Ошибка записи в файл',mterror, [mbok],0);

end;

end;

  1. Процедура обработки события OnClick для пункта меню Файл/Создать и кнопки панели инструментов Создать имеет следующий вид:

N5.Click; {кнопка Закрыть}

form1.Caption:=progcaption+'-Новый файл';

currentfilename:='';

  1. Процедура обработки события OnClick для пункта меню Файл/Закрыть имеет следующий вид:

var

btn: word;

begin

if richedit1.Text<>'' then

begin

btn:=messagedlg('Сохранить изменения?',mtwarning, [mbyes, mbno, mbcancel],0);

if btn<>mrcancel then

begin if btn=mryes then n3.Click;

richedit1.Text:='';

form1.Caption:=progcaption;

end;

end;

end;

  1. Проверьте работоспособность приложения. Сохраните проект.

Отчет по работе:

Оформите в тетради отчет, который должен содержать тему, цель работы, порядок выполнения (только формулировку задачи и программный код её решения), ответы на контрольные вопросы.

Контрольные вопросы:

Перечислите все используемые в работе (с расшифровкой): объекты (компоненты); свойства объектов; события объектов; методы; операторы и функции.

6

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]