Применение полос прокрутки
Цель работы - создать программу, выполняющую следующие действия:
1. После запуска программы в окне изображается две полосы прокрутки. Вертикальная полоса будет управлять движением по вертикали, горизонтальная – по горизонтали.
2. Наводя указатель мыши на одну из двух фигур, можно выбирать, какая из этих фигур связана с полосами прокрутки.
3. Требуются дополнительные объекты, с помощью которых ограничивается область движения фигур в окне.
4. Если полоса прокрутки активная, то она должна реагировать на клавиши ВВЕХ, ВНИЗ, ВЛЕВО, ВПРАВО, PAGE UP, PAGE DOWN.
5. Для выхода из программы необходимо щелкнуть мышью на закрывающей кнопке в строке заголовка.
Описание плана разработки программы
1. Открыть новый проект.
2. Разместить на форме экземпляры компонентов: панель Panel, полоса прокрутки ScrollBar, фигура Shape.
3. Ввести дополнительную переменную логического типа num. Если она принимает значение True (Да), то текущей считается первая фигура. Значению False (Нет) соответствует вторая фигура. Эта переменная должна быть доступна во всех процедурах.
4. Выполнить следующие действия:
Таблица 13.
Выделенный объект | Вкладка окна
Object Inspector |
Имя свойства/
имя события |
Действие |
Form1 | Properties | Caption | Установка имени формы «Перемещение фигур» |
Panel
(Вкладка Standard) |
Properties | Height | Присвоить значение 161 |
Width | Присвоить значение 161 | ||
Caption | Оставить значение свойства пустым | ||
ScrollBar1
(Вкладка Standard) |
Properties | Min | Присвоить значение 5 |
Max | Присвоить значение 145 | ||
Position | Присвоить значение 76 | ||
SmallChange | Присвоить значение 2 |
Продолжение таблицы 13. | |||
Выделенный объект | Вкладка окна
Object Inspector |
Имя свойства/
имя события |
Действие |
LargeChange (Большое изменение) | Присвоить значение 20 | ||
Events | OnChange | if num then Shape1.Left :=
ScrollBar1.Position else Shape2.Left := ScrollBar1.Position |
|
ScrollBar2
(Вкладка Standard)
|
Properties | Kind | Выбрать значение sbVertical. Горизонтальная полоса прокрутки станет вертикальной. |
Min | Присвоить значение 5 | ||
Max | Присвоить значение 145 | ||
Position | Присвоить значение 76 | ||
SmallChange
(Малое изменение) |
Присвоить значение 2 | ||
LargeChange | Присвоить значение 20 | ||
Events | OnChange | if num then Shape1.Top :=
ScrollBar2.Position else Shape2.Top := ScrollBar2.Position |
|
Shape1
(Вкладка Additional) |
Properties | Height | Присвоить значение 11 |
Width | Присвоить значение 11 | ||
Left | Присвоить значение 76 | ||
Top | Присвоить значение 76 | ||
Shape (Форма) | Выбрать значение stCircle (Круг) | ||
Brush (Кисть) | Выбрать для подсвойства Color (Цвет кисти) значение clAqua (голубой цвет) | ||
Events | OnMouseMove
(При движении мыши) |
Shape1.Brush.Color := clAgua;
Shape1.Brush.Color := clFuchsia; Num := True; ScrollBar1.Position:= Shape1.Left; ScrollBar2.Position:= Shape1.Top; |
|
Shape2
(Вкладка Additional)
|
Properties | Height | Присвоить значение 11 |
Width | Присвоить значение 11 | ||
Left | Присвоить значение 76 | ||
Top | Присвоить значение 76 | ||
Shape | Выбрать значение stSquare (Квадрат) | ||
Brush | Выбрать для подсвойства Color (Цвет кисти) значение clFuchsia (фиолетовый цвет) | ||
Events | OnMouseMove | Аналогично Shape2 |
5. Сохраните проект, запустите и протестируйте его.
Листинг подпрограммы
procedure TForm1.ScrollBar1Change (Sender: TObject);
begin
if num then Shape1.Left := ScrollBar1.Position
else Shape2.Left := ScrollBar1.Position
end;
procedure TForm1.ScrollBar2Change (Sender: TObject);
begin
if num then Shape1.Top := ScrollBar2.Position
else Shape2.Top := ScrollBar2.Position
end;
procedure TForm1.Shape1MouseMove
(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Shape1.Brush.Color := clAgua;
Shape1.Brush.Color := clFuchsia;
Num := True;
ScrollBar1.Position:= Shape1.Left;
ScrollBar2.Position:= Shape1.Top;
end;
procedure TForm1. Shape2MouseMove
(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Shape2.Brush.Color := clFuchsia;
Shape2.Brush.Color := clAgua;
Num := False;
ScrollBar1.Position:= Shape2.Left;
ScrollBar2.Position:= Shape2.Top;
end;
procedure TForm1. FormCreate (Sender: TObject);
begin
num := True;
end;