Лекция: if Form1.CheckBox2.Checked then

анализирует, выбрана ли кнопка CheckBox2 на форме Form1.

 

На Form3 поместите также кнопку «Выход» для завершения работы приложения и напишите для нее обработчик:

 

procedure TForm3.Button1Click(Sender: TObject);

begin

Form1.Close; // закрыть главную форму приложения, после чего приложение

// завершит работу

end;

 

Завершать работу приложения лучше нажатием на эту кнопку, а не на крестик в верхнем правом углу окна приложения.

 

Убедитесь в том, что главной формой приложения является Form1 (эта форма будет появляться сразу после запуска приложения), для этого воспользуйтесь опцией меню Project/Options… и вкладкой Forms.

 

 

 

  1. (*) Программу N27 переделайте следующим образом: на Form1 и Form2 добавьте правильные ответы для соответствующих вопросов, например, Form1 на этапе конструирования может выглядеть так:

 

 

Затем сделайте панели с правильными ответами невидимыми и уменьшите ширину форм. После запуска приложения Form1 должна выглядеть так:

 

 

Аналогично должна выглядеть вначале и Form2.

 

На Form3 добавьте кнопку «Просмотр правильных ответов», по которой должны блокироваться все кнопки выбора на Form1 и Form2, отображаться невидимые ранее панели с правильными ответами на этих формах, увеличиваться ширина этих форм, скрываться Form3 и отображаться Form1, которая теперь уже должна выглядеть так:

 

 

Аналогично должна выглядеть на этапе просмотра ответов и Form2.

 

На каждую форму добавьте кнопку «Выход», по которой должна закрываться главная форма приложения Form1.Close;, после чего приложение заканчивает свою работу. Можно также на этапе просмотра ответов выводить на каждой из Form1 и Form2 информацию о том, правильно ли ответил пользователь на находящийся на форме вопрос, например, подсвечивать форму разными цветами в случаях правильного или неправильного ответов.

 

 

 

 

  1. (*) Программу N25 модифицируйте следующим образом: установите для пользователя максимальное время (например, 2 минуты) для ответов на вопросы теста. По окончании этого времени программа должна проверить ответы пользователя и вывести результат проверки, даже если он сам еще не успел нажать кнопку готовности «Yes». Выведите на форму индикатор времени, чтобы пользователь видел, сколько времени у него еще осталось.

 

Индикатор времени (ProgressBar) находится на вкладке Win32 палитры компонентов.


 

Вначале разберитесь, как можно работать с этим компонентом: поместите его на форму, установите для него на этапе конструирования следующие целочисленные свойства, свойства: Min – 0 (начальное время), Max – 120 (конечное время, в секундах), Position – 30 (текущее время, в секундах). Вы увидите примерно такую картину:

 

 

Можете поэкспериментировать со свойствами Orientation и Smooth, чтобы выбрать подходящий внешний вид компонента.

 

 

Установите значение свойства Step = 5, пусть каждый раз к прошедшему времени добавляется 5 секунд. Установите текущее время (ProgressBar1.Position) в 0.

 

Поместите на форму обычную кнопку и напишите для нее такой обработчик:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

ProgressBar1.Position:=ProgressBar1.Position+ProgressBar1.Step; // при каждом нажатии

// кнопки к текущему времени добавляется Step

end;

 

То же самое (почти) можно сделать, вызвав метод StepIt:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

ProgressBar1.StepIt;

end;

 

Теперь запустите приложение и посмотрите, как оно работает.

 

 

Измените обработчик – пусть в нем сравнивается текущее время и максимальное (ProgressBar1.Position и ProgressBar1.Max), в случае, если текущее время меньше максимального, к текущему времени добавляется Step, а если нет – выводится сообщение о том, что время закончилось. Запустите приложение и посмотрите, как оно работает.

 

 

Но нам нужно, чтобы индикатор времени отслеживал настоящее время, поэтому воспользуемся компонентом Timer. Он находится на вкладке System:

 

 

Добавьте на форму компонент Timer.

 

 

Этот компонент не отображается на форме в режиме выполнения программы. Установите для таймера свойство Interval в 5000 – мы хотим, чтобы событие OnTimer происходило каждые 5000 миллисекунд (5 секунд).

 

Напишите обработчик для события OnTimer компонента Timer1 – перепишите туда обработчик для кнопки, а кнопку можно удалить. Теперь через каждые 5 секунд будут выполняться операторы, записанные в этом обработчике и индикатор времени будет обновляться автоматически. Измените немного обработчик — в случае, если текущее время больше или равно максимальному, остановите таймер, добавив оператор

 

Timer1.Enabled:=False;

 

