![]() |
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:
versucht -> Fehlermedlung: "Felddefinition nicht erlaubt nach Methoden oder Eigenschaften" :gruebel:
procedure WMMOVING(var Msg: TWMMoving); message WM_MOVING; override;
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: |
Re: Override-Problem bei WMMoving
Hi!
Anscheinend stört ihn die Stelle, an der es steht: Zeig mal das drumherum. Ciao Frederic |
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; |
Re: Override-Problem bei WMMoving
Moin Sebe,
lass' mal das override weg. In TForm gibt es keine Methode WMMOVING. |
Re: Override-Problem bei WMMoving
Zitat:
|
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:
Ohne Override funktioniert das nicht so, wie ich das will (nur teilweise)
procedure TfmBar.WMMOVING;
begin //Mein Zeugs ... inherited end; |
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.
|
Re: Override-Problem bei WMMoving
Hab im Moment keinen Plan, wie ich das machen könnte.
Hab schon etwas rumprobiert:
Code:
Weis nicht was der Code eigentlich macht. :wall:
...
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; @Sprint: Wie kann ich denn neue Werte setzen? |
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 10:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz