Компоненты используются для организации динамического обмена данными между приложениями или для создания сервисной программы в DDE-связи.
Создадим приложение с использованием некоторых компонентов панели Win32 и System (рис. 41).
Условие задачи:
Теннисный мяч перемещается в замкнутом объеме в горизонтальном и вертикальном направлениях, отражаясь от верхнего и нижнего уровней. Достигнув правого или левого края замкнутого объема, мяч изменяет направление движения на противоположное. Мяч приходит в движение при нажатии кнопки “Нажми”. Одновременно на экране появляется видеоклип и компонент Progressbar, отражающий ход выполнения процесса. Интервал времени выполнения видеоэффектов определяет компонент Timer. Приложение должно содержать графическое изображение.
Порядок выполнения:
На форму поместить компонент Image1. Установить свойство Align = alTop.
На форму поместить компонент Panel1. Установить свойство Align = alClient.
На панель поместить компоненты Progressbar1, Animate1, Timer1, Button1, Image2
На компонент Image1 поместить компонент Shape1. Установить свойство Shape = stCircle.
В компонент Image2 поместить один из графических файлов, расположенных в каталоге \delphi3\demos\data\graphex. Для этого использовать свойство Picture этого компонента.
Установить в свойство Enabled компонента Timer1 значение False, а в его же свойство Interval – значение 100.
Задать свойство Visible компонента Progressbar1, равное False.
В текущий каталог поместить файл COOL.AVI.
Обработчик события OnClick кнопки Button1:
procedure TForm1.Button1Click(Sender: TObject);
begin
animate1.FileName:= ‘cool.avi’; // Указываем файл с клипом
animate1.active:= true; // Запускаем клип
progressbar1.Show; // Показываем ProgressBar
timer1.Enabled:= true; // Включаем таймер
end;
Обработчик события OnTimer компонента Timer1:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Отражаем время в компоненте ProgressBar
Progressbar1.Position:=Progressbar1.Position +1;
if progressbar1.Position >= progressbar1.max then
begin Timer1.enabled:= false;// Выключаем таймер
Progressbar1.position:= 0; // Готовим новый запуск
Progressbar1.Hide; // Прячем ProgressBar
animate1.stop; //Останавливаем клип
end;
with image1 do // Для компонента Image
begin
if x> width - 2*shape1.Width then xh:= -1;
if x < 1 then xh:= 1;
x:= x + xh*2; // Изменение горизонтальной составляющей положения мяча
shape1.left:= x;
if y > top + height - 2 *shape1.Width then yh:= -1;
if y < top then yh:= 1;
y:= y + yh*10; // Изменение вертикальной составляющей положения мяча
shape1.top:= y;
end;
end;
Начальные значения координат движущегося мяча устанавливаются в событии OnСreate формы:
procedure TForm1.FormCreate(Sender: TObject);
begin
x:=0; y:=96; xh:=1; yh:= -1;
end;
Добавить следующее описание:
x,xh,y,yh,i: integer;
Примеры визуальных компонентов
Компоненты страницы Samples (рис. 42) представляют собой примеры разработки VCL-компонентов, предлагаемые фирмой Borland. Это дополнительные компоненты разного назначения (рис. 43).
Рис. 42. Страница Samples палитры компонентов
К их числу относятся:
TGauge – индикатор состояния. Предназначен для отображения хода выполнения какой-либо операции, например, копирования группы файлов или считывания полей из таблицы данных. Компонент имеет несколько видов. Используется аналогично компоненту ProgressBar.
TColorGrid – таблица цветов. Этот компонент предназначен для выбора основного и фонового цветов из 16-цветовой палитры.
TSpinButton – двойная кнопка. Щелчок по кнопке с треугольником, направленным вверх, приводит к возникновению события OnUpClick. Щелчок по другой кнопке – к возникновению события OnDownClick.
TSpinEdit – редактор числа. Он объединяет в себе три компонента – две конпки с изображенными на них треугольниками, направленными вверх и вниз, и компонент строка ввода.
TDirectoryOutline – список каталогов. Предназначен для отображения древовидной структуры каталогов. Свойство Drives задает имя диска, каталог которого должен отображать данный компонент. Свойство Directory содержит текущий каталог. При изменении каталога происходит событие OnChange.
TCalendar – представляет собой пример использования компонента Grid и является календарем с возможностью выбора даты и месяца.
IBEventAlerter – компонент, реагирующий на изменения в базах данных, связанных с приложением.