Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fenster verschieben? (https://www.delphipraxis.net/140096-fenster-verschieben.html)

DualCoreCpu 11. Sep 2009 18:19


Fenster verschieben?
 
Hallo,

Unser Lehrer hat uns die Aufgabe gegeben, eine Fensterverschiebung per Maus zu realisieren.
Leider habe ich von Delphi nicht viel Ahnung. Wir sollen die gesamte Berechnung der Fensterkoordinaten selber machen. Das Fenster soll mit der Maus verschoben werden können.

Hat jemand eine Idee?

DeddyH 11. Sep 2009 18:41

Re: Fenster verschieben?
 
Hallo und Willkommen in der DP :dp:,

diese Aufgabenstellung ist aber mehr als schwammig, da Fenster sich ja normalerweise sowieso schon per Maus verschieben lassen. Bevor wir hier also mutmaßen und an der Aufgabe vorbei Vorschläge machen, solltest Du das noch einmal konkretisieren.

DualCoreCpu 11. Sep 2009 18:58

Re: Fenster verschieben?
 
Hallo DeddyH,

Schwammig? Hmmm! Leider kann ich mich im Moment nicht besser ausdrücken. Klar lassen sich die Fenster normalerweise bereits per Maus verschieben, aber irgendwie müssen das die Programmierer von Windows doch gemacht haben. Irgendwo in den Tiefen von Windows muss doch da ein Algorhithmus stecken. Und den sollen wir nachprogrammieren.

Larsi 11. Sep 2009 19:02

Re: Fenster verschieben?
 
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if ssLeft in Shift then
    begin
      ReleaseCapture;
      Form1.Perform(WM_SYSCOMMAND,$F012,0);
    end;
end;
Der Code würde das gewünscht bewirken aber berechnet wird da natrülich von dir nichts. Der Code stammt von DeddyH.

Für den Algorithmus denn du machen willst hilft dir eventuell ClientToScreen.

himitsu 11. Sep 2009 19:02

Re: Fenster verschieben?
 
- man klickt mit der Maus
- diese Position merkt man sich nun
- wird die Maus verschoben, kann man sich die Differenz zu letzen Mausposition ausrechen
- und das Fenster entsprechend verschieben
- usw.

[add]
@Larsi: ich glaub nicht, daß das der Weg ist, den sich der/ein Lehrer wünscht :zwinker:

DeddyH 11. Sep 2009 19:02

Re: Fenster verschieben?
 
Also rate ich doch einmal: ihr sollt die Fenster so programmieren, dass sie sich auch in der Client-Area statt über die Titelleiste verschieben lassen, könnte das sein?

lbccaleb 11. Sep 2009 19:10

Re: Fenster verschieben?
 
Hier ist auch noch was zu finden ;)

Fenster verschieben

DeddyH 11. Sep 2009 19:12

Re: Fenster verschieben?
 
Auch das dürfte nicht der Aufgabenstellung entsprechen. IMHO ist himitsu auf dem richtigen Weg, auch wenn das Plappermaul wieder zu vorschnell war :tongue:

Neutral General 11. Sep 2009 20:06

Re: Fenster verschieben?
 
Ich habs mal ausprobiert:

Ich bin so vorgegangen:

Wenn man Maustaste drückt, dann wird er Punkt gespeichert auf den geklickt wurde (relative Koordinaten auf dem Formular, also Point(X,Y) wobei x,y aus OnMouseDown sind)

Dann im OnMouseMove wird die neue Position mithilfe der aktuellen, globalen Mauskoordinaten und dem Punkt vom MouseDown (als ne Art Offset) berechnet.

himitsu 11. Sep 2009 20:24

Re: Fenster verschieben?
 
Zitat:

Zitat von Neutral General
Dann im OnMouseMove wird die neue Position mithilfe der aktuellen, globalen Mauskoordinaten und dem Punkt vom MouseDown (als ne Art Offset) berechnet.

Delphi-Referenz durchsuchenClientToScreen


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 Uhr.
Seite 1 von 5  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz