So geht das mit dem frei beweglichen Child
Delphi-Quellcode:
type
TFormTest = class(TForm)
procedure FormActivate( Sender : TObject ); // OnActivate-Event zuweisen
private
FChildView : TForm;
FChildDelta : TPoint;
protected
procedure WMMove( var Message : TWMMove ); message WM_MOVE;
procedure SetChildView( AChildForm : TForm );
procedure StoreChildDelta;
public
end;
...
procedure TFormTest.SetChildView( AChildForm : TForm );
begin
FChildView := AChildForm;
StoreChildDelta;
end;
procedure TFormTest.StoreChildDelta;
begin
if Assigned( FChildView )
then
begin
FChildDelta.X := FChildView.Left - Self.Left;
FChildDelta.Y := FChildView.Top - Self.Top;
end;
end;
procedure TFormTest.FormActivate( Sender : TObject );
begin
StoreChildDelta;
end;
procedure TFormTest.WMMove(var Msg: TWMMove);
begin
inherited;
if Assigned( FChildForm ) then
begin
FChildForm.Left := Self.Left + FChildDelta.X;
FChildForm.Top := Self.Top + FChildDelta.Y;
end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)