Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: ChildForm zusammen mit MainForm verschieben

  Alt 17. Okt 2012, 14:16
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)
  Mit Zitat antworten Zitat