Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Form verschieben (https://www.delphipraxis.net/113546-form-verschieben.html)

Delphiturbo 9. Mai 2008 18:30


Form verschieben
 
Hallo

wenn ich den Code in ein neues Projekt teste, funktioniert
aber wenn ich den Code in mein Programm teste, dann macht es nicht !

Was muss ich noch überprüfen ?
Delphi-Quellcode:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const
  SC_DRAGMOVE = $F012;
begin
  if Button = mbleft then
  begin
    ReleaseCapture;
    Form1.Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
  end;
end;

Fussball-Robby 9. Mai 2008 18:33

Re: Form verschieben
 
Die if-Abfrage ist unnötig, da du die Form sowieso nur mit der linken Maustaste bewegen kannst.
Delphi-Quellcode:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  Perform(WM_SYSCOMMAND, $F012, 0);
end;
Gehts so? Ansonsten: Hast du noch etwas anderes im OnMouseDown stehen?

mkinzler 9. Mai 2008 18:34

Re: Form verschieben
 
Besser
Delphi-Quellcode:
(Sender as TForm).Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
Macht es garnichts, was Falches oder kommt ein Fehler?

Delphiturbo 9. Mai 2008 18:46

Re: Form verschieben
 
Komisch. Es erscheint kein Fehler
aber mit dem Code von Fussball-Robby funktioniert :thumb:

mkinzler 9. Mai 2008 18:52

Re: Form verschieben
 
Ich würde aber trotzdem den Sender auswerten.

SirThornberry 9. Mai 2008 19:19

Re: Form verschieben
 
Zitat:

Zitat von mkinzler
Besser
Delphi-Quellcode:
(Sender as TForm).Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
Macht es garnichts, was Falches oder kommt ein Fehler?

Warum soll das besser sein als ohne "(Sender as TForm)"? Hier ist doch gar nicht beabsichtigt das der Sender verschoben wird sondern es soll in jedem Fall das TForm verschoben werden unabhängig davon wer der Sender ist.

mkinzler 9. Mai 2008 19:22

Re: Form verschieben
 
Sender ist doch die jeweilige Form. Wenn es mehrere Instanzen gibt oder wenn verschiedene Formen die selbe Methode verwenden, geht es so nicht mehr.

SirThornberry 9. Mai 2008 20:28

Re: Form verschieben
 
das stimmt nicht. Wenn nichts davor steht, kommt das dem gleich als würde "Self." davor stehen und dann gilt es eben für die entsprechende Instanz.
Und Sender ist nicht zwangsläufig die Form. Hat man Beispielsweise ein Panel auf dem Form und weißt diesem die gleiche Mouse-Down-Methode zu will man ja nicht das Panel verschieben, das Panel auch nicht nach TForm casten sondern man will eben die Forminstanz zu der die Methode gehört verschieben.

mkinzler 9. Mai 2008 20:32

Re: Form verschieben
 
Wenn die Methode der gleichen Klasse angehört ja.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 Uhr.

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