- •Теоретические сведения:
- •Порядок выполнения работы:
- •Создание главного меню:
- •Создание панели инструментов:
- •Создание области для отображения и редактирования текстов:
- •Создание контекстного меню:
- •Реализация команды меню Формат
- •Реализация команды меню Справка
- •Реализация команд меню Правка
- •Реализация команд меню Файл
Реализация команд меню Файл
Разместите на форме со страницы Dialogs палитры компонентов компоненты OpenDialog и SaveDialog. OpenDialog предназначен для создания окна диалога “Открыть файл”. SaveDialog предназначен для создания окна диалога “Сохранить файл”. Свойства этих компонентов одинаковы, только их смысл различен для открытия и сохранения файлов. Измените у обоих компонентов следующие свойства:
Свойство Filter задает тип файла, появляющегося в диалоге в выпадающем списке “Тип файла”. Оформите это свойство следующим образом:
Свойство DefaultExt позволяет задать значение расширения файла в диалоге по умолчанию. Напишите в нем txt. Т.е. теперь пользователь может писать в диалоге имя текстового файла без расширения;
Свойство Options определяет условие выбора файла. Для компонента OpenDialog установите значение свойства Options ofFileMustExist = true, что обозначает, если пользователь написал имя несуществующего файла, то появится сообщение об ошибке. Для компонента SaveDialog установите значение свойства Options ofOverwritePrompt = true, что обозначает, если при сохранении файла пользователь написал имя существующего файла, появится замечание, что файл с таким именем существует, и запрос на перепись существующего файла;
Для компонента SaveDialog установите значение свойства FileName «без имени». Чтобы контролировать сохраняли ли уже файл или нет.
Пункт главного меню Файл/Открыть предназначен для организации диалога выбора файла на редактирование. Метод 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;
Пункт Главного меню Файл/Сохранить как... предназначен для сохранения результатов редактирования в файле, имя которому назначает пользователь. При организации процесса сохранения результатов необходимо учесть возможность существования файла с именем, указанным в окне диалога сохранения. В предлагаемой процедуре-обработчике используется стандартная функция 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;
Посредством пункта Главного меню Файл/Сохранить результаты редактирования сохраняются в текущем файле, если имя текущего файла не пусто, или происходит вызов процедуры-обработчика для пункта меню Файл/Сохранить как,..
Процедура обработки события 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;
Процедура обработки события OnClick для пункта меню Файл/Создать и кнопки панели инструментов Создать имеет следующий вид:
N5.Click; {кнопка Закрыть}
form1.Caption:=progcaption+'-Новый файл';
currentfilename:='';
Процедура обработки события 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;
Проверьте работоспособность приложения. Сохраните проект.
Отчет по работе:
Оформите в тетради отчет, который должен содержать тему, цель работы, порядок выполнения (только формулировку задачи и программный код её решения), ответы на контрольные вопросы.
Контрольные вопросы:
Перечислите все используемые в работе (с расшифровкой): объекты (компоненты); свойства объектов; события объектов; методы; операторы и функции.