Autor Beitrag
Apollo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Windows 7
Delphi 3 Prof., Delphi 2005
BeitragVerfasst: 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



BeitragVerfasst: Do 10.01.08 20:12 
Ich kann mir nicht vorstellen, dass du übr die Forensuche nichts gefunden hast.
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Do 10.01.08 20:14 
Garantiert nicht, bei den 32 Einträgen kann man da nichts finden. :lol: . 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 10.01.08 20:15 
Ich verwende immer folgende drei Event-Prozeduren:
ausblenden volle Höhe Delphi-Quelltext
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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Do 10.01.08 20:18 
Also ich mach es in zwei Zeilen von hier und hier:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 10.01.08 20:24 
Das sieht gut aus. Ich werd's, wenn ich mal Zeit hab, anwenden. Danke, user profile iconRegan!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Fr 11.01.08 10:00 
user profile iconLuckie hat folgendes geschrieben:
Warum wird nicht die von Windows dafür vorgesehene Nachricht WM_NCHITTEST? verwendet, sondern immer solche Hacks?

So geht es:

ausblenden 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;

Weil das länger ist als meine Variante :wink: .
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 11.01.08 10:27 
user profile iconRegan hat folgendes geschrieben:
Weil das länger ist als meine Variante :wink: .

Ich hoffe, das meinst du jetzt nicht ernst!