Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Запоминание времени и инициализация счетчика тактов
Переключитесь на страницу Events в Инспекторе объектов и выполните двойной щелчок мышью справа от OnTimer, чтобы создать обработчик события для тактов таймера. Отредактируйте процедуру Timer1Timer в окне Unit в соответствии с нижеследующим листингом: Procedure TForm1.Timer1Timer (Sender: TObject); Var s: String; Seconds: Real; begin TickCounter: =TickCounter + 1; Seconds: =TickCounter / 10; Str (Seconds: 10: 1, s); TotalTime.Text: = s; end; Далее перейдите в начало файла в окне Unit и найдите private -секцию определения класса TForm1. Включите нижеуказанное описание переменных сразу после комментария “Privatedeclarations” (Приватные объявления): TickCounter: Longint; LapCounter: Logint; Первая переменная TickCounter хранит подсчитанные такты (это способ запоминания времени в программе). Компонент Timer генерирует такты настолько часто, насколько вы ему укажите. Он не следит за количеством тактов, поэтому нам и нужна переменная, содержащая число тактов, и обработчик OnTimer должен корректировать эту переменную по каждому тику таймеру. Вторая переменная LapCounter будет использоваться для хранения вычисленного прошедшего интервала времени, устанавливаемый при нажатии кнопки Интервал. Обработчик события OnTimer - процедура, вызываемая каждый раз, когда таймер генерирует тик. Первая строка увеличивает TickCounter на 1, указывая, что прошел тик. Вторая строка преобразует количество тактов в секунды; результат сохраняется в Seconds. Третья строка форматирует число секунд в строковый тип. Последняя строка кода изменяет свойство Text компонента Memo для TotalTime, устанавливая его так, чтобы он отображал новый временной отсчет. Мы забыли еще установить начальные нулевые значения для переменных TickCounter и LapCounter при запуске программы. И хотя Delphi автоматически инициализирует их в 0 при запуске, правила хорошего тона в программировании для исключения двусмысленностей требует необходимости их явной установки. Эту процедуру удобно сделать в обработчике события OnCreate, возникающем при создании формы. Выберите форму щелкнув на пустом месте формы, двойным щелчком на событии OnCreate вызовите на экран код обработчика и добавьте две строчки: TickCounter: = 0; LapCounter: = 0; Прежде чем размещать новые компоненты, выберите компонент Timer и измените его свойство Enabled на False, так как мы хотим, чтобы наш секундомер был выключен при запуске программы. Затем выберите компонент Button (Кнопка) из палитры компонентов и поместите три кнопки ниже строк, отображающих время. Используйте инструментальные средства выравнивания и изменения размеров для красивого размещения кнопок. Запуск и остановка таймера. Измените для первой кнопки Button1 свойства Name на StartBtn, а Caption на “& Старт”. Затем для его события OnClick создайте следующий обработчик события: ProcedureTForm1.StartBtnClick (Sender: TObject); begin If Timer1.Enabled Tnen Begin Timerr1.Enabled: = False; StartBtn.Caption: = ‘& Старт’; End Else Begin Timerr1.Enabled: = True; StartBtn.Caption: = ‘& Стоп’; End; end; Этот обработчик моделирует кнопку Старт/Стоп, включая и выключая таймер и изменяя название кнопки. Каждый интервал времени представляет собой разницу между текущим, прошедшим временем и временем завершения предыдущего интервала. Для того, чтобы добавить эту возможность измените для второй кнопки Button2 свойства Name на LapBtn, а Caption на “& Интервал”. Затем для его события OnClick создайте следующий обработчик события: ProcedureTForm1.LapBtnClick (Sender: Tobject); Var s: String; Temp: Longint; begin Temp: =TickCounter - LapCounter; LapCounter: =TickCounter; Str ((Temp/10): 0: 1, s); LapTime.Text: = s; end; Первая строка кода вычисляет время текущего интервала в тактах. Затем мы корректируем значение LapCounter для вычисления следующего итервала. Наконец, форматируем время интервала и присваиваем его свойству Text компонента LapTime для отображения его в форме Сброс таймера - просто результат установки переменных TickCounter и LapCounter в 0 и установки свойства Text, отображающих время в 0. Измените для кнопки Button3 свойства Name на ResetBtn, а Caption на “Сброс”. Затем для его события OnClick создайте следующий обработчик события: ProcedureTForm1.ResetBtnClick (Sender: Tobject); begin TickCounter: = 0; LapCounter: = 0; LapTime.Text: = ‘0.0’; TotalTime.Text: = ‘0.0’; end; Итак, программа готова. Сохраните вашу работу и выполните ее. Задания для самостоятельного выполнения: Вариант 1. Изменить программу, добавив текстовое Memo поле со всеми отмерянными интервалами секундомера. Вариант 2. Изменить программу, добавив текстовое поле с общим временем (сумма отмерянных интервалов секундомера). Вариант 3. Изменить программу, добавив текстовое Memo поле с отмерянными интервалами секундомера в минутах. Вариант 4. Изменить программу, добавив текстовое поле с максимальным интервалом времени (отмерянные интервалы выводить в memo). Вариант 5. Изменить программу, добавив кнопку паузы. Вариант 6. Изменить программу, добавив текстовое поле с минимальным интервалом времени (отмерянные интервалы выводить в memo). Вариант 7. Изменить программу, добавив текстовое Memoполе со всеми интервалами секундомера более 1 минуты. Вариант 8. Изменить программу, добавив текстовое Memoполе со всеми интервалами секундомера более 1 минуты. Вариант 9. Изменить программу, добавив текстовое поле со средним арифметическим от всехинтервалов. Вариант 10. Изменить программу, добавив возможность выбора интервалов секундомера. Вариант 11. Изменить программу, добавив возможность выбора интервала секундомеравводом значения в текстовое поле. Вариант 12. Изменить программу, добавив возможность выбора интервала секундомера вводом значения через компонент TrackBar Контрольные вопросы: 1. Назначение компонента Timer? 2. Для чего используются невизуальные компоненты? 3. Свойства компонента ProgressBar? 4. Какое свойство задает период генерации события Timer?
Лабораторная работа № 22.
Использование компонентов зависимых и независимых переключателей. Цель работы: Применение теоретических навыков на практике. Ознакомить учащихся с компонентами «переключателями» на форме приложения. Закрепить полученные на лекции знания. Написать и отладить программу.
Теория. Рассмотрим 2 вида переключателей 1) TCheckBox - независимый переключатель
Независимый переключатель TCheckBox используется для того, чтобы пользователь мог указать свое решение типаДа/Нет или Да/Нет/Не совсем (в последнем случае в окошке компонента устанавливается флаг выбора, но само окошко закрашивается серым цветом). Это решение отражается в свойстве State компонента, доступном как для чтения, так и для записи. В составе диалогового окна может быть несколько компонентов
TCheckBox. Состояние любого из них не зависит от состояния остальных, поэтому такие переключатели называются независимыми. Типичное использование компонента: ifCheckBoxl.Checked then
else Или: case CheckBoxl.State of cbChecked:...; {выбран } cbUnchecked:...; {невыбран} cbGrayed:...; {выделенсерым} end; 2) TRadioButton -зависимые переключатели, предназначенные для выбора одного из нескольких взаимоисключающих решений. На форму (точнее, в компонент-контейнер) помещается по меньшей мере два таких компонента. Они могут иметь только два состояния, определяемых свойством Сhecked. Если в одном компоненте это свойство принимает значение True, во всех других компонентах, расположенных в том же контейнере, свойства Сhecked принимают значения False. Помимо свойства checked компонент TRadioButton имеет еще одно специфичное свойство - Alignment, аналогичное такому же свойству TCheckBox. Как и в TCheckBox, программист не может изменять размеры и цвет круглого окошка компонента. Пример: В зависимости от выбора найти следующее или предыдущее число от числа А.
Vara: integer; Begin a: = StrToInt(Edit1.Text); if RadioButton1.Checked then a: =a+1 else if RadioButton2.Checked then a: =a-1; Edit2.Text: =IntToStr(a); End; Задания: Вариант №1. Используя 3 зависимых переключателя, решить: Даны 3 числа, в зависимости от выбора, найти сумму, разность или произведение этих чисел Вариант №2. Используя 2 зависимых переключателя, решить: В зависимости от выбора, найти минимальное или максимальное из 4 чисел. Вариант №3. Используя 2 зависимых переключателя, решить: В зависимости от выбора, возрастающая или убывающая последовательность из 3 чисел. Вариант №4. Используя два зависимых переключателя, решить: В зависимости от выбора, найти минимальное из первого и второго числа или максимальное из третьего и четвертого числа. Вариант №5. Используя 3 зависимых переключателя решить: В зависимости от выбора, найти квадрат, куб или возвести в пятую степень трехмерное число. Вариант №6. Используя 2 зависимых переключателя, решить: В зависимости от выбора, найти сумму, разность цифр четырехзначного числа. Вариант №7. Используя 3 зависимых переключателя решить: В зависимости от выбора, найти по трем сторонам треугольник равносторонний, равнобедренный или вообще не существует. Вариант №8. Используя 3 зависимых переключателя решить: В зависимости от выбора, 1)а> b> c> d 2)a< b< c< d 3)a=b=c=d и выдать сообщение о результате проверки. Вариант №9. Используя 3 зависимых переключателя решить: В зависимости от выбора, найти сумму А и В, произведение В и С, разность А и Д. Вариант №10. Используя 3 зависимых переключателя решить: В зависимости от выбора, найти среднее арифметическое, сумму чисел или минимальное из 4 чисел. Вариант №11. Используя 3 зависимых переключателя решить: В зависимости от выбора, найти сумму четных элементов, разность нечетных или количество единиц в массиве. Вариант №12. Используя 2 зависимых переключателя решить: В зависимости от выбора, найти количество симметричных или разных в написании двухзначных чисел. Вариант №13. Используя 3 зависимых переключателя решить: В зависимости от выбора, найти сумму, количество, разность минимального и максимального элемента в массиве. Вариант №14. Используя 3 зависимых переключателя решить: В зависимости от выбора, найти количество нулей, единиц или двоек в матрице. Вариант №15. Используя 3 зависимых переключателя решить: В зависимости от выбора, найти 1) поменять местами первый элемент и последний. 2)поменять местами первый элемент со вторым. 3) поменять местами первый элемент и предпоследний в массиве. Контрольные вопросы: 1. Какие типы переключателей вы знаете? 2. Назначение компоненты TRadioButton? 3. Назначение компонентыTCheckBox?
Лабораторная работа №23 Популярное:
|
Последнее изменение этой страницы: 2016-08-31; Просмотров: 598; Нарушение авторского права страницы