Шаг 10.
Вкладка Additional. Компонент TScrollBox

    На этом шаге мы рассмотрим компонент TScrollBox.

    Компонент TScrollBox используется в тех случаях, когда невозможно разместить необходимые элементы в выделенной для них области. Такая ситуация может возникнуть, например, при изменении размеров окна. И это предусматривается при проектировании, например, если необходимо создать длинный ряд переключателей, которые не умещаются в видимой части экрана, или в иных ситуациях, которые заранее трудно предвидеть.

    Также прокручиваемые области используются, если необходимо работать с несколькими информационными окнами одновременно, как это сделано в текстовых процессорах, электронных таблицах и управляющих приложениях.

    Прокручиваемые области могут содержать компоненты, такие как TButton, TMemo, TCheckBox и другие.

    Таким образом, компонент класса TScrollBox служит контейнером для размещения других компонентов и его отличительной способностью является экономия пространства формы при необходимости размещения на ней большого количества элементов управления.

    После размещения компонента TScrollBox на форме в нем можно размещать элементы управления так же, как и для формы. После запуска программы эта область будет доступна для прокручивания.

    Если свойство AutoScroll в инспекторе объектов имеет значение True, то, как только возникает необходимость, происходит автоматическое появление полос прокрутки. В противном случае необходимо в программе указать наличие полос прокрутки (рис.1.).


Рис.1.Прокручиваемая область с видимыми полосами прокрутки

    Во время работы программы можно динамически включать и отключать возможность отслеживания изменения размеров компонентов, входящих в прокручиваемую область, для чего используются методы EnableAutoRange и DisableAutoRange.

    Основные характеристики полос прокрутки определяются свойством HorzScrollBar и VertScrollBar (горизонтальная и вертикальная полосы прокрутки, класс TControlScrollBar), которые используются и во многих других компонентах Delphi. В полосе прокрутки эти свойства устанавливаются автоматически, и их настраивать не надо.

    Для компонента так же определен метод:

procedure ScrollInView (AControl: TControl);
он прокручивает область внутри объекта ScrollBox так, чтобы стал виден заданный элемент управления внутри этой области.

    Например, если на объект ScrollBox1 поместить область просмотра (TMemo) так, чтобы она была едва видна, то следующий код обработчика щелчка на кнопке Button1 позволит полнее отобразить область просмотра внутри объекта ScrollBox1.

procedure TForm1.Button1Click(Sender: TObject);
begin
  ScrollBox1.ScrollInView(Memo1);
end;
Текст этого примера можно взять здесь.

    Одним из важнейших свойств компонента TScrollBox является свойство AutoSize: если это свойство имеет значение True, то размеры компонента будут автоматически изменяться так, чтобы все части дочерних компонентов оставались в его рабочей зоне, даже если для этого придется увеличить размеры внешнего контейнера (формы). На рисунках 2 и 3 представлен компонент TScrollBox в момент, когда свойство AutoSize имеет значение True и False, соответственно.


Рис.2.Компонент TScrollBox в момент, когда его свойство AutoSize имеет значение True

   


Рис.3.Компонент TScrollBox в момент, когда его свойство AutoSize имеет значение False

    На следующем шаге мы рассмотрим компонент TCheckListBox.




Предыдущий шаг Содержание Следующий шаг