- •Содержание
- •Лабораторная работа №13 Изучение среды разработчика
- •Лабораторная работа № 14 События в Delphi
- •Лабораторная работа №15 Примеры создания модулей
- •Лабораторная работа №16 Примеры использования компонентов Label, Edit, Memo
- •Лабораторная работа №17 Примеры использования командных кнопок
- •Лабораторная работа№18 Изучение методов и свойств
- •Лабораторная работа№19 Пример использования компонентов RadioGroup и CheckListBox, Radiobutton, CheckBox.
- •Лабораторная работа№20 Примеры использования компонентов ListBox и ComboBox.
- •Лабораторная работа№21 Примеры использования компонента StringGrid.
- •Лабораторная работа №22 Отладка программ
- •Лабораторная работа№23 Примеры использования компонентов Image, Shape, Timer.
- •Лабораторная работа №24 Работа с формами
- •Лабораторная работа№25 Примеры использования компонента MainMenu и PopupMenu.
- •Лабораторная работа№26 Примеры использования компонентов OpenDialog, SaveDialog и FontDialog.
- •Лабораторная работа№27 Создание мультимедийных приложений.
- •Лабораторная работа№28 Печать текстовая и графическая.
- •Лабораторная работа№29 Работа с базами данных
- •Регистрация базы данных – создание псевдонима
- •Создание программы в Delphi
- •Лабораторная работа№30 Сортировка и фильтрация данных
- •Лабораторная работа№31 Вычисляемые поля. Перенос полей на форму
Лабораторная работа №22 Отладка программ
Цель: научиться наблюдать за состоянием переменной или выражения, устанавливать /снимать точку контрольного останова, просматривать протокол работы программы, выполнять отладку программ
Студент должен
знать:
уметь:
Примеры и задания.
События мыши и клавиатуры вызываются воздействиями пользователя на программу. Системные события исходят непосредственно от Windows.
Событие OnCreate наступает, когда форма создается.
Событие OnShow происходит, когда форма отображается (показана).
Событие OnActive происходит, когда форма становится активным окном программы (событие генерируется при получении формой фокуса ввода. Это происходит, когда пользователь возвращается в форму из другой формы того же приложения).
Событие OnPaint происходит, когда форму необходимо отобразить заново (перерисовать).
Событие OnResize происходит, когда размеры формы изменяются.
Упражнение 1. Для демонстрации системных событий напишем приложение, содержащее модальное окно.
Решение:
Создайте новый проект. Сохраните новое приложение в папке Exercise8, файл модуля — под именем Main.dpr, файл проекта — Exercise8.dpr.
Измените значения свойств формы следующим образом:
Name MainF
Caption Главная форма
Создайте обработчики событий OnCreate, OnShow и OnActivate, каждый из которых в заголовок формы выводит свое название, например, в процедуре Form I. FormCreate напишите
Caption: = 'FormCreate';
В обработчике OnPaint формы напишите следующие операторы:
With Canvas Do
Begin
Font. Color:=rgb (Random(255),Random(255),Random(255)); Font. Size:=90; (Size=-Height*72/PixelsPerInch}
Font. Style:= [fsBold, fsUnderLine];
Brush.Color:=clBtnFace;
TextOut(30, 100, 'Delphi1)
end;
Свойство Font (шрифт), как и свойство Canvas, обладает набором собственных свойств и методов. Так, свойство Size задает размер символов, a Style — стиль начертания, здесь задан полужирный с подчеркиванием.
Добавим в проект еще одну форму, выполнив команду New Form меню File.
Измените значения свойств формы следующим образом:
Name MainF
Caption Вторая форма
Сохраните модуль формы под именем Modal.
Напишите обработчики событий OnCreate, OnShow и OnActivate, подобные тем, что написали для первой формы.
В обработчике события OnPaint второй формы напишите оператор:
Caption:=IntToStr (Random(lOOO));
при возникновении этого события в заголовке формы будет отображаться случайное число из интервала от 0 до 1000.
Подключите модуль второй формы к первой, выполнив команду Use unit... меню File, в появившемся диалоговом окне выберите Modal. Для того чтобы вторая форма отображалась во время выполнения приложения, в обработчике события OnDblClick первой формы напишите оператор
ModalF.Show;
Приложение написано. Сохраните файлы проекты, выполнив команду Save All ... меню File.
Установим точки прерывания.
1-й способ. Установите точку прерывания, щелкнув мышью на левом краю окна редактирования. При этом выбранная для остановки строка выделяется красной полосой, на левом краю строчки появляется маленький значок (рис. 2.3.4.3.1).
2-й способ. Выполните команду Run/Add Breakpoint/Source Breakpoint... Появится диалоговая панель редактирования точек прерывания Edit Breakpoint с несколькими полями, среди которых не только координаты файла и номер строки (где будет задана точка прерывания), но и некоторые другие полезные данные. Например, Вы можете задать параметр Condition, где ввести выражение, при истинности которого точка прерывания «сработает», иначе выполнение приложения не будет прервано при прохождении через эту строку. Дополнительно можно задать количество проходов, после которых точка прерывания переходит в активное состояние.
Установите точки останова в обработчике каждого события и расположите формы и окно редактирования так, как показано на рис.1.
Эксперимент. Запустите приложение. Проследите за выполнением приложения по шагам. Первая остановка произойдет на процедуре MainF.FormCreate (это говорит о том, что произошло событие создания первой формы), продолжите выполнение приложения, выполнив команду Run меню Run.
Установите, какие события возникают при запуске приложения и в какой последовательности.
Попробуйте переместить форму по экрану, минимизировать и восстановить, изменить ее размеры. Какие события при этом происходят, как изменяется вид окна?
Для вызова второй формы дважды щелкните левой кнопкой мыши по форме. Поэкспериментируйте со второй формой: переместите вторую форму, измените ее размеры, сверните и раскройте окно формы. Что при этом происходит с формами? Попробуйте это объяснить.
Закройте приложение. Добавьте в обработчик события OnResize первой формы оператор: RePaint (метод Repaint порождает событие OnPaint, что заставляет форму немедленно перерисоваться) .
Запустите приложение и поэкспериментируйте с ним. Какие изменения произошли в поведении формы? Попробуйте объяснить их. ♦
События, генерируемые операционной системой при закрытии окна:
Событие OnDeActivate происходит, когда форма теряет фокус ввода.
Событие OnHide происходит, когда форма становится невидимой.
Событие OnCloseQuery происходит при вызове метода Close, или при выборе команды Close из системного меню формы, или при щелчке на кнопке закрытия окна. Это событие используется для определения условий, при которых форма может закрыться.
procedure TMainF.FormCloseQuery (Sender: TObject; varCanClose: Boolean);
Логический параметр CanClose определяет, может ли форма закрыться или нет; его значение по умолчанию равно True.
Например, Вы можете использовать обработчик OnCloseQuery, чтобы спросить пользователя, действительно ли он хочет немедленно закрыть форму:
procedure TMainF.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin
if MessageDlg('Вы действительно хотите завершить работу?',mtConfirmation,[mbOk,mbNo],0)=mrNo then CanClose:=False; and;
В этом фрагменте кода использована функция MessageDlg, отображающая диалоговое окно в центре экрана. Первый параметр этой функции — это сообщение, которое выводится в окне. Второй параметр — тип окна — может принимать следующие значения: mtWarning (предупреждение), mtError (ошибка), mtlnformation (информация), mtConf irmation (подтверждение). Третий параметр определяет, какие кнопки должны появиться в диалоговом окне, его значения — mbYes, mbNo, inbOK, mbCancel, mbAbort, mbRetry, mblgnore, mbAll, mbHelp. Четвертый параметр — для определения темы помощи, которая должна появиться, когда пользователь щелкает на кнопке помощи или нажимает F1 во время отображения диалогового окна.
Событие OnClose происходит, когда имело место событие OnCloseQuery, в результате чего форма закрывается.
procedure TMainF.FormClose(Sender: TObject; var Action:
Tt: 1oseAction);
Значение параметра Action определяет, закрывается ли форма фактически. Параметр может принимать следующие значения:
caNone Форме не разрешается закрываться.
caHide Форма не закрывается, а просто становится
скрытой. Ваше приложение может иметь доступ к скрытой форме.
caFree Форма закрывается, и вся память, занятая
формой, освобождается.
caMinimize Форма минимизируется, прежде чем закрыться. Это значение параметра установлено по умолчанию для дочерних окон MDI-приложений.
Событие OnDestroy происходит, когда форма готова исчезнуть навсегда.