На этом шаге мы рассмотрим компонент TRxSplitter.
Компонент TRxSplitter (разделитель) предназначен для помещения между двумя элементами управления, с целью дать возможность пользователю во время выполнения программы изменять взаимные размеры этих двух элементов управления.
Для того чтобы изменять взаимные размеры элементов нужно провести курсор над полоской, разделяющей эти элементы, и при появлении курсора изменения размера (рис.1), нажав левую кнопку, перетащить полоску в ее новое положение. При этом произойдет изменение размеров.
Рис.1. Курсор изменения размера
Визуально компонент представляет собой небольшую вертикальную или горизонтальную полосу, располагающуюся между двумя соседними элементами управления или на "свободной" стороне одного их них. Может разделять элементы, как по горизонтали, так и по вертикали.
Задание значения свойству LimitOffset позволяет Вам ограничить перемещение разделителя. Элементы управления, которые он будет разделять, задаются свойствами ControlFirst и ControlSecond. При использовании важным является сочетание свойств Align у самого компонента и у элементов ControlFirst, ControlSecond. При правильном выставлении этих свойств в дизайнере Delphi, read-only свойство Cursor у Splitter'а примет значение crHSplit при вертикальном разделении и crVSplit при горизонтальном. Иначе, изменение размеров во время выполнения будет невозможно.
Возможно задание значения только одного свойства - ControlFirst. При правильной установке свойств Align у этого элемента и сопряженных с ним в форме компонента TRxSplitter также позволяет изменять их размеры.
Во время перемещения Splitter'а по форме в процессе выполнения программы пользователь может нажать клавишу "Esc" для отмены перемещения разделителя.
Некоторые свойства компонентаTRxSplitter:
Свойство | Описание |
---|---|
property ControlFirst: TControl; | Один из элементов управления, которые разделяет и чьи размеры меняет RxSplitter. Это элемент расположенный либо левее, либо выше. Значение этого свойства задается автоматически при присвоении значения свойству Align и может быть изменено вручную. Обычно достаточно задать значение одному из двух свойств - ControlFirst или ControlSecond. |
property ControlSecond: TControl; | Один из элементов управления, которые разделяет и чьи размеры меняет RxSplitter. Это элемент расположенный либо правее, либо ниже. Если задано значение ControlFirst, Вам нет необходимости задавать значение этого свойства. |
property BottomRightLimit: Integer; | Задает минимальное смещение (от границ формы-владельца) положения разделителя при его перемещении в ту или иную сторону, устанавливая таким образом минимальные размеры для компонент ControlFirst и ControlSecond. |
property TopLeftLimit: Integer; | Задает минимальное смещение (от границ формы-владельца) положения разделителя при его перемещении в ту или иную сторону, устанавливая таким образом минимальные размеры для компонент ControlFirst и ControlSecond. |
property OnPosChanged: TNotifyEvent; | Событие происходит после изменения пользователем размеров разделяемых элементов. |
Чтобы дать возможность пользователю во время выполнения программы изменять взаимные размеры двух элементов управления, необходимо:
Результат продемонстрирован на рис.2(а-б):
Рис.2а. Форма с размещенными на ней компонентами TRxRichEdit, TRxSplitter и TRxClock
Рис.2б. Смещение разделителя TRxSplitter вниз
По аналогии можно установить разделитель вериткально между горизонтальными элементами (рис. 3а-в).
Рис.3а. Форма с размещенными на ней компонентами TRxDice, TRxSplitter и TRxClock
Рис.3б. Смещение разделителя TRxSplitter влево
Рис.3в. Смещение разделителя TRxSplitter вправо
Текст этого примера можно взять здесь.
На следующем шаге мы рассмотрим компонент TRxSlider.