Svetlika
14:25 28-07-2006
Сугубо программерское
Вчера игралась с дельфей на предмет плавающих панелей. Ну, которые такие, наподобие панелей инструментов, слоев и истории в фотошопе. Которые можно перемещать хоть за пределы главной формы, закрывать или прикреплять к чему-нибудь.
Реализация оказалась простой донельзя, и порывшись немного по интернету, надыбала коротенькую статью на два абзаца, как это сделать. К сожалению, тот сервер (http://xatka.vov.ru/cgi-bin/read.pl...&file=Other.txt) вдруг стал недоступен, поэтому эти два абзаца напишу от себя.
Берем четыре панели. Первая будет приемником (доком), и в инспекторе объектов установим ей свойство DockSite:=true. Три остальные будут плавающими (кораблями). Установим им два свойства: DragKind:=dkDock; DragMode:=dmAutomatic.
Собственно и все. Запускаем приложение и наслаждаемся: таскаем панели, причаливаем их в порт (док), отчаливаем.
И все было бы хорошо, если бы не одно но. Пока за плавающую панельку не схватишься, выглядит она как обыкновенная, ничем не примечательная панель. В некоторых случаях, может быть, это и хорошо. Но в моем это было плохо.
Однако, Яndex.ru найдет все, в частности и вот эту статью: http://ttgt.net.tomline.ru/students...a27/Index3.html. Ну и демка дельфевая doсking помогла немного. Изменить док программным способом, к которой причалена панель, оказалось несложно. Впрочем, как и пустить панель в свободное плавание.
Для этого существуют у панели два метода (описание из справки Delphi):

function ManualDock(NewDockSite: TWinControl; DropControl: TControl = nil; ControlSide: TAlign = alNone): Boolean;
function ManualFloat(ScreenPos: TRect): Boolean;

Сегодня вдруг решила еще немного поэкспериментировать с плавающими панелями (интересно было, как влияет параметр TAlign и порядок причаливания, когда панелей много), результатом явилась маленькая программка Порт.
Скачать исходники и посмотреть, как легко и просто делать в дельфи вот такие плавающие панели можно по адресу: http://tstation.ru/downloads/Docking.rar (161 килобайт).
[ delphi ]
Закрыть