Первый урок первая программа 8 Сохранение и запуск проекта на выполнение 11 Сохранение проекта 11
Вид материала | Урок |
- Пивоварова Ольга Михайловна Сроки реализации проекта: 01. 04. 08 01. 06. 08 подготовительная, 146.56kb.
- Научно-методическое сопровождение экспериментального проекта по совершенствованию организации, 189.48kb.
- 8 (496)53- 6-14-29, Факс: (8-496) 53- 6-13-77, 247.46kb.
- Областная целевая программа развития приоритетного национального проекта "здоровье", 765.33kb.
- Программа проекта, 111.16kb.
- П. Е. Управление персоналом: Конспект лекций. М.: Миит, 2012. 168 с. Данный конспект, 1503.86kb.
- Экономической части дипломного проекта, 63.83kb.
- Е. Т. Стрекалова Русский язык и культура речи Учебно-методическое пособие, 878.37kb.
- Задачи валеологии: сохранение психофизиологического здоровья сохранение эмоционального, 30.23kb.
- Приоритетные направления программы Укрепление и сохранение здоровья детей. Развитие, 11836.37kb.
Как убрать часть графического примитива:
- рисуем графический примитив, например, эллипс у рыбки;
- накладываем сверху на эллипс другой графический объект так, чтобы он закрывал часть эллипса;
- убираем у него контур (psClear для Type в Pen) и выставляем цвет закраски в Brush как цвет фона, на котором нарисован плавник.
Примерные задания для пятого урока
Нарисовать картину, содержащую минимум: пять прямоугольников (квадратов); пять эллипсов (кругов); три отрезка; фон формы не стандартный.
- Новый год
- Лето
- Морская или речная тема
- Космос
- Природа
- Твоя комната
Вопросы для самоконтроля
- Какие графические фигуры можно выбрать в Shape?
- За что отвечают параметры Pen и Brush?
- Как убрать контур?
- Как нарисовать горизонтальную линию?
- Как нарисовать вертикальную линию?
- В каких границах находится Shape?
- Что такое передний и задний планы объекта?
Шестой урок – использование Timer для “движения” объектов на форме
Объект Timer
Познакомимся с новым компонентом Timer, который поможет нам выполнить движение объектов на форме. Timer находится на вкладке System и выглядит как часы (смотри рис. № 1).
вкладка
таймер
рис. № 1
Данный компонент является невидимым при выполнении программы, поэтому его можно разместить на форме в любом месте.
Рассмотрим параметры таймера и единственную процедуру (рис. № 2):
Активность таймера
Значение в миллисекундах,
1 сек = 1000 миллисекунд
рис. № 2
Enabled – логическая величина, следовательно имеет два значения: true и false. Если значение равно true, то через каждые миллисекунды интервала таймера (interval) выполняется процедура данного таймера. При значении false вызов процедуры таймера не происходит.
Interval – задается в миллисекундах. Использование параметра описано выше.
В закладке инспектора объекта Events – процедуры-события, находится всего одна процедура, которая вызывается, если параметр Enabled равен true.
Для движения объекта на форме воспользуемся возможностями таймера, применив, например, следующий алгоритм:
- начальное значение параметра активности таймера равно false (чтобы графический объект при запуске формы не “поехал”);
- интервал пусть будет 100 миллисекунд;
- в процедуре-событии опишем движение объекта, используя параметры top и left для движения по вертикали или горизонтали;
- запуск работы таймера по событию click на кнопке начало.
Как заставить графический объект “двигаться”?
Как это осуществить? Рассмотрим следующий пример: выполнить движение некоторого графического объекта слева направо.
Пусть картинка как на рисунке № 3 – пять объектов Shape: четыре круга и один прямоугольник. Кроме этого на форме есть кнопка “старт”, и таймер.
рис. № 3
- Зададим начальные значения параметрам компонента Timer1 (смотри алгоритм);
- В процедуре click для кнопки запишем команду:
Timer1.Enabled := true;
Включим таймер при нажатии на кнопку;
- Определяем Shape, у которого самая “правая” часть картинки. В нашем примере это будет Shape3;
- Записываем команды в процедуре таймера для движения картинки.
Примеры программ на движение
Первая программа – движение слева направо
Просмотрите код Unit1.pas для нашего примера:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Timer1: TTimer; { таймер }
Shape1: TShape; { первое }
Shape2: TShape; { колесо }
Shape3: TShape; { второе }
Shape4: TShape; { колесо }
Shape5: TShape; { прямоугольник }
BitBtn1: TBitBtn; { кнопка с цветным текстом,}
{ находится в закладке Additional}
procedure BitBtn1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// Таймер активен, следовательно, через каждые
// 100 миллисекунд будет происходить вызов процедуры // Timer1Timer
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Timer1.Enabled := true;
end;
// Ориентируемся по Shape, у которого самая
// правая граница.
// В нашем примере это Shape3.
// Правая граница Shape3 = левый отступ + длина
// шейп, т.е. Shape3.Left + Shape3.Width
// Timer1 активен пока не достигли почти правой
границы формы
procedure TForm1.Timer1Timer(Sender: TObject);
begin
// 30 пикселей не доходить до правой границы формы
if Shape3.Left + Shape3.Width <
Form1.Width – 30 then
begin
// передвигаем вправо на 3 пикселя все части
// движущейся картинки
Shape1.Left := Shape1.Left + 3;
Shape2.Left := Shape2.Left + 3;
Shape3.Left := Shape3.Left + 3;
Shape4.Left := Shape4.Left + 3;
Shape5.Left := Shape5.Left + 3;
end
else
// достигли правой границы движения –
// выключаем таймер
timer1.Enabled := false;
end;
end.
При движении по вертикали будем использовать параметр Top – отступ от верхней границы формы. Значение высоты объекта находится в параметре Height.
Разберите пример использования нескольких таймеров, а так же применение “подкладки” (Panel) под картинкой для простоты кодирования движения. В примере есть рисунок, который был нарисован в Paint и вставлен как объект Image из вкладки Additional. Для связи картинки с Image в параметре Picture
Выбор картинки – щелчок на …
Для вставки картинки на форме
Параметр отображения картинки в указанной области
Прозрачный или нет белый фон картинки
рис. № 4
Вторая программа – движение ракет вверх с использованием Shape, картинки и панели
Задание: три ракеты стартуют по очереди (старт следующей при достижении верхней границы), с помощью кнопок можно заставить стартовать ракеты раньше.
Расположение объектов на форме можно рассмотреть на рисунке № 5:
- первая ракета из Shape;
- вторая из таких же шейпов на панели (Panel находится в Standard);
- третья нарисована в Paint и вставлена через Image.
После нажатия на кнопку старт она становится недоступной – параметр Enabled становиться равным false.
рис. № 4
рис. № 5
Просмотрите как работает программа с тремя ракетами.
var
Form1: TForm1;
step : byte = 3; { шаг смещения ракеты равен 3 пикселям }
implementation
{$R *.dfm}
// Пример движения графических объектов: Shape, Panel, Image
// Вторая ракета стартует после выхода на орбиту первой,
// то же самое и со второй.
// Вторая и третья ракета могут стартовать и при нажатии
// кнопок "старт"
// Обращение к объекту Timer происходит каждый раз по
// прошествии милисекунд, указанных в параметрах таймера.
// Если таймер имеет начальное значение параметра Enabled
// равным true, то он стартует одновременно с активизацией
// формы, иначе (значение false) только тогда, когда
// параметр Enabled будет равен true.
// Процедура движения стандартных графических образов -
// Shape
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Shape4.Top > 50 then { пока не долетели - сдвиг на шаг }
begin
Shape1.Top := Shape1.Top - step;
Shape2.Top := Shape2.Top - step;
Shape3.Top := Shape3.Top - step;
Shape4.Top := Shape4.Top - step;
Shape5.Top := Shape5.Top - step;
Shape6.Top := Shape6.Top - step;
Shape7.Top := Shape7.Top - step;
Shape8.Top := Shape8.Top - step;
end
else
begin
timer1.Enabled := false; { выключить таймер - стоп }
// Вызов процедуры-события Click на кнопке Button2
// для автоматического старта второй ракеты
Form1.Button2.Click; { старт второй ракеты }
end;
end;
// Кнопка старт для первой ракеты
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled := true; { включить таймер - старт }
Button1.Enabled := false; { кнопка старт неактивна }
end;
// Процедура движения панели (Panel)
procedure TForm1.Timer2Timer(Sender: TObject);
begin
if Panel1.Top > 50 then { пока не долетели - сдвиг на шаг }
Panel1.Top := Panel1.Top - step
else
begin
timer2.Enabled := false; { выключить таймер - стоп }
// Вызов процедуры-события Click на кнопке Button3
// для автоматического старта третьей ракеты
Form1.Button3.Click; { старт третьей ракеты }
end;
end;
// Кнопка старт для второй ракеты
procedure TForm1.Button2Click(Sender: TObject);
begin
timer2.Enabled := true; { включить таймер - старт }
Button2.Enabled := false; { кнопка старт неактивна }
end;
// Процедура движения графического образа (Image)
procedure TForm1.Timer3Timer(Sender: TObject);
begin
if Image1.Top > 50 then { пока не долетели - сдвиг на шаг }
Image1.Top := Image1.Top - step
else
timer2.Enabled := false;
end;
// Кнопка старт для третьей ракеты
procedure TForm1.Button3Click(Sender: TObject);
begin
timer3.Enabled := true; { включить таймер - старт }
Button3.Enabled := false; { кнопка старт неактивна }
end;
end.