Теперь событие OnTimer больше не будет наступать, и его обработчик больше не будет выполняться.

 

Запустите приложение и посмотрите, как оно работает. Чтобы не ждать 2 минуты, пока закончиться время, можно при отладке изменить максимальное время, например, на 15 или 20 секунд.

 

Далее остается добавить новые компоненты и код в программу N25. Обработчик для OnTimer придется еще немного изменить — в случае, если текущее время больше или равно максимальному, должны выполниться все те действия (проверка ответов пользователя и вывод результата), которые выполняются по нажатие кнопки “Yes”, так что скопируйте код для кнопки в нужное место кода для таймера (либо просто вызовите процедуру BitBtn1Click(BitBtn1); или Button1Click(Button1); вместо повторения кода). В обработчике для кнопки заблокируйте варианты ответов пользователя и саму кнопку “Yes”, чтобы пользователь не смог вторично ответить на вопросы теста, и остановите таймер.

 

  1. (*) Разработайте такое же такое же приложение, как и в задаче 29, но вместо ProgressBar используйте компонент Gauge с вкладки Samples

 

Компонент Gauge имеет основные целочисленные свойства, аналогичные свойствам компонента ProgressBar:

 

Свойства ProgressBar Свойства Gauge Краткое описание
     
Max MaxValue Максимальное значение
Min MinValue Минимальное значение
Position Progress Текущее значение

 

Поэкспериментируйте на этапе конструирования с этими свойствами Gauge, чтобы лучше понять, что они значат. Поэкспериментируйте также со свойствами Gauge, отсутствующими у ProgressBarKind (вид индикатора), ForeColor (цвет заполнения), BackColor (цвет фона).

 

 

Выберите горизонтальный, вертикальный или круглый (овальный) вид индикатора. Цвета выбирайте любые, кроме красного, так как его мы будем использовать в качестве предупреждающего цвета, указывающего пользователю, что время кончается.

У компонента Gauge нет свойства Step и метода StepIt, так что первоначальный обработчик для кнопки будет выглядеть так:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

Gauge1.Progress:= Gauge1.Progress +5; // при каждом нажатии

// кнопки к текущему времени добавляется 5

end;

 

Далее выполняйте действия, аналогичные описанным в задаче 29, с учетом разного названия свойств и компонент. Когда до окончания работы останется 15 секунд, пусть индикатор времени перекрасится в красный цвет.

 

  1. Ввести номер дня недели, с помощью оператора case (Delphi) или switch (Builder) вывести название дня недели, например, номеру дня недели 2 соответствует Вторник.
  2. В задаче 31 покрасьте форму в разные цвета в зависимости от дня недели.
  3. Ввести номер месяца, с помощью оператора case (Delphi) или switch (Builder) вывести сезон (зима, весна, лето, осень), соответствующий этому месяцу.
  4. В задаче 33 покрасьте форму в разные цвета в зависимости от сезона.
  5. Ввести цены одного билета для 3-х зон (каждой зоне соответствует своя цена билета), номер зоны и количество билетов. Вывести общую стоимость всех билетов, использовать оператор case (Delphi) или switch (Builder).
  6. (**) Ввести целое число – стоимость в рублях, вывести наименование в соответствующей форме, например, 21 рубль, 442 рубля, 811 рублей. Использовать оператор case (Delphi) или switch (Builder). В этой задаче скорее всего потребуется использовать также и оператор if.

 

 

Вар-т 1:

1, 10, 11, 20, 21, 30 (*), задание 1 вар из бумажной методички (*), 31

 

Вар-т 2:

2, 9, 12, 19, 22, 29 (*), задание 2 вар из бумажной методички (*), 32

 

Вар-т 3:

3, 8, 13, 18, 23, 28 (*), задание 3 вар из бумажной методички (*), 33

 

Вар-т 4:

4, 7, 14, 17, 24, 27 (*), задание 4 вар из бумажной методички (*), 34

 

Вар-т 5:

5, 6, 15, 16, 25, 26 (*), задание 5 вар из бумажной методички (*), 35

 

Вар-т 6:

1, 9, 11, 18, 22, 27 (*), задание 6 вар из бумажной методички (*), 35

 

Вар-т 7:

2, 10, 12, 20, 23, 26 (*), задание 7 вар из бумажной методички (*), 34

 

Вар-т 8:

3, 7, 14, 17, 24, 30 (*), задание 8 вар из бумажной методички (*), 33

 

Вар-т 9:

4, 6, 15, 20, 25, 29 (*), задание 9 вар из бумажной методички (*), 32

 

Вар-т 10:

4, 9, 13, 19, 21, 28 (*), задание 10 вар из бумажной методички (*), 31

 

 

еще рефераты
Еще работы по географии