![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
приклеить дополнительную форму [D6, WinXP]
tst © (2006-09-26 14:40:00)Мужики, подскажите что перехватываем для отлова перемещения окна главной формы, что бы можно было бы спозиционировать рядышком где-нибудь дополнительную формочку?
Игорь Шевченко (2006-09-26 15:54:00) [1]
> Примерно так:
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TfMain = class(TForm)
cbSyncMoving: TCheckBox;
private
procedure WMMove (var Message: TWmMove);
message WM_MOVE;
procedure WMMoving (var Message: TMessage);
message WM_MOVING;
procedure UpdateChildPos;
procedure UpdateChildRect (const Rect: TRect);
end;
var
fMain: TfMain;
implementation
uses
Child;
{$R *.DFM}
{ TfMain }
procedure TfMain.UpdateChildPos;
begin
if Assigned(fChild) then begin
fChild.Left := Left;
fChild.Top := Top + Height;
end;
end;
procedure TfMain.UpdateChildRect(const Rect: TRect);
begin
if Assigned(fChild) then begin
fChild.Left := Rect.Left;
fChild.Top := Rect.Top + Height;
end;
end;
procedure TfMain.WMMove(var Message: TWmMove);
begin
inherited;
UpdateChildPos;
end;
procedure TfMain.WMMoving(var Message: TMessage);
begin
inherited;
if cbSyncMoving.Checked then
UpdateChildRect (PRect(Message.LParam)^);
end;
end.
tst (2006-09-26 15:12:00) [2]спасибо Игорёк!
Примерно так:
type
TfrmMain = class(TForm)
private
procedure OnMove(var Msg: TWMMove); message WM_MOVE;
end;
...
procedure TfrmMain.OnMove(var Msg: TWMMove);
begin
inherited;
...
end;
...
Игорь Шевченко (2006-09-26 14:50:00) [3]WM_MOVE