Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Плавающие окна (Drag&Doc)


Автор: Zeleniy 15.2.2007, 13:26
Привет, всем!

Есть TControl, на нем расположены несколько панелей (пусть Panel1-Panel4). 
Нужно чтобы пользователь смог сохранять(загружать) расположение этих панелей как в ДОКЕ, так и когда панели становятся плавающими окнами...


я нашла только две функции ManualDock (с ней нормальная работы и панели занимают нужное положение в TControlBar) и 
ManualFloat. Вот с ней у меня проблемы!
Во-первых, я не могу ПРАВИЛЬНОЕ сохранить ЛЕВТ и ТОП окна, относительно экрана, а во-втрых, я  не могу ПРАВИЛЬНО расположить это окно! 
 smile 
у меня есть кнопка. по нажатию на нее Panel4 должна стать плавающим окном с (пока что) фиксированными координатами. 
Я заметила, если несколько раз нажать на эту кнопку, то плавающие окно каждый раз отображается в РАЗНЫХ частях экрана!   smile  smile 

Что  с  этим делать? может как-то по-другому можно решить проблему?  smile 

Спасибо!

Автор: Rennigth 15.2.2007, 14:53
Код в студию

Автор: Zeleniy 15.2.2007, 15:25
этот код я писала по-быстрому,  совсем не "выпендривалась" ))))

вообщем, смысл такой : в мемо1 заносятся координаты панели в ДОКЕ (1 и 0 строка ) и плавающего окна (2 и 3).  


Код


procedure TForm1.Button1Click(Sender: TObject);
var p:TPoint;
begin
  //сохранить конфу
  Memo1.Clear;
  p.X := panel4.BoundsRect.Right-1;
  p.Y := panel4.BoundsRect.Top;
  p := panel4.ClientToScreen(p);

  Memo1.Lines.Add(IntToStr(Panel4.Left));
  Memo1.Lines.Add(IntToStr(Panel4.Top));
  Memo1.Lines.Add(IntToStr(p.X));
  Memo1.Lines.Add(IntToStr(p.y));
end;

procedure TForm1.Button2Click(Sender: TObject);
var p:TPoint;
begin
  //загрузить конфу
  p.x:=StrToInt(Memo1.Lines.Strings[2]);
  p.Y:=StrToInt(Memo1.Lines.Strings[3]);
  Panel4.ManualFloat(Rect());
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  //это для того чтобы панель в ДОКЕ располагалась не так, как по умолчанию
  Panel4.ManualDock(ControlBar1);
end;



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)