Продолжим знакомство с компонентами Delphi. Следующий на очереди Memo – текстовое поле. Он так же расположен на закладке Standart.
Этот компонент предназначен для редактирования многострочного текста. Для иллюстрации работы этого, а так же некоторых других компонентов напишем простой текстовый редактор типа «Блокнот». И так, кладем на форму компонент Memo, Присваиваем ему идентификатор Notepad. Затем на форму размещаем компонент MainMenu (TMainMenu).
Присваиваем ему идентификатор Menu. В Object Inspector-е редактируем свойство Items, путем нажатия на кнопку вызова диалога редактирования свойства. У нас откроемся вот такое окно:
Курсор стоит на первом, еще не созданном пункте меню. Создадим его, введя в Object Inspector-е его идентификатор и заголовок.
У нас в окне появилась надпись «Файл». Слева от нее шаблон для нового пункта меню. Давайте и его введем. Идентификатор, заголовок «Редактирование». Теперь будем редактировать подменю.
Теперь нам нужен диалог открытия файла. Он находиться на закладке Dialogs.
У данного компонента есть свойство filter. Давайте отредактируем его, что бы наша программа открывала либо текстовые файлы, либо все файлы.
Создадим обработчик OnClick пункта меню «Открыть». Введем в нем такие строки:
if odOpenDialog.Execute then
Begin
memo1.Lines.LoadFromFile(odOpenDialog.FileName);
end;
В данном тексте вам встретилось новое ключевое слово «if». Это оператор условия. Если условие после него и до слова «then» выполняется, то запускается часть программs после слова «then». Что бы определить, до каких пор должна выполнятся программа после «then» существуют слова begin и end (начало и конец соответственно). Если условие не выполняется, то программа переходит сразу к той части. Которая стоит после блока, выполняющегося по условия. В данном случае там ничего не стоит. Иными словами, если функция Execute компонента OpenDilaog вернет false, а это произойдет только в том случае, когда пользователь просто закрыл диалог, не выбрав никакого файла, то программа ничего делать не будет.
|
И так, давайте испытаем нашу программу. Запустите ее и через пункт меню «Файл» «Открыть» откроем какой нибудь текстовый файл.
Выполнение и разработка проекта с использованием раздаточного материала (сборника проектов на языке программирования Delphi)
Компоненты используемы в программе MainMenu (Главное меню), OpenDialog, SaveDialog, FontDialog, FindDialog, ReplaceDialog компонент Memo1.
Implementation
uses Unit3, Unit4, Unit5, Unit2;
{$R *.dfm}
procedure TForm1.Close1Click (Sender: TObject);
begin
if SaveDialog1.Execute then // Если запущен диалог
Memo1.Lines.SaveToFile(SaveDialog1.FileName); // Загружаем файл
end;
procedure TForm1.font1Click(Sender: TObject);
Begin
FontDialog1.Execute;
Memo1.Font:=Fontdialog1.Font;
end;
procedure TForm1.Undo1Click(Sender: TObject);
Begin
Memo1.Undo; // отмена действия
end;
procedure TForm1.Copy1Click(Sender: TObject);
Begin
Memo1.CutToClipboard; // команда вырезать
end;
procedure TForm1.Copy2Click(Sender: TObject);
Begin
Memo1.CopyToClipboard; // команда копировать
end;
procedure TForm1.Paste1Click(Sender: TObject);
Begin
Memo1.PasteFromClipboard; // команда вставить
end;
procedure TForm1.Open1Click(Sender: TObject);
Begin
if OpenDialog1.Execute then // Если запущен диалог
Memo1.Lines.LoadFromFile(OpenDialog1.FileName); // Загружаем файл
end;
procedure TForm1.SelectAll1Click(Sender: TObject);
Begin
Memo1.SelectAll; // Выделяем весь текст в мемо
end;
procedure TForm1.N12Click(Sender: TObject); // процедура для переноса по словам
|
Begin
if N12.Checked = False then
Begin
N12.Checked:= True;
Memo1.ScrollBars:= ssVertical;
end
else
begin
N12.Checked:= False;
Memo1.ScrollBars:= ssBoth;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Begin
if MessageDlg('Закрыть приложение?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
Action:= caFree
else
Action:= caNone;
end;
End.
Что обозначают выражения?
if SaveDialog1.Execute then // Если запущен диалог
Memo1.Lines.SaveToFile(SaveDialog1.FileName); /
if OpenDialog1.Execute then // Если запущен диалог
Memo1.Lines.LoadFromFile(OpenDialog1.FileName); // Загружаем файл