R:TRect; begin if ToolBar1.HostDockSite<>ControlBar1 then

begin GetWindowRect(ToolBar1.Handle, R); Application.MessageBox(PChar(IntToStr(r.Left)+'--'+IntToStr(r.Top)),

'MM',IDOK); end; end;

В первой строке я проверяю, лежит ли ToolBar1 на ControlBar1 с помощью (ToolBar1.HostDockSite<>ControlBar1). Если он лежит, то получить положение ToolBar1 очень просто. Для этого можно узнать всего лишь ToolBar1.Left и ToolBar1.Top.

Если ToolBar1 не лежит на ControlBar1 (ToolBar1 выглядит как отдельное окно), то задача усложняется. Тебе придётся вызывать GetWindowRect, чтобы получить реальное положение ToolBar1 на экране. В качестве первого параметра ты должен передать указатель на ToolBar1, а второй -это переменная типа TRect в которую запишется реальное положение окна. Для удобства я вывожу эти знчения в окне сообщения Application.MessageBox.

Всё это я делаю для наглядности. Теперь ты можешь запустить прогу и переместить ToolBar1 по экрану. Каждый раз, когда ты будешь нажимать кнопку, программа будет выводить окно и показывать тебе реальное положение ToolBar1.

По событию OnShow я написал:

procedure TForm1.FormShow(Sender: TObject);

begin ToolBar1.ManualDock(nil,nil,alNone); ToolBar1.ManualFloat(Bounds(100, 500, ToolBar1.UndockWidth,

ToolBar1.UndockHeight)); end;

ToolBar1.ManualDock заставляет переместится ToolBar1 на новый компонент. В качестве первого параметра указывается указатель на компонент или окно, к которому мы хотим прилепить ToolBar1. Я хочу, чтобы после загрузки ToolBar1 превратился в отдельное окно, поэтому я указываю nil. Второй параметр можешь ставить nil. Он означает компонент внутри компонента указанного в качестве первого параметра, на который мы хотим поместить ToolBar1. Я указал nil. Третий параметр – выравнивание.

С помощью ToolBar1.ManualFloat я просто двигаю ToolBar1 внутри нового компонента. У меня новый компонент nil, т.е. окно, поэтому я двигаю ToolBar1 по окну. Может не совсем понятно? Попробуй запустить пример и поиграть с ним, тогда всё встанет на свои места.

И ещё ToolBar1.UndockWidth и ToolBar1.UndockHeight возвращают размер ToolBar1, когда он выглядит как окно, а не лежит на ControlBar1.

Когда ты будешь использовать это в своей проге для сохранения положения ToolBar1, тебе надо будет написать примерно следующее по событию OnClose: