Упражнение Движение фигур




В этом упражнении объект будет двигаться по полю окна ва­шей программы по вашему желанию.

Создайте папку «Движение фигур». Создайте проект. В стро­ке заголовка формы запишите: «Движение фигур» (свойство Caption). Дайте форме имя FormMove (свойство Name). Сохра­ните модуль и проект под именами UnitMove и ProjectMove в папке «Движение фигур».

Поместите на форму кнопку «Пуск» (TBitBtn), таймер (TTi- mer) и картинку (TImage) как показано на рис. 6.

 

Рис. 6. Формапроекта«Движениефигур»

 

Выключите таймер (Active:=False). В папку «Движение фигур» скопируйте файл какого-либо рисунка. После двойного щелчка на объекте Imagel нажмите кнопку Load... (загрузить) и выберите файл скопированного рисунка. В свойстве Stretch (растяжение) выбе­рите значение: True (истина), для того чтобы рисунок полно­стью отображался в рамке.

С помощью свойства Name дайте кнопке «Пуск» имя: bt_Pusk. В процедуре щелчка на кнопке «Пуск» напишите опе­раторы:

Timerl.Enabled:=True;

Timerl.Interval:=10;

Вы включили таймер и установили для него интервал 10 мил­лисекунд. Это значит, что события, которые вы опишете в процедуре для таймера, будут происходить с таким интервалом.

Для объекта Timerl на листе событий произведите двойной щелчок в окне события OnTimer (таймер включен). Запишите в теле процедуры следующий оператор:

Imagel.Left:=Imagel.Left+1;

Этот оператор увеличивает расстояние от левого края объек­та до левой границы окна на единицу каждые 10 миллисекунд.

Для того чтобы объект можно было остановить в любом мес­те, добавьте кнопку и назовите ее «Стоп». С помощью свойства Nameдайте кнопке «Стоп» имя: bt_Stop. Запишите в теле про­цедуры (обрабатывающей щелчок на кнопке) для этой кнопки оператор:

Timeг1.Enabled:=False;

Этот оператор отключает таймер, а значит, отменяются все действия, работающие при включенном таймере.

Если вовремя не нажать кнопку «Стоп», то объект уползет за пределы окна. Чтобы это не случилось, его надо «ставить на ме­сто», когда он подползет к правой границе окна. Измените про­цедуру для таймера следующим образом:

ifImagel.Left>=FormMove.Width- Imagel.Width then Imagel.Left:=16

else {обратите внимание, что перед словом else не ставится знак ";"} Imagel.Left:=Imagel.Left+1;

Здесь проверяется условие: расстояние от левого края объек­та до левой границы окна больше, чем ширина окна без ширины объекта? Если условие выполняется, то объект принимает свое первоначальное положение. Если условие не выполняется, то каждые 10 миллисекунд расстояние от левого края объекта до левой границы окна становится на единицу больше.

Вместо числа «16» впишите значение свойства Leftдля ва­шего объекта. Что будет происходить при изменении интервала таймера? Что будет происходить при изменении шага переме­щения? Поэкспериментируйте с этими числами.

А можно ли передвигать по полю формы другие объекты, да еще в разных направлениях? Поместите в центр формы восемь фигур (TShape). Пусть это будут круги разного цвета, но одина­кового размера, и все расположены один на другом, как бы слившись в один круг. Свойства Left(слева), Тор (вверху), Width(ширина) и Height(высота) для этих объектов должны быть одинаковыми. И попробуйте сделать так, чтобы они одно­временно начали движение в разные стороны. Четыре круга должны двигаться к границам окна и четыре круга должны двигаться к углам окна. Добавьте кнопки управления движени­ем фигур: «Двигать круги», «Остановить круги» и «Восстано­вить круги». Дайте им имена: bt_MoveCircle, bt_StopCircleи bt_VosstCircle. Добавьте еще один таймер. Выключите его (Active:=False). Запишите для кнопки bt_MoveCircleв теле процедуры, обрабатывающей щелчок на ней:

Timer2.Interval:=10;

Timer2.Enabled:=True;

