Как использовать два TSplitter с разными выравниваниями (горизонтальным и вертикальным)? - PullRequest
8 голосов
/ 07 июня 2009

У меня есть форма с тремя разделами, и я хочу позволить пользователям изменять их размер по своему усмотрению

Есть одна секция слева (которая занимает всю высоту) и одна справа, которая снова разрезана на две части по вертикали. Смотрите ниже:

11 | 22
11 | ---
11 | 33

Использовать один сплиттер довольно просто:

Component1.align := alLeft
Splitter1.align := alLeft
Component2.align := alClient

Теперь, начиная с этого, я абсолютно не знаю, как заставить работать вертикальный сплиттер. Если я установлю свой второй сплиттер на alTop или alBottom, он будет проходить полностью вверх / вниз, а не только в правой половине.

Мне удается получить что-то вроде этого:

11111
--------
22 || 33

Создавая сначала вертикальное разбиение, а затем горизонтальное, но это не сработает.

Одним из возможных решений является использование панели в качестве моей правой стороны, а затем использовать разветвитель ВНУТРИ этой панели для вертикального разделения, но на самом деле это не похоже на правильный путь.

Спасибо

Ответы [ 2 ]

18 голосов
/ 07 июня 2009

Дополнительная панель - правильный путь. Попытка иметь 2 Сплиттера внутри одной ClientArea просто перегружает систему выравнивания. Кроме того, стоимость дополнительного TPanel очень низкая.

1 голос
/ 12 июня 2012

Поместите 2 элемента управления. Например 2 richedit: - Установите оба элемента управления на одной панели. - левый со свойством 'align' к 'aleft' - правильный со свойством 'align' для 'alclient' !!! - затем поместите сплиттер между ними. - разделитель выровнен по alLeft.

Для горизонтального разделителя измените свойство выравнивания разделителя на «altop».

...