Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как отловить у ToolBar режим floating, т.е. когда ToolBar [D7]


Layner ©   (2005-06-14 11:06:00) 

находится над формой, в виде плавающего окошка?


ferr   (2005-06-14 16:21:00) [1]

Хех, а что мешает использовать не OnClose?
 TForm1 = class(TForm)
...
   procedure FormClose2(Sender: TObject; var Action: TCloseAction);
 private
...
procedure TForm1.ToolBar1EndDock(Sender, Target: TObject; X, Y: Integer);
begin
if ToolBar1.Floating then
if ToolBar1.Parent is TToolDockForm then
 TForm(ToolBar1.Parent).OnClose := FormClose2;
end;

procedure TForm1.FormClose2(Sender: TObject; var Action: TCloseAction);
begin
showmessage('Good for you');
end;


Layner   (2005-06-14 13:32:00) [2]

Нашел рабочее решение, мог бы использовать, да OnClose у меня выполняется под другим назначением.

procedure Tfmain.ToolBar1EndDock(Sender, Target: TObject; X, Y: Integer);
begin
if ToolBar1.Floating then
 if ToolBar1.Parent is TToolDockForm then
  TForm(ToolBar1.Parent).OnClose := FormClose;
end;


Может есть ещё какие нибудь варианты?


Чапаев   (2005-06-14 12:56:00) [3]

>А вот как узнать, что закрыли плавающее окно? Или можно >наоборот, как не допустить закрытия плавающего окна? 2е даже >было бы предпочтительнее 1го.
Я создавал наследника TCustomDockForm, нужному контролу FloatingDockSiteClass назначал этот свой класс. А в классе уж отрабатывал OnClose(), OnCloseQuery().


Layner   (2005-06-14 11:39:00) [4]

ferr ©   (14.06.05 11:28)
Спасибо, точно, с родителем вроде разобрался, если окно плавающее, то родителя нет (в моем случае так смотрю, код ниже)
procedure Tfmain.ToolBar1EndDock(Sender, Target: TObject; X, Y: Integer);
begin
 Showmessage('Операция: EndDock; Родитель: '+ToolBar1.Parent.Name+'; Координаты:'+IntToStr(X)+'-'+IntToStr(Y));
end;

А вот как узнать, что закрыли плавающее окно? Или можно наоборот, как не допустить закрытия плавающего окна? 2е даже было бы предпочтительнее 1го.


ferr   (2005-06-14 11:28:00) [5]

ToolBar.Parent глядеть можно...


Layner   (2005-06-14 11:08:00) [6]

Т.е. событие OnEndDock, а как узнать, плавающее это окошко, или встроенное в CoolBar, и если плавающее, как отловить, что его закрыли.. :)
Заранее благодарю.


Наверх

Титульная страница Поиск, карта сайта Написать письмо