Включается 2-й таймер. Интервал событий устанавливается равным 10 миллисекундам.

Запишите в теле процедуры для события OnTimer(таймер включен) 2-го таймера следующие операторы:

.Left+1 Top+1; .Left-1 Top-1; .Left+1 Top+1; .Left-1 Top+1; .Left-1 Top-1; Left+1 Top-1;
Shapel. Shape2. Shape3, Shape4, Shape5, Shape5, Shape6, Shape 6, Shape7. Shape7, Shape8, Shape8,
Left Top: Left Top: Left Top: Left Top: Left Top: Left Top:

=Shapel

Shape2.

=Shape3

Shape4.

=Shape5

Shape5

=Shape6

Shape6

=Shape7

Shape7.

=Shape8

Shape8.

 

Для первых четырех кругов изменяется только один пара­метр: или расстояние от левого края круга до левой границы окна или расстояние от верхнего края круга до верхней грани­цы окна. Для следующих четырех кругов изменяются одновре­менно оба этих параметра.

Для того чтобы остановить движение кругов, надо выклю­чить 2-й таймер, поэтому для кнопки «Остановить круги» в теле процедуры запишите оператор: Timer2.Enabled:=False;

В теле процедуры для кнопки «Восстановить круги» должны находиться операторы, восстанавливающие первоначальное по­ложение всех кругов:

Shapel.Left:=184;

Shapel.Top:=112;

Shape2.Left:=184;

Shape2.Top:=112;

Shape3.Left:=184;

Shape3.Top:=112;

Shape4.Left:=184;

Shape4.Top:=112;

Shape5.Left:=184;

Shape5.Top:=112;

Shape6.Left:=184;

Shape6.Top:=112;

Shape7..Left:=184;

Shape7.Top:=112;

Shape8.Left:=184;

Shape8.Top:=112;

Параметры ваших кругов могут не совпадать с этими. Вы их найдете в Инспекторе объектов.

С момента запуска проекта приложения и до того момента, когда на экране монитора отобразится окно приложения про­ходит некоторое время. Чем сложнее программа, тем больше это время. Чтобы занять пользователя до открытия окна про­граммы, можно использовать заставку. Она открывается очень быстро, и ее можно убрать с экрана, когда открылось основное окно программы. Заставка может отображать ваши данные: фа­милию, адрес, электронный почтовый ящик и т. д., может ото­бражать логотип или какой-нибудь рисунок. Давайте создадим для нашего проекта такую заставку.

 

Создайте форму. В Строке заголовка напишите: «Заставка». Дайте форме имя: FormZastavka. Сохраните модуль под именемUnitZastavkaв папке «Движение фигур». Добавьте к проекту созданную форму.

 

Рис. 7. Форма заставки

Пропишите модуль после служебного слова implementation (реализация). Если вы нажмете клавишу F7, то будет произведено пошаговое выполнение программы с заходом в подпрограммы. При этом в окне описания программы доба­вится вкладыш ProjectMove. В нем описывается работа файла, запускающего проект. К действиям файла надо добавить не­сколько операторов, и получится следующая запись:

Begin

FormZastavka:=TFormZastavka.Create(Application);
FormZastavka.Show; // сделатьокновидимым

FormZastavka.Update; // перерисоватьокно

Application.Initialize; // инициализацияприложения Application.CreateForm(TFormMove, FormMove);

// создатьглавноеокноApplication.CreateForm(TFormZastavka, FormZastavka);

(создать заставку)
FormZastavka.Hide; // сделать окно невидимым

FormZastavka.Free; // освободить память

Application.Run; // запуск приложения

End.

Чтобы окно заставки закрылось при открытии основного окна программы, надо создать соответствующую процедуру для формы «Движение фигур». Произведите двойной щелчок указа телем мыши на форме «Движение фигур» и запишите в теле процедуры:

FormZastavka.Close;

Основное окно приложения открывается быстро, поэтому за­ставка едва успевает промелькнуть перед вашими глазами. Это неважно, зато теперь вы знаете, как ее создать и для другого приложения.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: