Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OnMouseDown überschreiben (https://www.delphipraxis.net/142411-onmousedown-ueberschreiben.html)

Forlan 27. Okt 2009 18:30


OnMouseDown überschreiben
 
Schönen guten Abend zusammen,

wie man schon aus meiner Fragestellung erkennen kann, möchte ich das OnMouseDown Event einer Klasse überschreiben. Nur wie genau geht das? An sich ist es ja keine procedure, sondern eine property, oder sehe ich das falsch?
Mit

Delphi-Quellcode:
procedure OnMouseDown({...}); override;
klappt es ja nicht, da er die OnMouseDown procedure in der Oberklasse nicht finden kann. (logisch, weil es ja eine property ist...)

Ich hoffe ihr könnt mir helfen ;)

Gruß,

himitsu 27. Okt 2009 18:38

Re: OnMouseDown überschreiben
 
offizieller Weg:
Delphi-Quellcode:
OnMouseDown := DeineEreignisProzedur;
das kannst du im OnCreate machen

oder du fänngst direkt die Windowsnachricten ab (z.B. für LinkeMauszaste)
Delphi-Quellcode:
procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;

DeddyH 27. Okt 2009 18:41

Re: OnMouseDown überschreiben
 
TControl verfügt auch über eine protected-Methode MouseDown.

Forlan 27. Okt 2009 18:41

Re: OnMouseDown überschreiben
 
Hintergrund ist das ich dabei bin TPanel abzuleiten. Dabei möchte ich halt das sich das Panel genau so verhält wie ein Button. Also rein visuell gesehen. Daher macht ja dein "offizieller Weg" wenig sinn, wenn das nur im Konstruktor aufgerufen wird. Geht das denn nicht einfacher? :gruebel:
In c# ("Hust^^") funktioniert es über meine zu erst erwähnte Methode.

DeddyH 27. Okt 2009 18:48

Re: OnMouseDown überschreiben
 
Dann nimm doch den zweiten Weg, indem Du auf WM_LBUTTONDOWN bzw. WM_LBUTTONUP reagierst.

Forlan 27. Okt 2009 18:52

Re: OnMouseDown überschreiben
 
Alles klar, funktioniert super ;)
Danke :thumb:

Forlan 28. Okt 2009 16:59

Re: OnMouseDown überschreiben
 
Leider muss ich meinen letzten Beitrag revidieren. Sobald ich einen Doppelklick auf mein erzeugtes Panel mache, hängt sich das Programm auf. Jemand eine Idee woran das liegen kann?

DeddyH 28. Okt 2009 17:21

Re: OnMouseDown überschreiben
 
Bist Du einmal durchgesteppt? Ansonsten einfach mal in den Quellcode der Elternkomponente bzw. von TControl schauen, wie das da gemacht wird (der sollte bei der Architect-Edition ja dabei sein :mrgreen:).

Forlan 28. Okt 2009 17:37

Re: OnMouseDown überschreiben
 
Jo, durchdebuggt ist das ganze. Konnte aber nichts merkwürdiges dabei erkennen. Dann schau ich mir mal TControl genauer an. Hätte ja sein können das einer eine direkte lösung kennt. :mrgreen:


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