Startseite | Infos für Behinderte | Behindertensoftware | Forum | Programmierarchiv | Webguide | Markus privat | Kontakt | Download | Gästebuch | Online Games | Entstehungsgeschichte


Komponenten oder ein Fenster ohne Titelleiste zur Laufzeit verschieben

Wollen Sie ein Panel zur Laufzeit so verschieben können wie zur Entwicklungszeit von Delphi oder ein Formular welches keine Titelleiste hat? Kein Problem, hier die Lösung:

1. Panel verschieben:

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if Shift = [ssLeft] then
begin
ReleaseCapture;
Panel1.Perform(WM_SYSCOMMAND, 61458, 0);
end;
end;

Wenn der Anwender mit der Maus über dem Panel ist, die linke Maustaste drückt und die Maus dann bewegt, verschiebt sich das Panel!

Wir benutzen wieder unser Panel und schicken aber die Windowsbotschaft diesmal an das Formular:

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if Shift = [ssLeft] then
begin
ReleaseCapture;
Form1.Perform(WM_SYSCOMMAND, 61458, 0);
end;
end;

2. Fenster verschieben:

Selbstverständlich geht der ganze Spuk auch im OnMouseMove-Ereignis vom Formular:

procedure TForm1.Form1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if Shift = [ssLeft] then
begin
ReleaseCapture;
Form1.Perform(WM_SYSCOMMAND, 61458, 0);
end;
end;

Beim klicken der linken Maustaste auf das Formular wird nun das ganze Formular verschoben und das auch ohne Titelleiste.

zurück zum Stichwortverzeichnis