На этом шаге мы рассмотрим компонент TScrollBar
Компонент TScrollBar (Полоса прокрутки) обычно используется как вспомогательный инструмент в других элементах управления: списках, текстовых областях и т.д. Однако его можно довольно эффективно применять и в качестве самостоятельного элемента управления, например для грубой настройки значений с помощью ползунка. С помощью полосы прокрутки пользователь может быстро перемещаться по длинному списку или по большому рисунку, который не умещается на экране. Полосу прокрутки иногда используют также для индикации или ввода какой-либо величины. Кроме того, полосу прокрутки можно применять для аналогового представления позиции какого-либо элемента.
Полоса прокрутки используется для просмотра содержимого окна, форм и других элементов управления. В то же время многие элементы управления содержат встроенные полосы прокрутки, не требующие от программиста написания дополнительного кода.
Свойства компонент TScrollBar.
| Свойство | Описание | 
|---|---|
| TScrollBarKind = ( sbHorizontal , sbVertical); property Kind: TScrollBarKind; ScrollBarKind = (sbHorizontal, sbVertical) ;  | 
   Определяет ориентацию компонента:
  | 
 
| property LargeChange: TScrollBarInc; | "Большой" сдвиг бегунка (при щелчке мышью рядом с концевой кнопкой) | 
| property Max: Integer; | Максимальное значение диапазона изменения числовой величины | 
| property Min: Integer; | Минимальное значение диапазона изменения числовой величины | 
| property PageSize: Integer; | Определяет размер позиции табуляции бегунка | 
| property Position: Integer; | Текущее значение числовой величины | 
| property SmallChange: TScrollBarInc; | "Малый" сдвиг бегунка (при щелчке мышью на концевой кнопке) | 
Компонентом TScrollBar полностью управляет Windows, поэтому у него нет свойства Color.
С помощью следующего метода можно сразу установить свойства Position, Max и Min:
procedure SetParams (APosition, AMax, AMin: Integer);
С компонентом связано два события:
type TScrollEvent = procedure (Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer) of object; procedure OnScroll: TScrollEvent; procedure OnChange: TNotiryEvent;
Первое возникает при любом изменении свойства Position, второе - при изменении параметров методом SetParams.
Приведем пример синхронизации двух компонентов ScrollBar.
Решить эту задачу помогут обработчики событий OnScroll (в данном примере - это два компонента ScrollBar1 и ScrollBar2 расположенные на форме TMainForm):
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ScrollBar1: TScrollBar; ScrollBar2: TScrollBar; procedure ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); procedure ScrollBar2Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); begin ScrollBar2.Position:=ScrollPos; end; procedure TForm1.ScrollBar2Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); begin ScrollBar1.Position:=ScrollPos; end; end.
Если вы все сделали правильно, то у вас получится следующее:

Рис.1.Синхронизация двух компонентов ScrollBar 
На следующем шаге мы рассмотрим компонент TGroupBox