Федеральное агентство по образованию
Delphi. Страница Dialogs Учебно-методическое пособие для вузов (Практикум)
Состав...
51 downloads
279 Views
580KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Федеральное агентство по образованию
Delphi. Страница Dialogs Учебно-методическое пособие для вузов (Практикум)
Составители: В.В. Васильев Л.В. Хливненко
ВОРОНЕЖ 2007
2
Утверждено Научно-методическим советом математического факультета 31 января 2007 года, протокол № 5
Рецензент С.А. Шабров
Учебно-методическое пособие (практикум) подготовлен на кафедре математического моделирования математического факультета Воронежского государственного университета.
Рекомендовано для студентов всех форм обучения.
Для направления 010101 (010100) Математика
3
1. Обзор компонент закладки Dialogs. Постановка учебной задачи В данной лабораторной работе мы познакомимся с рядом компонент страницы Dialogs (диалоги), которые позволяют включать в свои проекты стандартные диалоговые окна Windows-приложений: OpenDialog – Выбор и открытие файла. SaveDialog – Выбор папки и сохранение в нее файла. OpenPictureDialog – Выбор и открытие графического файла. SavePictureDialog - Выбор папки и сохранение в нее графического файла. FontDialog – Выбор и установка параметров шрифта (вид, размер…). ColorDialog – Выбор и моделирование цвета. PrintDialog – Печать (номера страниц, число копий,…). PrintSetupDialog – Настройка печати (размер бумаги, ориентация страницы…). FindDialog – Поиск фрагментов текста. ReplaceDialog – Поиск и замена фрагментов текста. Рис.1. Окно текстового редактора. Постановка учебной задачи: Создать в Delphi текстовый редактор, с помощью которого можно: создавать, открывать, сохранять, готовить к печати и распечатывать текстовые файлы; копировать, вырезать и вставлять фрагменты текста; производить очистку и выделение всего текста; выбирать параметры шрифта и цвета фона; искать нужные фрагменты и заменять их. Структура и функционирование пунктов меню Файл│Новый – при создании нового файла содержимое рабочего поля редактора очищается и в заголовок выносится надпись Безымянный.txt Текстовый редактор. Файл│Открыть… – вызывается стандартное Windows-окно открытия файла. Возможна автофильтрация файлов (в окне видны только файлы с заданным расширением). Информация из файла переписывается в рабочее поле редактора. Файл│Сохранить как… – вызывается стандартное Windows-окно записи файла на диск. Возможна автофильтрация файлов (отображаются файлы выбранного формата уже существующие в данном каталоге). Информация из рабочего поля редактора переписывается в файл. Файл│Макет страницы… – выбор данного пункта выведет стандартный диалог настройки печати, показанный на рис. 2. Файл│Печать… – выбор данного пункта выведет стандартный диалог
4
печати, показанный на рис. 3. Информация из рабочего поля распечатывается на принтере.
Рис.2. Диалог Настройка печати
Рис.3. Диалог Печать
Файл│Выход – закрытие окна приложения. Правка│Копировать – копирование выделенного текста в буфер. Правка│Вырезать – помещение выделенного текста в буфер. Правка│Вставка – вставка текста из буфера, начиная с текущей позиции курсора. Правка│Очистить – очистка всего рабочего поля текстового редактора. Правка│Выделить все – выделение всего текста в рабочей области. Правка│Шрифт… – открывается диалоговое окно выбора параметров шрифта, показанное на рис. 4. После выбора параметров шрифта весь текст в окне редактора должен изменить свой вид в соответствии со сделанными установками.
Рис.4. Диалог Шрифт Рис.5. Диалог Цвет Правка│Цвет фона… – открывается диалоговое окно выбора цвета, показанное на рис. 5. Рабочая область окна редактора меняет текущий цвет на выбранный.
Рис.6. Диалог Найти Рис.7. Диалог Заменить Поиск│Найти… – вызывается диалог поиска, представленный на рис. 6. После ввода образца поиска клик по кнопке Найти приводит к выделению нужного фрагмента в тексте. Поиск│Заменить… – вызывается диалог замены, представленный на рис. 7. После ввода образцов поиска и замены проводится поиск и замена нужных фрагментов текста.
5
Справка│О программе… – вывод ознакомительного текста в информационном окне.
Рис.8. Информационное окно Рис.9. Макет формы в режиме редактирования, на котором расположены невизуальные компоненты закладки Dialogs 2. Компоненты OpenDialog, SaveDialog, PrintDialog, PrintSetupDialog Окно текстового редактора включает: строки заголовка формы и меню, панель инструментов и рабочую область, представляющую собой компонент Memo. Пример работы 1 посвящен разработке интерфейса проекта. План примера 1 1-2. Создание и сохранение проекта. 3-6. Изменение свойств формы. 7-8. Описание глобальных переменных. 9-10. Написание обработчиков событий OnClose и OnCreate формы. 11-13. Добавление панели и установка ее свойств. 14-16. Добавление компонента Memo и установка его свойств. 17-19. Создание главного меню приложения. Обработка команды Файл⏐Выход. 20-21. Запуск программы на исполнение. Сохранение результатов работы. Пример работы 1: Подсказка 1. Войдите в Delphi Пуск|Программы|Delphi 2. Сохраните проект под именем Editor.dpr в отдельный File|Save Project As... каталог в своей папке. Имя формы – Main.pas Свойство Name 3. Переименуйте форму в Mainform Свойство Caption 4. Укажите заголовок окна формы - Текстовый редактор Измените свойство Icon формы 5. Поставьте свой значок для кнопки системного меню в строку заголовка Клик по кнопке Load позволяет выбрать файл с расширением ico на дисках. Возможно, каталог со стандартными значками будет доступен по адресу: C:/Program Files/Common Files/Borland Shared/Images/ Icons. Если Вы не обнаружите по указанному адресу нужного каталога, то воспользуйтесь автоматическим поиском файлов с расширением ico. Выберите значение wsMaximized 6. Сделайте так, чтобы при открытии свойства WindowsState окно разворачивалось на весь экран Private 7. Опишите в разделе private глобаль{ Private declarations }
6 file_name:string; ную переменную file_name: string для хранения имени открытого файла 8. Опишите перед заголовком implementation гло- var Index:integer; ToFind:string; бальные переменные: Index – текущая позиция FindIn:string; поиска, ToFind - образец поиска, FindIn - текст, в котором идет поиск 9. Напишите обработчик procedure TMainform.FormClose(…); события OnClose формы begin
10. Напишите обработчик события OnCreate формы
release end; procedure TMainform.FormCreate(…); begin file_name:='Безымянный.txt'; caption:=file_name+' - Текстовый редактор'; end;
Закладка Standard 11. Поместите на форму компонент Panel Свойство Caption 12. Уберите текст c панели Выберите значение alTop свойст13. Сделайте так, чтобы панель всегда ва Panel1.Align располагалась сверху Закладка Standard 14. Поместите на форму компонент Memo Свойство Lines 15. Сотрите надпись Memo1 16. Разверните компонент Memo на всю Выберите значение alClient свойства WindowsState область формы Закладка Standard 17. Поместите на форму компонент MainMenu Свойство Items 18. Сформируйте меню текстового редактора
Рис.10. Структура меню текстового редактора Названия пунктов меню вписываются в свойство Caption. После набора первого пункта нажимается Enter. Перед подчеркнутой буквой ставится знак &. Для добавления разделителя между командами одного пункта меню нужно ввести дефис в свойство Caption и нажать клавишу ввода. 19. Обработайте пункт меню procedure TMainform.N9Click(…); begin Файл⏐Выход. Для этого выберите в окне формы нуж- Close end; ный пункт 20. Запустите программу на исполнение. Попробуйте вве- Run⏐Run
7
сти текст и проверить работу команды Файл⏐Выход 21. Сохраните результаты работы File⏐Save В примере 2 будут созданы обработчики выбора команд меню Файл. План примера 2 1. Создание нового файла. 2-4. Открытие существующего файла. Автофильтрация файлов. 5-7. Сохранение файла. Автофильтрация файлов. 8-9. Подготовка к распечатке макета страницы. 10-12. Печать документа. 13-14. Запуск программы на исполнение. Сохранение результатов работы. Пример работы 2: Подсказка procedure TMainform.N2Click(…); 1. Напишите процедуру обработbegin ки выбора команды Memo1.Lines.Clear; Файл⏐Создать. Содержимое file_name:='Безымянный.txt'; редактора очищается. Новому caption:=file_name+' – файлу присваивается имя БеТекстовый редактор'; зымянный.txt. Имя файла вы- end; водится в заголовок формы. 2. Поместите на форму компонент OpenDialog Закладка Dialogs 3. Установите автофильтрацию файлов при открытии Свойство Filter Кликните по кнопке с тремя точками справа от свойства Filter компонента OpenDialog. Заполните окно масками фильтрации и их названиями так, как показано на рис. 11. Рис.11. Окно редактора фильтров 4. Создайте процедуру обработки пункта меню Файл⏐Открыть … Метод Execute вызывает диалоговое окно, после имени которого он указан, и возвращает значение true после выбора ключевой кнопки. Метод LoadFromFile загружает в строки компонента Memo текст из файла OpenDialog1.filename – файла выбранного в диалоговом окне Открытие файла. В заголовке формы появляется имя открытого файла
procedure TMainform.N3Click(…); begin if OpenDialog1.Execute then begin Memo1.Lines.LoadFromFile (OpenDialog1.filename); caption:=OpenDialog1.filename + ' - Текстовый редактор'; file_name:=OpenDialog1.filename ; {обнуление позиции поиска} index:=0 end; end;
5. Поместите на форму компонент SaveDialog 6. Установите автофильтрацию файлов при сохранении файла
Закладка Dialogs Свойство Filter
8
7. Создайте процедуру обработки пункта меню Файл⏐Сохранить как. Метод Execute вызывает диалоговое окно и возвращает значение True при выборе ключевой кнопки. Метод SaveToFile переписывает строки компонента Memo в файл SaveDialog1.filename, имя которого указанно в диалоговом окне Сохранение файла. В заголовке формы появляется имя сохраненного файла.
procedure TMainform.N4Click(…); begin savedialog1.filename:=file_name; if SaveDialog1.Execute then begin Memo1.Lines.savetofile (saveDialog1.filename); file_name:=SaveDialog1.filename; caption:=file_name+ ' - Текстовый редактор'; end; end;
8. Поместите на форму компонент PrintSetupDialog Закладка Dialogs procedure TMainform.N6Click(…); 9. Создайте процедуру обработки begin пункта меню Файл⏐Макет printersetupdialog1.execute; страницы… end; 10. Поместите на форму компонент PrintDialog Закладка Dialogs 11. Подключите модуль Printers Напишите после implementation Uses Printers; 12. Создайте процедуру обработ- procedure TMainform.N7Click(…); var i:integer; ки пункта меню Файл⏐Печать… begin Если нажата кнопка Печать – {включение в диалоговое окно кноprintdialog1.execute, то вызывается пок Help и Warning} метод подготовки передачи поprintdialog1.options:= [poHelp, тока текста на принтер poWarning]; Printer.BeginDoc. Содержимое if printdialog1.execute then компонента Memo построчно выbegin printer.BeginDoc; водится на печать. Метод TextOut for i:=0 to Memo1.Lines.Count имеет три параметра: (x,y) – коdo begin ординаты позиции начала вывоprinter.Canvas.TextOut(0,0,''); да строки текста и s – выводимая printer.Canvas.TextOut(0,i*100, строка. В конце печати вызываMemo1.Lines[i]) ется метод Printer.EndDoc, прерыend; вающий процесс передачи данPrinter.EndDoc ных на принтер. End end; 13. Запустите программу на исполнение. Проверьте Run⏐Run работу всех пунктов меню Файл 14. Сохраните результаты работы File⏐Save
3. Работа с буфером обмена. Компоненты FontDialog, ColorDialog, FindDialog, ReplaceDialog В примере работы 3 будут созданы обработчики пунктов меню Правка. План примера 3
9
1-3. Работа с буфером обмена. 4-5. Выделение текста и очистка рабочей области редактора. 6-7. Тестирование программы и сохранение проекта. 8-11. Добавление диалогов выбора формата шрифта и цвета фона. 12-13. Запуск программы на исполнение. Сохранение результатов работы. Пример работы 3: Подсказка 1. Напишите процедуру об- procedure TMainform.N11Click(…); begin работки выбора команды
Memo1.CopyToClipboard; end; 2. Напишите процедуру об- procedure TMainform.N12Click(…); begin работки выбора команды Memo1.CutToClipboard; Правка⏐ Вырезать end; 3. Напишите процедуру об- procedure TMainform.N13Click(…); begin работки выбора команды Memo1.PasteFromClipboard; Правка⏐ Вставить end; 4. Напишите процедуру об- procedure TMainform.N14Click(…); begin работки выбора команды Memo1.Lines.Clear; Правка⏐ Очистить end; 5. Напишите процедуру об- procedure TMainform.N15Click(…); begin работки выбора команды Memo1.SelectAll; Правка⏐ Выделить все end; 6. Запустите программу на исполнение. Откройте какой-нибудь Run⏐Run файл. Проверьте работу пяти первых пунктов меню Правка 7. Сохраните результаты работы File⏐Save 8. Поместите на форму компонент FontDialog Закладка Dialogs procedure TMainform.N17Click(…); 9. Создайте процедуру обbegin работки пункта меню If FontDialog1.Execute then Правка⏐Шрифт… Memo1.Font:=FontDialog1.Font; end; Закладка Dialogs 10. Поместите на форму компонент ColorDialog 11. Создайте процедуру об- procedure TMainform.N18Click(…); begin работки пункта меню If ColorDialog1.Execute then Правка⏐Цвет фона… Memo1.Color:=ColorDialog1.Color; end; 12. Запустите программу на исполнение. Откройте какой-нибудь Run⏐Run файл. Проверьте работу двух последних пунктов меню Правка 13. Сохраните результаты работы File⏐Save Правка⏐ Копировать
В примере работы 4 будут созданы обработчики пунктов меню Поиск и Справка.
10
План примера 4 1-4. Организация поиска и выделения нужного слова. 5-7. Настройка элементов в окне поиска. 8-14. Организация поиска и замены нужного слова. 15-17. Вывод информации о программе. Пример работы 4: Подсказка 1. Поместите на форму компонент FindDialog Закладка Dialogs procedure TMainform.N20Click(…); 2. Создайте процедуру обработки пункта меню begin Поиск⏐Найти…
FindDialog1.Execute; end;
3. Создайте процедуру обработки Используйте созданный Delphi шаблон события OnFind компонента FindDia- и код обработчика, написанного ниlog1 же procedure TMainform.FindDialog1Find(Sender: TObject); var Found:integer; (* позиция поиска *) FoundLen:integer; (* длина образца поиска *) begin {Обработка выбора радиокнопки Поиск вверх в окне поиска} with Sender as TFindDialog do begin if not(frDown in Options) then ShowMessage('Поиск организован только вниз!'); end; (* Определение образца поиска *) ToFind:=FindDialog1.FindText; (* Определение длины *) FoundLen:=Length(ToFind); (*Если поиск только начат, то в переменную FindIn переписывается текст из компонента Memo1 и текущая позиция принимает значение 1*) If index=0 then begin FindIn:=Mainform.Memo1.Text; index:=1 end; (* Определение номера символа, с которого образец поиска встречается в тексте *) Found:=Pos(ToFind,FindIn); (* При ненулевой позиции поиска происходит выделение найденного текста *) If Found>0 Then begin (* В переменную FindIn переписывается текст из компонента Memo1 *) FindIn:=Mainform.Memo1.Text;
11 (* Из FindIn удаляются символы от начала текста до последнего символа найденного слова *) delete(FindIn,1,index+Found+FoundLen-2); (* Окно формы располагается поверх всех остальных окон *) Mainform.BringToFront; (* Фокус устанавливается на компонент Memo1 *) Mainform.ActiveControl:=Memo1; (* Определяется номер первого символа в выделении *) Memo1.SelStart:=Index+Found-2; (* Задается длина выделенного участка текста *) Memo1.SelLength:=FoundLen; (* Определяется номер символа, с которого будет продолжен поиск *) Index:=index+Found+FoundLen-1 End {Then} else begin MessageDlg('Не удается найти '+ToFind,mtInformation, [mbOK],0); index:=0 (* обнуляется текущая позиция поиска *) end; end; Run⏐Run 4. Запустите программу на исполнение. Откройте какой-
нибудь файл. Попробуйте найти в тексте заданное слово. Поменяйте направление поиска. Задание: исправьте обработчик OnFind компонента FindDialog1 так, чтобы можно было менять направление поиска. Свойство Options компонента FindDialog представляет собой множество, элементы которого отвечают за характеристики диалогового окна. Например, если задан параметр frDown, то поиск идет по тексту вниз. При выборе радиокнопки Поиск вверх в диалоговом окне поиска из множества Options автоматически исключается элемент frDown и истинным становится событие not(frDown in Options). Чтобы убрать из диалогового окна переключатели направления поиска, во множество Options нужно включить параметр frHideUpDown. Если задан параметр frHideWholeWord, то не выводится выключатель поиска только целых слов. При заданном параметре frHideMatchCase не выводится выключатель учета различия прописных и строчных букв. При включении поиска только целых слов, во множество Options добавляется элемент frWholeWord, при включении учета различия прописных и строчных букв – параметр frMatchCase. 5. Уберите из диа- Допишите обработчик события OnCreate формы логового окна по- Procedure TMainform.FormCreate(…); иска выключатели begin file_name:='Безымянный.txt'; поиска только цеcaption:=file_name+' - Текстовый лых слов и учета редактор';
12 with FindDialog1 do различия между Options:= прописными и строчными буква- Options+[frHideMatchCase,frHideWholeWord]; end; ми 6. Запустите программу на исполнение. Убедитесь, что в Run⏐Run окне поиска нет выключателей File⏐Save 7. Сохраните результаты работы Задание: добавьте в проект возможность поиска только целых слов и возможность учета различий между прописными и строчными буквами. Закладка 8. Поместите на форму компонент ReplaceDialog
Dialogs Допишите обработчик события OnCreate формы 9. Уберите из диаProcedure TMainform.FormCreate(…); логового окна поbegin иска и замены выfile_name:='Безымянный.txt'; ключатели поиска caption:=file_name+' - Текстовый только целых слов и редактор'; учета различия меwith FindDialog1 do Options:=Options+[frHideMatchCase, жду прописными и frHideWholeWord]; строчными буквами with ReplaceDialog1 do Options:= Options+[ frHideMatchCase, frHideWholeWord]; end; 10. Создайте проце- procedure TMainform.N21Click(Sender: TObject); дуру обработки begin пункта меню ReplaceDialog1.Execute; Поиск⏐Заменить… end;
В диалоговом окне поиска и замены есть командные кнопки Найти, Заменить и Заменить все. Нажатие кнопки Найти вызывает событие OnFind для компонента ReplaceDialog. Нажатие кнопки Заменить - событие OnReplace. При выборе кнопки Заменить все во множество Options компонента ReplaceDialog добавляется элемент frReplaceAll. 11. Создайте процедуру обработки Используйте созданный Delphi шаблон и код обработчика, написанного нисобытия OnFind компонента ReplaceDialog1 же procedure TMainform.ReplaceDialog1Find(Sender: TObject); var Found:integer; (* позиция поиска *) FoundLen,ReplaceLen:integer; (* длина образца поиска, длина образца замены *) begin (* Определение образца поиска *) ToFind:=ReplaceDialog1.FindText; (* Определение длины образца поиска *) FoundLen:=Length(ToFind);
13 (* Определение длины образца замены *) ReplaceLen:=Length(ReplaceDialog1.ReplaceText); (*Если поиск только начат, то в переменную FindIn переписывается текст из компонента Memo1 и текущая позиция принимает значение 1*) If index=0 then begin FindIn:=Mainform.Memo1.Text; index:=1 end; (* Определение номера символа, с которого образец поиска встречается в тексте *) Found:=Pos(ToFind,FindIn); (* При ненулевой позиции поиска происходит выделение найденного текста *) If Found>0 then begin (* В переменную FindIn переписывается текст из компонента Memo1 *) FindIn:=Mainform.Memo1.Text; (* Из FindIn удаляются символы от начала текста до последнего символа найденного слова *) delete(FindIn,1,index+Found+FoundLen-2); (* Окно формы располагается поверх всех остальных окон *) Mainform.BringToFront; (* Фокус устанавливается на компонент Memo1 *) Mainform.ActiveControl:=Memo1; (* Определяется номер символа, с которого начинается выделение *) Memo1.SelStart:=Index+Found-2; (* Задается длина выделенного участка текста *) Memo1.SelLength:=FoundLen; (* Определяется номер символа, с которого будет продолжен поиск *) Index:=index+Found+ReplaceLen-1 end {Then} else (* В случае нулевой позиции поиска выдается информационное окно *) begin MessageDlg('Просмотр документа окончен', mtInformation, [mbOK],0); index:=0 (* обнуляется текущая позиция поиска *) end; end; 12. Создайте процедуру обработ- Используйте созданный Delphi шаблон и ки события OnReplace компоненкод обработчика, написанного ниже
14
та ReplaceDialog1 procedure TMainform.ReplaceDialog1Replace(Sender: TObject); var Found:integer; (* позиция поиска *) FoundLen:integer; (* длина образца поиска *) ReplaceLen:integer; (* длина образца замены *) begin (* Обработка нажатия кнопки Заменить все в окне поиска и замены *) with ReplaceDialog1 do if frReplaceAll in Options then begin (* текущая позиция принимает значение 1*) index:=1; (* Определение образца поиска *) ToFind:=ReplaceDialog1.FindText; (* Определение длины образца поиска *) FoundLen:=Length(ToFind); (* Определение длины образца замены *) ReplaceLen:=Length(ReplaceDialog1.ReplaceText); (* В переменную FindIn переписывается текст из компонента Memo1 *) FindIn:=Mainform.Memo1.Text; (* Определение номера символа, с которого образец поиска встречается в тексте *) Found:=Pos(ToFind,FindIn); (* Пока образец поиска встречается в тексте происходит выделение найденного слова и его замена *) while Found>0 do begin (* В переменную FindIn переписывается текст из компонента Memo1 *) FindIn:=Mainform.Memo1.Text; (* Из FindIn удаляются символы от начала текста до последнего символа найденного слова *) delete(FindIn,1,index+Found+FoundLen-2); (* Окно формы располагается поверх всех остальных окон *) Mainform.BringToFront; (* Фокус устанавливается на компонент Memo1 *) Mainform.ActiveControl:=Memo1; (* Определяется номер символа, с которого начинается выделение *) Memo1.SelStart:=Index+Found-2; (* Задается длина выделения *) Memo1.SelLength:=FoundLen; (* Выделенный текст заменяется на образец замены *) Memo1.SelText:=ReplaceDialog1.ReplaceText;
15 (* Определяется номер символа, с которого будет продолжен поиск *) Index:=index+Found+ReplaceLen-1; (* Определяется номер символа, с которого образец поиска встречается в урезанном тексте *) Found:=Pos(ToFind,FindIn); end; {While} (* В конце поиска выдается информационное окно *) MessageDlg('Просмотр документа окончен',mtInformation, [mbOK],0); (* Обнуляется текущая позиция поиска *) index:=0 end {Then} else (* Обработка нажатия кнопки Заменить в окне замены *) (* Выделенный текст заменяется на заданное слово *) Memo1.SelText:=ReplaceDialog1.ReplaceText; end;
13. Запустите программу на исполнение. Откройте какойRun⏐Run нибудь файл. Попробуйте найти и заменить в тексте какоенибудь слово. Протестируйте работу кнопки Заменить все 14. Сохраните результаты работы File⏐Save Задание: добавьте в проект возможность поиска и замены только целых слов и возможность учета различий между прописными и строчными буквами. procedure TMainform.N23Click(…); 15. Создайте процедуру об- begin работки пункта MessageDlg('Программа создана ДД.ММ.ГГ', меню СправmtInformation, [mbOK],1) ка⏐О програмend; ме… 16. Запустите программу на исполнение. Протестируйте ра- Run⏐Run боту команды Справка⏐О программе… 17. Сохраните результаты работы File⏐Save Задание: добавьте в проект справочную систему по возможностям текстового редактора, оформленную в виде отдельной формы. Предусмотрите возможность поиска справочной информации по ключевому слову в названии темы. Задание: создайте панель инструментов (см. рис. 9). В примерах работы информационное окно выводилось с помощью процедуры MessageDlg(‘‘,,, ). Параметр имеет тип TMsgDlgType. Данный тип относится к перечислимым типам. На месте параметра может стоять одно из возможных значений перечислимого типа TMsgDlgType:
16
mtWarning - предупреждающее окно с желтым восклицательным знаком, mtError – окно-сообщение об ошибке с красным восклицательным знаком, mtInformation - окно с информационным сообщением с синим знаком i, mtConfirmation - окно для подтверждения с зеленым вопросительным знаком, mtCustom- окно без графических знаков с сообщением. Параметр имеет тип TMsgDlgButtons, представляющий собой множество из значений перечислимого типа TMsgDlgButton = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbHelp); Множество, указанное в списке параметров процедуры MessageDlg, определяет набор кнопок в окне. Параметр является функцией, возвращающей номер кнопки, с помощью которой закрыто окно: mrNone=0 - кнопка не нажата, mrOK=1 - нажата кнопка ОК, mrCancel=2 - нажата кнопка Отмена, mrAbort=3 - нажата кнопка Прервать, mrRetry=4 - нажата кнопка Повторить, mrIgnore=5 - нажата кнопка Пропустить, mrYes=6 - нажата кнопка Да, mrNo=7 - нажата кнопка Нет, mrAll=8 - нажата кнопка Все. Процедура MessageDlgPos отличается от процедуры MessageDlg тем, что в первом случае окно выводится в указанное место экрана, а во втором случае окно выводится в центр экрана. У процедуры MessageDlgPos первые четыре параметра такие же, как у процедуры MessageDlg. Последние два параметра - это координаты левого верхнего угла окна. Подготовьтесь к ответам на все(!) контрольные вопросы и выполните все(!) контрольные задания.
Контрольные вопросы и задания 1-2. Обзор компонент закладки Dialogs. Компоненты OpenDialog, SaveDialog, PrintDialog, PrintSetupDialog 1. Охарактеризуйте компоненты, входящие в закладку Dialogs. 2. Расскажите о структуре и функционировании пунктов меню текстового редактора. 3. Как изменить имя формы? 4. Поставьте другой значок для кнопки системного меню приложения. 5. Как сделать, чтобы при открытии проекта окно разворачивалось на весь экран? 6. Какие действия выполняются при создании формы?
17 7. Как сделать, чтобы панель всегда располагалась вверху формы? 8. Как развернуть компонент на всю область формы? 9. Как написать обработчик пункта меню Файл⏐Выход. 10. Напишите команды из процедуры обработки выбора пунктов
Файл⏐Создать, Файл⏐Открыть, Файл⏐Сохранить как..., Файл⏐Макет страницы..., Файл⏐Печать.... 11. Как устанавливается автофильтрация файлов при открытии и сохранении. 12. Для чего предназначен метод Execute? 13. Для чего предназначены методы Printer.BeginDoc и Printer.EndDoc? 14. Что означает метод TextOut()? Какому классу он принадлежит? 3. Работа с буфером обмена. Компоненты FontDialog, ColorDialog, FindDialog, ReplaceDialog 15. Напишите команды из процедур обработки выбора пунктов Правка⏐Копировать, Правка⏐Вырезать, Правка⏐Вставить, Правка⏐Очистить, Правка⏐Выделить все, Правка⏐Шрифт…, Правка⏐Цвет фона…, Поиск⏐Найти…, 16. Как создать процедуру обработки события OnFind компонента FindDialog1? Когда возникает такое событие? 17. Опишите алгоритм поиска и выделения нужного фрагмента текста. 18. Напишите фрагмент обработки выбора радиокнопки Поиск вверх. 19. Как определить образец поиска? 20. Как переписать в переменную текст из компонента Memo1? 21. Объясните смысл команды Found:=Pos(ToFind,FindIn); 22. Зачем в процессе поиска из переменной FindIn удаляются символы от начала текста до последнего символа найденного слова? 23. Как расположить окно формы поверх всех остальных окон? 24. Как установить фокус на элемент? Зачем это нужно делать? 25. Как происходит выделение фрагмента текста? Укажите методы. 26. Объясните смысл команды Index:=index+Found+FoundLen-1; Почему формула строится именно так? 27. Опишите тип и значения свойства Options компонента FindDialog. 28. Как убрать (добавить) из диалогового окна поиска переключатели направления поиска и выключатели поиска только целых слов и учета различий между прописными и строчными буквами? 29. Напишите команду из процедуры обработки выбора пункта Поиск⏐ Заменить … 30. Какие события связаны с нажатием командных кнопок в диалоговом окне поиска и замены? Что происходит при нажатии кнопки Заменить все?
18
Как создать процедуру обработки события OnFind компонента ReplaceDialog1? Когда возникает такое событие? 32. Чем отличаются алгоритмы поиска нужного фрагмента текста для компонентов FindDialog1 и ReplaceDialog1? Чем обусловлено такое отличие? 33. Опишите алгоритм обработки события OnReplace компонента ReplaceDialog1. 34. Объясните смысл команды delete(FindIn,1,index+Found+FoundLen-2); Поясните построение формулы при вычислении третьего параметра процедуры. 35. Напишите команду замены одного слова другим. Объясните ее смысл. 36. Напишите команду из процедуры обработки меню Справка⏐О программе… 37. Поясните назначение процедур MessageDlg, MessageDlgPos и их отличие. 38. Укажите списки параметров для процедур MessageDlg, MessageDlgPos. 39. Охарактеризуйте все значения типа TMsgDlgType. 40. Что представляют собой типы TMsgDlgButtons и TMsgDlgButton? 41. Назовите значения типа TMsgDlgButton и поясните их смысл. 42. В каком случае и какое значение возвращает четвертый параметр процедур MessageDlg, MessageDlgPos? 43. Выведите информационное окно с двумя кнопками и заданным текстом в левый верхний угол экрана. 31.
Индивидуальные задания: 1. Исправьте обработчик OnFind компонента FindDialog1 так, чтобы можно было менять направление поиска. 2. Добавьте в проект возможность поиска только целых слов и возможность учета различий между прописными и строчными буквами. 3. Добавьте в проект возможность поиска и замены только целых слов и возможность учета различий между прописными и строчными буквами. 4. Добавьте в проект справочную систему по возможностям текстового редактора, оформленную в виде отдельной формы. Предусмотрите возможность поиска справочной информации по ключевому слову в названии темы. Литература 1. Архангельский А.Я. Программирование в Delphi6/ А.Я. Архангельский. БИНОМ. – 2003. 2. Баженова И.Ю. Delphi6. 2002. 3. Епанешников А.М., Епанешников В.А. Программирование в среде Delphi: Учебное пособие в 4-х ч. Ч. 3. Проектирование программ. – М.: ДИАЛОГ-МИФИ, 1998. – 336 с.
19
Матчо Дж., Фолкнер Д.Р. Delphi. М.: Бином, 1995, 457с. Орлик С.В. Секреты Delphi на примерах.- М.: Бином.1996. 316 с. Понамарев В. Delphi7.- BHV.- 2003. Тейксера С., Пачеко К. Borland Delphi6. Руководство разработчика. Вильямс. – 2002. 8. Тюкачев Н.А., Михайлова Е.Е., Копытин А.В. Языки и системы программирования. Delphi. - Воронеж: ВГУ, 2004. 9. Фаронов В.В. Delphi3. Учебный курс.- М.: Нолидж, 1998,389 с. 4. 5. 6. 7.
Учебное издание
Delphi. Страница Dialogs Учебное пособие для вузов (Практикум)
Составители: Васильев Валерий Викторович, Хливненко Любовь Владимировна
Редактор
Бунина Т.Д.