1. Изменение свойств объектов
Изменение свойств объектов На этом уроке мы научимся, как в процессе работы программы изменять свойства объектов, а также создадим некоторые обработчики событий Для начала давайте посмотрим программу, которую мы сейчас создадим. Называется она «Ты уважаешь информатику?» Посмотреть -> Давайте разберем, как и какие свойства объектов мы изменяли в этой программе Форма программы содержит 4 компоненты Label (метка) и 3 кнопки «ДА», «НЕТ» и «ВЫХОД», причем в начале программы видна только одна надпись, а при наведении курсора на кнопку нет она должна перепрыгивать в другое место
Изменение свойств объектов Итак, начнем создание и разбор программы по шагам ШАГ 1 Запускаем Lazarus и с помощью инспектора объектов изменяем заголовок формы и выбираем ее цвет
Изменение свойств объектов Итак, начнем создание и разбор программы по шагам ШАГ 2 Помещаем на форму с вкладки Стандартные 4 компонента Label и 3 кнопки (Button) Label1 Label2 Label3 Label4 Button1 Button2 Button3
Изменение свойств объектов ШАГ 3 У компонента Label1 через инспектор объектов меняем свойство Caption (надпись) – «Ты уважаешь информатику ?» Label1
Изменение свойств объектов ШАГ 3 У компонента Label1 через инспектор объектов меняем свойство Caption (надпись) – «Ты уважаешь информатику ?» Раскрываем свойство Font объекта Label1 и подбираем нужный размер и цвет шрифта Label1
Изменение свойств объектов ШАГ 4 Аналогичные операции проделываем с надписями Label2, Label3, Label4. Для того, чтобы изменять свойства например Label2, щелкните по нему кнопкой и в инспекторе объектов открываются его свойства Label2 Label3 Label4
Изменение свойств объектов ШАГ 5 Сейчас установим нужные значения свойства Visible (видимость) у надписей. В момент запуска программы должна быть видна только надпись Label1(ее свойство Visible должно иметь значение True (истинно)), а остальные надписи не видны (у них свойство Visible должно иметь значение False (ложно)) Label2 Label3 Label4 Label1
Изменение свойств объектов ШАГ 5 Сейчас установим нужные значения свойства Visible (видимость) у надписей. В момент запуска программы должна быть видна только надпись Label1(ее свойство Visible должно иметь значение True (истинно)), а остальные надписи не видны (у них свойство Visible должно иметь значение False (ложно)) Label2 Label3 Label4 Label1
Изменение свойств объектов ШАГ 6 А сейчас давайте установим свойства кнопок. Изменим надписи на кнопках следующим образом: На кнопке 1 (Button1) – надпись «ДА», на кнопке 2 – надпись «НЕТ» и на кнопке 3 – надпись «ВЫХОД», затем разместим кнопки как на рисунке Делаем это опять через инспектор объектов Аналогично сделаем надписи на кнопках 2 и 3
Изменение свойств объектов ШАГ 7 В момент запуска программы должны быть видны кнопки «ДА» и «НЕТ», а кнопка «ВЫХОД» не видна, поэтому установим свойство Visible для кнопок таким: Для кнопок 1 и 2 свойство Visible устанавливаем в True, а для кнопки 3 («ВЫХОД») - в False
1. Создание процедуры обработки событий
Изменение свойств объектов ШАГ 9 Итак, мы создали форму, разместили на ней компоненты и установили им нужные свойства, настало время писать код обработки событий Сначала для кнопки «НЕТ» (Button1). Эта кнопка должна «убегать» при попытке наведения на нее курсора с целью нажатия, причем убегать случайным образом Вот здесь мы и используем событие, которое возникает при наведении курсора на компонент – OnMouseMove – при этом координаты (положение кнопки «НЕТ») должно изменяться случайно (но за пределы формы она не должна выскакивать) И еще – сделаем ученику предупреждение, первый раз после 3-х попыток наведения на кнопку «НЕТ», и последнее предупреждение после 6 попыток Щелкнем один раз по кнопке «НЕТ», а затем в инспекторе объектов выберем вкладку СОБЫТИЯ. Далее находим событие OnMouseMove и в правой части делаем двойной щелчок – и мы оказываемся в редакторе исходного кода программы
Изменение свойств объектов ШАГ 10 Lazarus автоматически создала процедуру обработки события – наведения курсора на кнопку «НЕТ» В этой процедуре между begin и end мы вставим код Положение кнопки2 от левого края формы будет изменяться случайно от 200 до 450 (вспомните Паскаль) Положение кнопки2 от верхнего края формы будет изменяться случайно от 50 до 300 Таким образом при наведении курсора координата кнопки по горизонтали и вертикали случайно изменится – кнопка перепрыгнет на другое место
Изменение свойств объектов ШАГ 10 Сейчас запрограммируем предупреждения. Для этого нам понадобится счетчик – переменная, значение которой при каждой попытке наведения курсора на кнопку увеличивалось бы на единицу, и когда ее значение превысит 3 – выходит первое предупреждение, а когда 6 - второе Назовем переменную - k. И ее необходимо объявить – описать в интерфейсной части кода модуля: И еще – каждый раз при открытии формы (запуске программы) значение счетчика (k) должно устанавливаться на ноль. Сделаем это так: делаем двойной щелчок по нашей форме, при этом открывается редактор кода и в нем автоматически созданная процедура создания формы OnCreate – впишем туда присваивание k:=0;
Изменение свойств объектов ШАГ 10 А дальше в процедуру Mouse Move для кнопки «НЕТ» дописываем код проверки условия (как в Паскале) При каждом наведении курсора на кнопку прибавляем счетчику единицу
Изменение свойств объектов ШАГ 10 А дальше в процедуру Mouse Move для кнопки «НЕТ» дописываем код проверки условия (как в Паскале) Проверяем условие, и если значение счетчика оказывается больше трех, то делаем надпись «СМОТРИ У МЕНЯ» видимой (значение Visible делаем равным True) – появляется первое предупреждение ученику, который не любит информатику
Изменение свойств объектов ШАГ 10 А дальше в процедуру Mouse Move для кнопки «НЕТ» дописываем код проверки условия (как в Паскале) Проверяем условие, и если значение счетчика оказывается больше шести, то делаем надпись «ДВОЙКУ ПОСТАВЛЮ» тоже видимой (значение Visible делаем равным True) – появляется и второе предупреждение ученику, который не любит информатику Как бы ни пытался ученик очень быстро нажать на кнопку «НЕТ», она все равно ускачет от него, даже если бы он и успел нажать вперед компьютера, то все равно ничего бы не произошло, т.к. процедуру обработки нажатия на кнопку OnClick мы не создали – нажимай сколько угодно
Изменение свойств объектов ШАГ 11 Сейчас создадим процедуру обработки кнопки «ДА» (Button1). Для этого делаем двойной щелчок по кнопке и мы опять в редакторе кода: По нажатию на эту кнопку должна появиться надпись «Спасибо, я так и думал», остальные надписи стать невидимы, кнопки «ДА» и «НЕТ» должны исчезнуть, а кнопка «ВЫХОД» - появиться Делаем видимой надпись «Спасибо, я так и думал» (Label2)
Изменение свойств объектов ШАГ 11 Сейчас создадим процедуру обработки кнопки «ДА» (Button1). Для этого делаем двойной щелчок по кнопке и мы опять в редакторе кода: По нажатию на эту кнопку должна появиться надпись «Спасибо, я так и думал», остальные надписи стать невидимы, кнопки «ДА» и «НЕТ» должны исчезнуть, а кнопка «ВЫХОД» - появиться Делаем невидимыми кнопки «ДА» и «НЕТ»
Изменение свойств объектов ШАГ 11 Сейчас создадим процедуру обработки кнопки «ДА» (Button1). Для этого делаем двойной щелчок по кнопке и мы опять в редакторе кода: По нажатию на эту кнопку должна появиться надпись «Спасибо, я так и думал», остальные надписи стать невидимы, кнопки «ДА» и «НЕТ» должны исчезнуть, а кнопка «ВЫХОД» - появиться Делаем видимой кнопку «ВЫХОД»
Изменение свойств объектов ШАГ 11 Сейчас создадим процедуру обработки кнопки «ДА» (Button1). Для этого делаем двойной щелчок по кнопке и мы опять в редакторе кода: По нажатию на эту кнопку должна появиться надпись «Спасибо, я так и думал», остальные надписи стать невидимы, кнопки «ДА» и «НЕТ» должны исчезнуть, а кнопка «ВЫХОД» - появиться Делаем невидимыми предупреждения ученику
Изменение свойств объектов ШАГ 12 Осталось написать код для кнопки «ВЫХОД» Для этого делаем двойной щелчок по кнопке «ВЫХОД» и в редакторе кода записываем оператор close (закрыть форму) ШАГ 13 Ну вот и все, можно проверить работу программы, но прежде давайте все сохраним (это мы уже умеем: Файл – сохранить все) Сейчас запускаем программу (F9) и проверяем работу (при этом произойдет и компиляция программы – появится EXE – файл в каталоге сохранения) Если возникают ошибки компиляции (компилятор выдает предупреждение о характере ошибки) – посмотрите внимательно код программы. Помните, что если мы забыли, например, точку с запятой (;) – то работать не будет