2012-05-22 3 views
0

Я создал приложение, состоящее из MainForm и нескольких MDIChild Forms. Я использую AdvDockPanel и AdvToolbar из компонентов TMS. Моя основная форма имеет AdvDockPanels в верхней, нижней, левой и правой частях формы для отображения AdvToolbars.AdvToolbar из MDIChild отображается на MainForm и возможность перетащить его вокруг

Каждый MDIChild Forms содержит AdvToolbar и при создании тезисов формирует AdvToolbar.Parent установлен на AdvDockPanel на MainForm. Во-первых, AdvToolbar.Visible является False и при активации каждой формы MDIChild, которую я устанавливаю, она видима для True.

Подводя итог, при активации формы MDIChild я хочу, чтобы на панели MainForm.AdvDockPanel отображался AdvToolbar и при ее деактивации я хочу, чтобы она скрывалась.

Все это прекрасно работает, за исключением случаев, когда я пытаюсь перетащить AdvToolbar из одной AdvDockPanel в другую, пересекая середину моего MainForm, что делает мою активную форму MDIChild скрытой и вызывает эту ошибку: «Невозможно изменить Visible в OnShow или OnHide ».

Я отлаживал его и обнаружил, что это исключение возбуждено. Это в Vcl.Forms. процедура TCustomForm.CMShowingChanged (var Message: TMessage);

Итак, я хотел бы знать, есть ли способ отобразить AdvToolbar из моей активной формы MDIChild в MainForm, в то же время имея возможность перетащить мою панель инструментов в моем MainForm.

Спасибо,

  • Чарльз

ответ

1

Вы можете проверить, если текущий родительский панели инструментов является TFloatingWindow (Thats родителя при перемещении панели инструментов):

procedure TForm25.FormDeactivate(Sender: TObject); 
begin 
    if not (orgaadvtoolbar1.Parent is TFloatingWindow) then 
     OrgaAdvToolBar1.visible:=false; 
end; 

TAdvToolBar .Dragging не работает, потому что TAdvToolbar использует собственный флаг перетаскивания FDraging, но это не свойство, поэтому вы можете получить доступ только к переменной, если вы изменяете e исходный код программного обеспечения TMS.

 Смежные вопросы

  • Нет связанных вопросов^_^