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

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

DRAG&DROP


Sergey_b ©   (2006-10-20 08:12:00) 

Всем привет.
Отцепляю панель в MouseDown сл. обр.:
 if Button = mbLeft then
   Panel7.BeginDrag(True);
панель плавает. Нужно, чтобы панель нельзя было закрыть. Как это сделать?


Наиль   (2006-10-20 16:31:00) [1]

Первый раз в жизни попробывал, что такое плавующие панели.
Интересная была головоломка (на пол часа).
Вот результат:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
Var
DockForm:TControl;
begin
Panel1.BeginDrag(true);
end;

procedure TForm1.MyCloser(Sender: TObject; var Action: TCloseAction);
begin
if MessageDlg('Вы уверены что хотите закрепить панель',mtWarning,mbOKCancel,0)=mrOk then Begin
 // Делаем как сказала Elen
End else Action:=caNone;
end;

procedure TForm1.Panel1EndDock(Sender, Target: TObject; X, Y: Integer);
Var
DockForm:TControl;
begin
DockForm:=Panel1.Parent;
if (DockForm<>nil) and (DockForm is TCustomDockForm) then Begin
 TForm(DockForm).OnClose:=MyCloser;
End;
end;


Elen   (2006-10-20 10:58:00) [2]


> Sergey_b  

В догонку :

...
TForm1 = class(TForm)
...  
   procedure qq(var Msg: TMsg; var Handled: Boolean);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

...
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage:=qq;
end;
...
//********* PROCEDURE**********
 procedure TForm1.qq;
 //const
 //Var
 begin
   if panel1.Visible=false then begin
    Panel1.Parent:=form1;// Если панель неводима предпримем меры
    panel1.Visible:=true;
   end;
 end;
 //********* END PROCEDURE*******
...

Это вернет панель на форму когда ее "закроют"
Удачи ;)


Sergey_b   (2006-10-20 10:55:00) [3]

А как, все-таки, отслеживать ее исчезновение?


Sergey_b   (2006-10-20 10:54:00) [4]


> Elen ©   (20.10.06 10:52) [3]

Спасибо


Elen   (2006-10-20 10:54:00) [5]

P.S. Panel1.Parent:=form1; вернет ее на форму (не забудте выставить координаты, а то она станет в 0,0)


Elen   (2006-10-20 10:52:00) [6]


> Sergey_b
если закрыть это окошко(панель)

Panel.Visible:=true вернет панель на экран


Sergey_b   (2006-10-20 10:33:00) [7]

Обычная панель, на ней расположены тулбар и другие компоненты, которые закрывают всю площадь панели, поэтому нажимаю на тулбар и panel.begindrag... После перетаскивания панель превращается в отдельное окно с крестиком(не знаю как называется эта кнопка). Так вот, если закрыть это окошко(панель)... т.е. надо сделать так, чтобы вместо закрытия панель вставала на первоначальное место( на другую панель). Как поставить ее туда я знаю (вроде бы), а вот как ей запретить закрыватся или, хотя бы, как отслеживать ее закрытие?


MetalFan   (2006-10-20 10:14:00) [8]

здесь телепатов нет. панель обычная(TPanel)? или тулбар(TToolBar)? каким образом можно/нельзя закрывать панель?


Наверх

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