![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Плавающие окна (Drag&Doc) [D6, D7, Win2k, WinXP]
Zeleniy © (2007-02-15 13:58:00)Привет, всем!
Есть TControl, на нем расположены несколько панелей (пусть Panel1-Panel4).
Нужно чтобы пользователь смог сохранять(загружать) расположение этих панелей как в ДОКЕ, так и когда панели становятся плавающими окнами...
я нашла только две функции ManualDock (с ней нормальная работы и панели занимают нужное положение в TControlBar) и
ManualFloat. Вот с ней у меня проблемы!
Во-первых, я не могу ПРАВИЛЬНОЕ сохранить ЛЕВТ и ТОП окна, относительно экрана, а во-втрых, я не могу ПРАВИЛЬНО расположить это окно!
у меня есть кнопка. по нажатию на нее Panel4 должна стать плавающим окном с (пока что) фиксированными координатами.
Я заметила, если несколько раз нажать на эту кнопку, то плавающие окно каждый раз отображается в РАЗНЫХ частях экрана!
Что с этим делать? может как-то по-другому можно решить проблему?
Спасибо!
Zeleniy (2007-02-15 15:50:00) [1]вот, почему-то не помогает ((((
окошко все-равно распологается в верхнем левом углу формы и самое обидное, кликая по кнопке окошко перемещается ((((
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:=ScreenToClient(Point(StrToInt(Memo1.Lines.Strings[3]),StrToInt (Memo1.Lines.Strings[3])));
Panel4.ManualFloat(Bounds(p.X,p.Y,200,100));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Panel4.ManualDock(ControlBar1);
end;
DVM (2007-02-15 15:37:00) [2]
> Во-первых, я не могу ПРАВИЛЬНОЕ сохранить ЛЕВТ и ТОП окна,
> относительно экрана, а во-втрых, я не могу ПРАВИЛЬНО расположить
> это окно!
ClientToScreen, ScreenToClient не помогают?