Конспект урока "Создание простейшего текстового редактора в Delphi" 11 класс

1
Гаврилова Екатерина Федоровна
Преподаватель информатики
ГБОУ СПО «Сибайский педагогический колледж», г.Сибай
Группа: 5Б
Тема урока: Создание простейшего текстового редактора в
Delphi
2
Тема: «Создание простейшего текстового редактора в Delphi»
Цель: научить составлять программу Текстовый редактор, используя компоненты TMemo, и
TMainMenu ;
Задачи:
- повторить компоненты TMemo и TMainMenu;
- прививать любознательность, интерес к программированию;
- развивать логическое мышление, память, речь, внимательность
Оборудование: компьютер, презентация, раздаточный материал;
План:
I. Организационный момент;
II. Проверка пройденного материала;
III. Практическая часть;
IV. Закрепление изученного материала;
V. Задание на дом
Тип урока: практический
Ход урока
I Орг.момент
-приветствие, проверка отсутствующих
II. Проверка пройденного материала
что такое компонент?
как выбрать и разместить компоненты на форме?
какие общие свойства компонентов вы знаете?
как можно поменять свойства компонента (например, поменять размер или цвет компонента)?
III. Практическая часть;
Сегодня мы с вами создадим программу Текстовый редактор.( Слайд 1) (слайд 2.)
Выложим на форму TMemo, и TMainMenu. Установим свойство Align в alClient для того, чтобы
компонент растянулся на все свободное пространство формы. Установим свойство ScrollBars в ssBoth,
а WordWrap в False. И уберем введенный в Memo1 текст поумолчанию, удалив этот текст из свойства
Lines. ( Слайд 3)
Щелкнем по MainMenu1 два раза - появится окно. Теперь создадим меню "Файл". В нем элементы:
"Создать", "Открыть", "Сохранить", "Сохранить как...", разделительную полоску (символ "-") и "Выход"
Установим горячие клавиши как показанно на рис 1. Горячие клавиши устанавливаются в свойстве
ShortCut
Рис. 1 - Меню "Файл"
3
Самостоятельно. (Слайд 4)
Аналогично создаем меню "Правка":
Рис. 2 - Меню "Правка"
Аналогично создаем меню "Формат":
Рис. 3 - Меню "Формат"
Итак, начнем. Окошко редактора меню нам больше не нужно - его можно закрыть. На нашей форме уже
появилось меню. Оно выпадает при щелчке, в общем практически рабочее. (Слайд 5) Осталось только
написать код, который будет выполняться при выборе чего-либо из меню. Щелкнем по меню "Файл", а
там выберем "Выход".
Рис. 4 - Создание события onClick
После нажатия по меню "Выход" появляется окно редактора кода с уже готовой процедурой. Пишем:
Close;
Обратите внимание, что Close и Form1.Close это одно и тоже. Т.к. форма является родителем то имя
родителя можно опускать.
Теперь после выбора меню "Выход" программа закроется. (Слайд 6)
4
Реализация переноса по словам
В меню "Формат" выберем "Перенос по словам":
procedure TForm1.N14Click(Sender: TObject);
begin
If Memo1.WordWrap then
begin
Memo1.WordWrap:=false;
Memo1.ScrollBars:=ssBoth;
N14.Checked:=False;
end
else
begin
Memo1.WordWrap:=True;
Memo1.ScrollBars:=ssVertical;
N14.Checked:=True;
end;
end;
Разберемся что мы делаем: если уже установлен режим переноса по словам то мы убираем его и
устанавливаем галочку на N14. И наоборот. (Слайд 7)
Реализация функции "Сохранить как..."
Нам понадобится диалоговое окно сохранения документа. Воспользуемся компонентом TSaveDialog
на вкладке Dialogs. Выложим его на форму. Установим фильтр, т.е. те файлы которые будет этот
диалог отображать. Нам нужно *.txt, т.е. текстовые документы. Чтобы это сделать нужно найти
свойство Filter и нажать на кнопку . Появится окно. Заполните его как показанно на рис. 5.
Рис. 5 - Редактор фильтра
5
Теперь измените свойство DefaultExt на *.txt. Это расширение которое будет добавляться к файлу.
(Слайд 8)
Создадим процедуру сохранения файла. Напишем этот код сразу после {$R *.dfm}.
Procedure SaveAs;
begin
If Form1.SaveDialog1.Execute then
begin
Form1.Memo1.Lines.SaveToFile(Form1.SaveDialog1.FileName);
FileWork:=Form1.SaveDialog1.FileName;
end;
end;
Далее выбераем в меню "Файл" —> "Сохранить как...". Там пишем:
SaveAs;
(Слайд 9) Что же тут делается и как все работает? Очень просто! Когда пользователь выберает пункт
меню "Сохранить как..." то вызывается процедура SaveAs, которую мы уже написали. Теперь разберем
процедуру SaveAs. Когда вызывается функция Execute у TSaveDialog то появляется диалог сохранения
и если пользователь нажмет кнопку сохранить, то функция Executeвозвратит True иначе False. Если
возвратится True то будет выполнена процедура SaveToFile, т.е. сохранение файла. В
SaveDialog1.FileName хранится путь к файлу в который пользователь указывает в диалоге. (Слайд 10)
Введем глобальную переменную FileWork. В ней будет храниться путь к файлу с которым работает
пользователь. Это нужно для реализации функции "Файл" —> "Сохранить". Не забудьте ее объявить в
разделе Var перед implementation. Должно быть так:
var
Form1: TForm1;
FileWork: String;
Реализация функции "Сохранить"
Выбераем "Файл" —> "Сохранить". И пишем:
If FileWork='' then SaveAs else Memo1.Lines.SaveToFile(FileWork);
Если пользователь уже сохранял файл то в FileWork будет что-то храниться, в любом случае не
"пустота". Если хранится '', т.е. ничего не хранится то вызываем SaveAs. Она как раз и покажет диалог
6
сохранения. Если переменная FileWork не пустая, то сохраняем файл по тому пути который указан в
FileWork. (Слайд 11)
Реализация функции "Открыть"
Помимо TSaveDialog существует TOpenDialog . И если Вы хоть малость знаете английский, то уже
поняли бы, что этот компонент предназначен для открытия файлов.
Выложите этот компонент на форму и свойство Filter измените так же как у SaveDialog1.
Вообще компоненты TSaveDialog и TOpenDialog очень похожи. Диалог открытия вызывается так же —
функцией Execute, которая возвращает True если пользователь желает открыть файл.
Жмем "Файл" > "Открыть". Пишем:
if OpenDialog1.Execute then
begin
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
FileWork:=OpenDialog1.FileName;
end;
Запускаем программу F9 и пробуем. Если все делали правильно, то все должно работать. (Слайд 12)
Реализация функции "Создать"
"Файл" —> "Создать". Пишем:
FileWork:='';
Memo1.Clear;
первая строчка очищает FileWork, т.е. программа не будет знать о том что мы с каким-то файлом
работали. Вторая строчка очищает Memo1.
Реализация функций в меню "Правка"
По клику на меню "Вырезать":
Memo1.CutToClipboard;
По клику на меню "Копировать":
Memo1.CopyToClipboard;
По клику на меню "Вставить":
7
Memo1.PasteFromClipboard;
(Слайд 13)
Реализация функций в меню "Шрифт..."
Нам понадобится еще один компонент - TFontDialog . Функция для вызова такая же как у
TOpenDialog и TSaveDialog - Execute. Создаем событие по клику по меню "Шрифт...".
if FontDialog1.Execute then Memo1.Font:=FontDialog1.Font;
Если пользователь применил изменения, то свойству Font у Memo1 присваиваем выбранные
пользователем настройки шрифта. Они хранятся в свойстве Font у FontDialog1.
Завершаем...
Основная часть программы написана. Осталось совсем немного. Нам нужно сделать активной форму,
чтобы в инспекторе объектов появились ее свойства, но из-за Memo1 который растянут на всю форму
не получается это сделать. Есть несколько вариантов. Можно просто выделить форму в Object
TreeView. А можно выделить Memo1, затем зажать клавишу Shift и щелкнуть по Memo1 еще раз.
Итак, Вы активировали форму. Изменим заголовок окна: в свойстве Caption напишите "Блокнот".
Свойство Position измените на poScreenCenter для того, чтобы форма появлялась по центру экрана.
Ну и напоследок добавим модуль XPMan в список модулей (секция uses). (Слайд 14)
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, XPMan;
Этот модуль подключает XMManifest к приложению, т.е. если у Вас установленна XP, то все
компоненты приобретают XP-шный вид, а если Vista - то становятся стиля Висты, а не как в Win98 или
Win2000. Можете поэкспериментировать. (Слайд 15)
IV. Закрепление изученного материала;
- С какими компонентами вы сегодня работали?
- На каких вкладках они находятся?
- Как реализовать функции в меню "Правка"?
- Как реализовать функции в меню "Шрифт ?
V. Задание на дом
Записать основные команды создания программы в тетрадь
8
Приложение:
Текст программы:
Procedure SaveAs;
begin
If Form1.SaveDialog1.Execute then
begin
Form1.Memo1.Lines.SaveToFile(Form1.SaveDialog1.FileName);
FileWork:=Form1.SaveDialog1.FileName;
end;
end;
Procedure TForm1.N5Click(Sender: TObject);
begin
SaveAs;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
FileWork:=OpenDialog1.FileName;
end;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N13Click(Sender: TObject);
begin
If Memo1.WordWrap then
begin
Memo1.WordWrap:=false;
Memo1.ScrollBars:=ssBoth;
N14.Checked:=False;
end
else
begin
Memo1.WordWrap:=True;
Memo1.ScrollBars:=ssVertical;
N14.Checked:=True;
end;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
FileWork:='';
Memo1.Clear;
end;
procedure TForm1.N9Click(Sender: TObject);
begin
Memo1.CutToClipboard;
end;
procedure TForm1.N10Click(Sender: TObject);
9
begin
Memo1.CopyToClipboard;
end;
procedure TForm1.N11Click(Sender: TObject);
begin
Memo1.PasteFromClipboard;
end;
procedure TForm1.N14Click(Sender: TObject);
begin
if FontDialog1.Execute then Memo1.Font:=FontDialog1.Font;
end;
end.
Использованные источники:
Валеева, Ю.А. Объектно-ориентированное программирование в среде Delphi [Текст] / Ю.А.
Валеева. - Новокузнецк, 2003.
Фаронов В.В. Delphi. Программирование на языке высокого уровня: учебник для вузов–СПб:
Питер, 2006.–640с.