![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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)? каким образом можно/нельзя закрывать панель?