Главная arrow Лаборатория arrow Крестообразный сплиттер  
10.02.2012
Главное меню
Главная
Лаборатория
Книги по дельфи
Инструменты
Статьи
Видео
Юмор
Ссылки
Поиск
База знаний Delphi
Общие вопросы
Windows, WinAPI
Графика, Звук
IDE Delphi
Консоль
Авторизация





Забыли пароль?
Вы не зарегистрированы. Регистрация
Каталог@Mail.ru - каталог ресурсов интернет
Крестообразный сплиттер Версия для печати
Рейтинг: / 14
ХудшаяЛучшая 
Написал Alexeis   
30.07.2009

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


крестик

Однако среди компонентов делфи такого компонента нет. Далее будет показано как делается крестообразный сплиттер на делфи из 3х обычных сплитеров


Для начала кидаем на форму 2е панельки. У первой назначаем свойство align в alTop, затем кидаем на форму первый сплитер (TSplitter) он находиться на вкладке Additional. Назначаем сплитеру свойство align в alTop. Теперь разворачиваем вторую панель на все оставшееся пространство. Свойство align в alClient

В результате должно получиться похоже на это


форма

Далее на верхнюю панель помещаю 2 компонента Memo. У первого устанавливаю свойство align в alLeft. Затем на верхнюю панель помещаю второй сплиттер. Ему также нужно установить align в alLeft. Затем второй компонент Memo расширяем на всю оставшуюся часть панели. align в alClient Должно получиться примерно так


форма

С нижней панелькой поступаем аналогично. В результате получаем


форма

Почти все сделано осталось синхронизировать 2й и 3й сплиттеры. У сплиттера есть свойство OnMoved. Теперь если сделать на него обработчик и синхронизировать размеры, то желаемая цель будет почти достигнута


procedure TForm1.Splitter2Moved(Sender: TObject);
begin
  Memo3.Width := Memo1.Width;
end;
 
procedure TForm1.Splitter3Moved(Sender: TObject);
begin
  Memo1.Width := Memo3.Width;
end;

Те компоненты Memo которые в правой части сами примут необходимый размер.

Однако если сейчас запустить проект, то можно заметить что первоначально компоненты расположены неверно. Исправляем это добавляя обработчик OnCreate


procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo3.Width := Memo1.Width;
end;

Теперь осталось еще 2 штриха. При перемещении вертикальных сплиттеров видно что они не цельные. Исправим это изменив свойство ResizeStyle на rsUpdate. Для этого выделим все 3 сплиттера удерживая клавишу Shift. См. рисунок.


форма

И второй штрих. Можно заметить что панельки выдавлены вверх и между ними возникла полоска. Убираем ее. Выделяем обе панельки (в Object Tree View удерживая клавишу ctrl). находим свойство BevelOuter и убираем его. См. рисунок.


форма

Теперь все готово. Если вы все сделали правильно то при запуске приложения у вас должна получиться форма как на рисунке


крестик
Добавить новыйПоиск
Pochtar - http://ekonomika-referat.ru/   2009-11-14 19:38:31
Довольно подобная инструкция и как раз в тему.
KinsT - С благодарностью!   2011-10-31 16:58:05
Большое спасибо! Очень понятно написано! :woohoo:
комментарии
Имя:
Заголовок:
UBB-Код:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Security Image
Пожалуйста, введите проверочный код, который Вы видите на картинке.
 
След. >