C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 43 - Разделитель TSplitter / С++ Builder 5 / Borland C++

Шаг 43 - Разделитель TSplitter

Этот компонент gif/43_1.gif (119 b) делит клиентскую часть формы на две части, размеры которых можно менять перемещением разделителя. Хороший компонент, ничего не скажешь. Чтобы сделать, скажем, две области ввода с изменяемым размером, берется два TMemo. Оба бросаются на форму. После этого одному присваивается значение свойства Align=alBottom. Это например. Другому, соответственно - alClient. А это всегда. После этого разделителю тоже присваивается значение Align=alBottom, и вытаскивается он над первой областью. Выглядит это приблизительно так:

gif/43_2.gif (4050 b)

Теперь разделитель будет во время проектирования двигаться при изменении размеров нижнего объекта, а во время выполнения - при перетаскивании его самого. Что от него и требовалось :).

Как пример кода к вышепоказанной (или вышезагруженной :)) форме:

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 говорит, меньше какого размера нельзя задвинуть разделитель. А так - все.


| |
Автор Аванесов Самвел.
[AD]