Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Panel Verschiebung mit Eigenschaft Align := alTop

  Alt 28. Okt 2009, 23:23
Hallo Muchacho,

du musst nach dem Ablegen des Panels ein erneutes Ausrichten der Controls beim Parent veranlassen:

Delphi-Quellcode:
procedure TFrmMain.PanelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  Panel: TPanel;
begin
if Sender is TPanel then
   if ssLeft in Shift then
   begin
     ReleaseCapture;
     Panel := TPanel(Sender);
     Panel.BringToFront; // zu verschiebendes Panel nach vorne bringen
     Panel.Perform(WM_SYSCOMMAND,$F012,0);
     Panel.Parent.Realign; // Ausrichten der Controls beim Parent erzwingen
   end;
end;
Ich habe noch einen Aufruf der Methode BringToFront eingefügt, damit das bewegte Panel auch während des Verschiebens immer sichtbar ist und nicht hinter anderen Panels verschwindet. Als Auslöser für das Verschieben würde ich - wie im Quelltext angedeutet - eher MouseDown vorsehen, da es wirklich nur beim Drücken einer Maustaste ausgelöst wird.

Gruß Hawkeye
  Mit Zitat antworten Zitat