| Autor |
Beitrag |
Apollo
      
Beiträge: 125
Windows 7
Delphi 3 Prof., Delphi 2005
|
Verfasst: Do 10.01.08 20:06
Hallo Delphianer,
mein Formular hat als Borderstyle bsNone. Würde es aber schon gerne verschieben können
sprich überall wo man das Formular anklickt kann man es verschieben.
Hoffe ihr wisst was ich meine.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 10.01.08 20:12
Ich kann mir nicht vorstellen, dass du übr die Forensuche nichts gefunden hast.
|
|
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Do 10.01.08 20:14
Garantiert nicht, bei den 32 Einträgen kann man da nichts finden.  . Einen Tipp noch dazu: es ist ein Thema von mir.
Zuletzt bearbeitet von Regan am Do 10.01.08 20:16, insgesamt 1-mal bearbeitet
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Do 10.01.08 20:15
Ich verwende immer folgende drei Event-Prozeduren:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button <> mbLeft then Exit; X := X + Left; Y := Y + Top; MoveDown := True; MoveX := X; MoveY := Y; StartLeft := Left; StartTop := Top; end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button <> mbLeft then Exit; MoveDown := False; end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin X := X + Left; Y := Y + Top; if not MoveDown then Exit; if (MoveX = X) and (MoveY = Y) then Exit;
if StartLeft-MoveX+X < 0 then Left := 0 else if StartLeft-MoveX+X+Width > Screen.Width then Left := Screen.Width-Width else Left := StartLeft-MoveX+X;
if StartTop-MoveY+Y < 0 then Top := 0 else if StartTop-MoveY+Y+Height > Screen.Height then Top := Screen.Height-Height else Top := StartTop-MoveY+Y; end; |
|
|
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Do 10.01.08 20:18
Also ich mach es in zwei Zeilen von hier und hier:
Delphi-Quelltext 1: 2:
| ReleaseCapture; Perform(WM_SYSCOMMAND, $F012, 0); |
Ne Erklärung zu den Parametern: www.dsdt.info/tipps/?id=449
Edit: Link hinzugefügt.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Do 10.01.08 20:24
Das sieht gut aus. Ich werd's, wenn ich mal Zeit hab, anwenden. Danke, Regan!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 11.01.08 09:35
Warum wird nicht die von Windows dafür vorgesehene Nachricht WM_NCHITTEST? verwendet, sondern immer solche Hacks?
So geht es:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TMainForm.WMNCHitTest(var Message: TWMNCHitTest); begin inherited; if (Message.Result = htClient) and (ControlAtPos(Point(Message.xPos, Message.yPos), True, True) <> nil) then Message.Result := htCaption; end; |
|
|
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Fr 11.01.08 10:00
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 11.01.08 10:27
Regan hat folgendes geschrieben: | Weil das länger ist als meine Variante . |
Ich hoffe, das meinst du jetzt nicht ernst!
|
|