Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2011, 13:11   #1
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию Прилипание формы2 к форме1

Здравствуйте.
Подскажите пожалуйста, как сделать, чтобы открытая форма 2 по центру формы 1 как бы к ней прилипла, и перетаскивалась вместе с формой 1?
Если не трудно, лучше с примерчиком.


Заранее благодарю.
werrey вне форума Ответить с цитированием
Старый 07.05.2011, 13:35   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Читайте про Drag&Dock.
Человек_Борща вне форума Ответить с цитированием
Старый 07.05.2011, 14:12   #3
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Читайте про Drag&Dock.
Приведите пожалуйста хоть простенький примерчик, а то разобраться сложновато.
werrey вне форума Ответить с цитированием
Старый 07.05.2011, 14:40   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Program Files\Borland\Delphi7\Demos\Docking
Человек_Борща вне форума Ответить с цитированием
Старый 07.05.2011, 14:50   #5
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Program Files\Borland\Delphi7\Demos\Docking
К сожалению нет у меня на делфи хе такого.Надеюсь, кто-нибудь поможет.
werrey вне форума Ответить с цитированием
Старый 07.05.2011, 15:24   #6
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

http://delphi-faq.zoxt.net/1563.htm - мне помогло решить такой же вопрос
bulldog5293 вне форума Ответить с цитированием
Старый 07.05.2011, 15:25   #7
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

читайте справку по свойству формы screensnap, думаю может помочь

а нет )) там только про края экрана, я думал и по родительской форме тоже

Последний раз редактировалось phomm; 07.05.2011 в 15:29.
phomm вне форума Ответить с цитированием
Старый 07.05.2011, 16:08   #8
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Попробовал сделать через таймер, но результат конечно не впечатляет:
При перетаскивании формы1, форма2 перемещается с задержкой(надо чтобы намертво приклеенная была), и нельзя перемещать форму 2, она возвращается на установленную позицию.

Вот код:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);

procedure FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer;
var Resize: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
end;

procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
Form2.Left:=form1.Left+50;
Form2.Top:=Form1.Top+50;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Form2.Left:=form1.Left+50;
Form2.Top:=Form1.Top+50;
end;

end.



Если сможете, подскажите пожалуйста что не так, а то советы выше применить не получилось.
werrey вне форума Ответить с цитированием
Старый 07.05.2011, 16:24   #9
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

эт делается через ресайз
Код:
 public
    procedure WMMove(var Msg: TWMMove); message WM_MOVE;
  end;

procedure fORM1.WMMove(var Msg: TWMMove);
begin
  inherited;
  if (Visible) then
    FormResize(Self);
end;

procedure fORM1.FormResize(Sender: TObject);
begin
  with fORM2 do
  begin
    Width := fORM1.Width - 10;
    Top := fORM1.Top + GetSystemMetrics(SM_CYFRAME);
    Left := ((fORM1.Left + fORM1.Width) - Width) - 69;

Последний раз редактировалось bulldog5293; 07.05.2011 в 20:34.
bulldog5293 вне форума Ответить с цитированием
Старый 07.05.2011, 16:42   #10
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Сделал по выше предложенному коду, только не компилируется, да и
procedure Form1.WMMove(var Msg: TWMMove); не могу найти, на ней ошибка при компиляции.


Код:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);

procedure FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer;
var Resize: Boolean);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure WMMove(var Msg: TWMMove); message WM_MOVE;
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
end;

procedure Form1.WMMove(var Msg: TWMMove);
begin
inherited;
if (Visible) then
FormResize(Self);
end;

procedure TForm1.FormResize(Sender: TObject);
begin
with Form2 do
begin
Width := Form1.Width - 10;
Top := Form1.Top + GetSystemMetrics(SM_CYFRAME);
Left := ((Form1.Left + Form1.Width) - Width) - 69;

end;
end;

end.

Поправьте пожалуйста, если где ошибка.
Рабочий примерчик-то есть посмотреть?
werrey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 7 Взаимное прилипание\отлипание форм в одном проекте Dj_SheLL Помощь студентам 13 06.07.2015 17:52
Прилипание формы к ктоям десктопа про перетаскивании Altera Общие вопросы Delphi 2 04.07.2008 00:38
Прилипание. Черничный Общие вопросы Delphi 3 30.05.2008 15:49
Как разрешить Форме1 приём данных? Rahim1993 Общие вопросы Delphi 12 19.01.2008 09:57