Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Override-Problem bei WMMoving (https://www.delphipraxis.net/37214-override-problem-bei-wmmoving.html)

SebE 2. Jan 2005 15:04


Override-Problem bei WMMoving
 
Morgen Leute.

Hab ein Programm mit 2 Fenstern.
Wollte, dass das eine, wenn es in die Nähe des Anderen kommt, "angezogen" wird.
Wie bei WinAmp.
Am Bildschirmrand gibt es ja die Eigenschaft ScreenSnap, und genau das möchte ich mit 2 Fenstern versuchen.

Hab es mit:
Code:
procedure WMMOVING(var Msg: TWMMoving); message WM_MOVING; override;
versucht -> Fehlermedlung: "Felddefinition nicht erlaubt nach Methoden oder Eigenschaften" :gruebel:

Grund für das Override ist, ich dachte mir, dass ich erst meine Procedure aufrufe und mit inherited die Original-Prozedur, da es ohne override immer nicht 100% funzt.

Kann mir jemand sagen, wie ich das schreiben muss, damit es geht?

:coder2:

Bin euch allen sehr dankbar :love:

fkerber 2. Jan 2005 15:06

Re: Override-Problem bei WMMoving
 
Hi!

Anscheinend stört ihn die Stelle, an der es steht:
Zeig mal das drumherum.


Ciao Frederic

SebE 2. Jan 2005 15:06

Re: Override-Problem bei WMMoving
 
Code:
type
  TfmBar = class(TForm)
    btOeffnen: TSpeedButton;
    edFarbe: TEdit;
    edAktuelleFarbe: TEdit;
    edPosition: TEdit;
    OpenPictureDialog: TOpenPictureDialog;
    XPMenu: TXPMenu;
    procedure btOeffnenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
    procedure WMMOVING(var Msg: TWMMoving); message WM_MOVING; override; //<- Hier steht's
  public
    { Public-Deklarationen }
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;

Christian Seehase 2. Jan 2005 15:18

Re: Override-Problem bei WMMoving
 
Moin Sebe,

lass' mal das override weg.
In TForm gibt es keine Methode WMMOVING.

Sprint 2. Jan 2005 15:19

Re: Override-Problem bei WMMoving
 
Zitat:

Zitat von SebE
Wollte, dass das eine, wenn es in die Nähe des Anderen kommt, "angezogen" wird.
Wie bei WinAmp.

Benutze WMWindowPosChanging und setzte die neuen Werte, wenn es in die Nähe deines Fenster kommt. Und wenn nicht dann rufe inherited auf.

SebE 2. Jan 2005 15:21

Re: Override-Problem bei WMMoving
 
Aber ich will des doch überschreiben, damit erst mein Zeug abläuft und dann erst die Original-Anweisungen.

Die Prozedur soll ungefähr so aussehen:

Code:
procedure TfmBar.WMMOVING;
begin

//Mein Zeugs
...

inherited
end;
Ohne Override funktioniert das nicht so, wie ich das will (nur teilweise)

Luckie 2. Jan 2005 15:23

Re: Override-Problem bei WMMoving
 
In der Klasse gibt es keine Methode WMMOVING. Da gibt es also auch nichts zum Überschreiben. Und wenn es nicht so funktioniert, wie du willst, dann hast du einen Fehler in deinem Code.

SebE 2. Jan 2005 15:28

Re: Override-Problem bei WMMoving
 
Hab im Moment keinen Plan, wie ich das machen könnte.

Hab schon etwas rumprobiert:

Code:
...
procedure WMWindowPosChanging(var Msg: TWMWindowPosChanging); message WM_WindowPosChanging;
...
implementation
...
procedure TfmBar.WMWindowPosChanging;
begin
if (Msg.WindowPos.x>=fmMain.Top-10) and (Msg.WindowPos.x<=fmMain.Top+10)
then Msg.WindowPos.x:=fmMain.Top;

inherited
end;
Weis nicht was der Code eigentlich macht. :wall:

@Sprint: Wie kann ich denn neue Werte setzen?

SebE 2. Jan 2005 15:48

Re: Override-Problem bei WMMoving
 
Hab's man muss im obrigen Code nur Msg.WindowPos.x durch Msg.WindowPos.y ersetzen

Danke für eure Hilfe :party:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:27 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