Практикум по Delphi для решения прикладных задач


         

Применение полос прокрутки


Цель работы - создать программу, выполняющую следующие действия:

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;




Содержание раздела