- •Оглавление
- •Введение
- •Глава 1
- •Использование компонентов общего назначения: tLabel, tButton, tEdit, tShape, tTimer, tPanel
- •1.1.1. Проект «Калькулятор»
- •1.1.2. Проект «Таймер»
- •1.1.3. Проект «Светофор»
- •1.1.4. Проект «Движение шарика tShape с отражением»
- •Глава 2
- •2.1. Класс tCanvas, его свойства и методы
- •2.1.1. Рисование узоров
- •2.1.2. Рисование поля для различных игр
- •2.1.3. Рисование координатной сетки
- •2.1.4. Построение графиков элементарных функций
- •2.2. Класс tBitmap и работа с растровыми рисунками
- •2.2.1. Рисование на поле растрового рисунка
- •2.2.2. Движение двоичного образа по фоновой картинке
- •2.3. Компонент tImage и его использование
- •2.3.1. Проект «Движение компонента tImage»
- •2.3.2. Перемещение картинок
- •2.3.3. Проект «Движение компонента tImage
- •Глава 3
- •3.1. События от мыши
- •3.1.1. Проект «Попади в мишень»
- •3.1.2. Проект «Снежинки»
- •3.1.3. Проект «Крестики-нолики»
- •3.1.4. Движение образа по удерживанию левой кнопки мыши
- •3.1.5. Проект «Жизнь клеток»
- •3.2. События от клавиатуры
- •3.2.1. Код клавиши
- •3.2.2. Управляемое движение образа
- •3.2.3. Совмещение управляемого и неуправляемого движений.
- •Глава 4
- •4.1. Проект «Простейший графический редактор»
- •Глава 5
- •5.1. Создание кнопок
- •5.1.1. Проект «Лохотрон»
- •5.1.2. Игра «Пятнадцать»
- •5.2. Создание компонентов tImage
- •5.2.1. Проект «Угадай картинку»
- •5.2.2. Проект «Собери картинку»
- •Глава 6
- •6.1. Компоненты tStringGrid и tDrawGrid
- •6.1.1. Сортировка массива
- •6.1.2. Проект «Таблица успеваемости»
- •6.1.3. Система предварительной продажи билетов
- •6.1.4. Проект «Таблица рисунков»
- •6.1.5. Рисование в таблице tDrawGrid
- •6.2. Компоненты tListBox, tCombobox ,
- •6.2.1. Прорисовка изображений в списке tListBox
- •6.2.2. Проект «Зоомагазин»
- •6.2.3. Проект «Шуточная игра»
- •6.2.4. Проект «Редактирование списка вопросов»
- •Глава 7
- •7.1. Тест «Знаете ли вы загадки?»
- •7.2. Проект «Исторические даты»
- •Глава 8
- •8.1. Компоненты tOpenDialog, tSaveDialog – диалоги
- •8.1.1. Просмотр текстовых файлов
- •8.2. Добавление и удаление записей в файл и из файла
- •8.2.1. Проект «Журнал группы»
- •8.3. Файлы для проекта «Судоку»
- •Глава 9
- •9.1. Просмотр видеофильма с использованием
- •9.2. Простейшая мультипликация
- •Глава 10
- •10.1. Пример использования try… except
- •Глава 11
- •11.1. Оформление проекта
- •11.1.1. Проект «Бегущая строка»
- •11.1.2. Проект «Титры»
- •11.1.3. Общие рекомендации по оформлению
- •11.2. Рекомендации для отчета по проекту
- •11.3. Темы проектов
- •11.3.1. Головоломка «Сквэрворд»
- •11.3.2. Задача «Путешествие по маршруту»
- •11.3.3. Головоломка «Ходом коня»
- •11.3.4. Задача «Извилистый путь»
- •11.3.5. Головоломка «Фишки на поле»
- •Список литературы
- •630058, Новосибирск, ул. Русская, 35
1.1.2. Проект «Таймер»
Постановка задачи. Напишите программу «Таймер». По заданному интервалу времени программа должна вести обратный отсчет до нуля. По нажатию кнопки «Пуск» таймер запускается, и на экране видны «тикающие часы», а надпись на кнопке сменяется на «Стоп». Таймер можно остановить, нажав на «Стоп».
Реализация. На форму положите два компонента TEdit для ввода минут и секунд, кнопку TButton с названием «Пуск», три надписи TLabel и таймер TTimer. Компонент TTimer невидим во время работы программы, поэтому его можно положить на любое место формы. В свойстве Timer1.Interval задается интервал времени, через который работает код, написанный в процедуре Timer1Timer (Sender : TObject). Интервал времени задается в миллисекундах. Если Timer1.Interval = 1000, то временной промежуток равен 1 сек. Таймер включен, если его свойство Enabled имеет значение true и выключен, если false. Если таймер выключен, то код в процедуре Timer1Timer(Sender: TObject) не работает.
Вид формы на этапе разработки приведен на рис. 3. Работающее окно изображено на рис. 4.
Рис. 3. Форма «Таймер» Рис. 4. Вид работающего окна
unit1 Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls, MPlayer;
type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
Label1: TLabel;
Label2: TLabel;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ Во время создания формы свойству Visible надписи Label3 надо присвоить значение False }
var min: integer; // минуты
sec: integer; // секунды
{Процедура ShowTime выводит, сколько времени осталось}
procedure ShowTime;
var buf: string[20];
begin
// Минуты и секунды выводим двумя цифрами
if min < 10 then
buf := '0' + IntToStr(min) + ':'
else
buf := IntToStr(min) + ':';
if sec < 10 then
buf := buf + '0' + IntToStr(sec)
else
buf := buf + IntToStr(sec);
Form1.Label3.Caption := buf;
end;
// Сигнал от таймера
procedure TForm1.Timer1Timer(Sender: TObject);
begin
sec := sec - 1;
ShowTime;
if (min = 0) and (sec = 0) then
// Заданный интервал истек
begin
Timer1.Enabled := False; // Стоп
ShowMessage(Заданный интервал истек!');
Button1.Caption := 'Пуск';
Label3.Visible := False; // Скрыть индикатор
// Сделать видимыми поля ввода интервала
Label1.Visible := True;
Edit1.Visible := True;
Label2.Visible := True;
Edit2.Visible := True;
exit;
end;
if (sec = 0) and (min > 0) then
begin
sec := 60;
min := min - 1;
end;
end;
// Щелчок на кнопке пуск-стоп
procedure TForm1.Button1Click(Sender: TObject);
begin
if Form1.Timer1.Enabled then
// Таймер работает, надо остановить
begin
Timer1.Enabled := False; // Стоп
Button1.Caption := 'Пуск';
Label3.Visible := False; // Скрыть индикатор
// Сделать видимыми поля ввода интервала
Label1.Visible := True;
Edit1.Visible := True;
Label2.Visible := True;
Edit2.Visible := True;
end
else
// Таймер стоит, надо запустить
begin
min := StrToInt(Edit1.Text);
sec := StrToInt(Edit2.Text);
if (sec = 0) and (min = 0) then
begin
ShowMessage('Надо задать интервал!');
exit;
end;
Timer1.Enabled := True; // Запустить таймер
// Скрыть поля ввода интервала
Label1.Visible := False;
Edit1.Visible := False;
Label2.Visible := False;
Edit2.Visible := False;
Label3.Visible := True;
Button1.Caption := 'Стоп';
ShowTime;
end;
end;
end.
З адание. Вместо компонентов TEdit положите на форму два компонента TUpDown. Эти компоненты позволяют нажатием на стрелочки задавать минуты и секунды, как показано на рис. 5.
Напишите для компонентов TUpDown соответствующие обработчики, сохраните проект в папке и запустите его.
Рис. 5. Проект «Таймер»