Einzelnen Beitrag anzeigen

Benutzerbild von sundance
sundance

Registriert seit: 9. Mai 2006
98 Beiträge
 
Delphi 7 Professional
 
#13

AW: ChildForm zusammen mit MainForm verschieben

  Alt 24. Okt 2012, 09:04
Bei meinen Versuchen kommen während des Verschiebens, also solange die linke Maustaste gedrückt ist, bei jeder 1-Pixel-Bewegung beide Messages an. Allerdings habe ich keine Info darüber, was WM_MOVING an Daten mitschickt; bei WM_MOVE kommt über den TMessage-Parameter die X- und Y-Koordinaten der Client-Area mit.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  .
  private
    procedure WMMoving(var Msg: TMessage); message WM_MOVING;
    procedure WMEnterSizeMove(var Msg: TMessage) ; message WM_ENTERSIZEMOVE;
    procedure WMMove(var Msg: TMessage) ; message WM_MOVE;
    procedure WMExitSizeMove(var Msg: TMessage) ; message WM_EXITSIZEMOVE;
  .
  end;

procedure TForm1.WMMoving(var Msg: TMessage);
begin
  inherited;
  lbInfo.Caption :=
    Format('WM_MOVING: Client-Bereich X0 = %d, Y0 = %d',
            [Self.ClientOrigin.X, Self.ClientOrigin.Y]);
  if CheckBox1.Checked then
    ChildForm.SetBounds(Self.Left + FChildDelta.X, Self.Top + FChildDelta.Y,
                        ChildForm.Width, ChildForm.Height);
end;

procedure TForm1.WMEnterSizeMove(var Msg: TMessage);
begin
  StatusBar.SimpleText := 'Move/Resize gestartet...';
end;

procedure TForm1.WMExitSizeMove(var Msg: TMessage);
begin
  StatusBar.SimpleText := 'Move/Resize beendet!';
end;

procedure TForm1.WMMove(var Msg: TMessage);
begin
   StatusBar.SimpleText :=
     Format('MainForm wird verschoben: Client-Bereich X0 = %d, Y0 = %d',
            [TWMMove(Msg).XPos,TWMMove(Msg).YPos]);
end;

Geändert von sundance (24. Okt 2012 um 09:13 Uhr)
  Mit Zitat antworten Zitat