Этот компонент делит клиентскую часть формы на две части, размеры которых можно менять перемещением разделителя. Хороший компонент, ничего не скажешь. Чтобы сделать, скажем, две области ввода с изменяемым размером, берется два TMemo. Оба бросаются на форму. После этого одному присваивается значение свойства Align=alBottom. Это например. Другому, соответственно - alClient. А это всегда. После этого разделителю тоже присваивается значение Align=alBottom, и вытаскивается он над первой областью. Выглядит это приблизительно так:
Теперь разделитель будет во время проектирования двигаться при изменении размеров нижнего объекта, а во время выполнения - при перетаскивании его самого. Что от него и требовалось :).
Как пример кода к вышепоказанной (или вышезагруженной :)) форме:
void __fastcall TForm1::LoadClick(TObject *Sender) { if(!dynamic_cast<TMenuItem*>(Sender))return; if(!OpenDialog->Execute())return; TMemo* memos[]={Memo1,Memo2}; memos[((TComponent*)Sender)->Tag]->Lines->LoadFromFile(OpenDialog->FileName); } //--------------------------------------------------------------------------- void __fastcall TForm1::CloseClick(TObject *Sender) { Close(); } //---------------------------------------------------------------------------
Необходимо пояснить, что для элементов меню, видимых на экране ("Загрузить Memo1/2") я установил обработчик один - LoadClick, а свойство Tag - в 0 и 1 соответственно. В общем-то это было сделано для сокращения объяма кода ценой его простоты. Лично я подобное использую довольно часто.
Еще у него есть пара свойств. Свойство Beveled управляет 3D отображением компонента. Свойство ResizeStyle управляет вариантами перемещения сплиттера. Свойство MinSize говорит, меньше какого размера нельзя задвинуть разделитель. А так - все.