Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DBGrid-Event wie OnMouseOver (https://www.delphipraxis.net/51246-dbgrid-event-wie-onmouseover.html)

Minz 9. Aug 2005 01:58


DBGrid-Event wie OnMouseOver
 
Hallo,

gibt es ein Event das ausgelöst wird, wenn die Maus über ein DBGrid fährt?

In dem Zusammenhang hab ich probiert das Event OnMouseWheel zu verwenden, dass zu TWinControl gehört. Da das DBGrid auch ein TWinControl ist (oder?) dachte ich, müsste es auch dieses Event kennen, tut es aber nicht. Wieso?

Gruß Minz

marabu 9. Aug 2005 08:04

Re: DBGrid-Event wie OnMouseOver
 
Hallo Minz,

Maus-Bewegungen über einem DBGrid lösen das Ereignis OnMouseMove() aus.

Eine Wheel-Mouse kannst du zwar benutzen, aber das Verhalten dürfte nicht ganz deinen Erwartungen entsprechen - du kannst standardmäßig nur die Selektion im sichtbaren Bereich des Grid verschieben. Ein Korrekturansatz ist das Abfangen der MOUSEWHEEL Message im message handler deiner Application Komponente. Dazu findest du im Forum einen Beitrag.

Grüße vom marabu

Minz 9. Aug 2005 12:26

Re: DBGrid-Event wie OnMouseOver
 
Danke schonmal für die Antwort.

Dummerweise hab ich mich falsch ausgedrückt. Mit OnMouseMove hab ich es auch schon probiert, aber es hat nicht funktioniert. Ich meinte eigentlich eine Windows-Nachricht statt Event, die ich evtl. über WndProc verwenden kann. :oops:

Den Ansatz im Beitrag habe ich bereits ausprobiert, nur soll das ganze nicht nur dann funktionieren wenn das DBGrid aktiv ist, sondern dann, wenn der Mauszeiger über dem DBGrid ist, auch dann, wenn dieses nicht den fokus hat.

marabu 9. Aug 2005 12:47

Re: DBGrid-Event wie OnMouseOver
 
Was funktioniert denn mit OnMouseMove nicht? Dieses Ereignis macht dir auf einfache Weise eine Reaktion auf die zu Grunde liegende Windows Message möglich.

Für die unbedingte Verarbeitung der MouseWheel Nachrichten musst du doch im zitierten Code eigentlich nur die Prüfbedingung ändern bzw. wegnehmen.

marabu

Minz 9. Aug 2005 12:52

Re: DBGrid-Event wie OnMouseOver
 
soweit war ich auch schon. Wenn ich die Prüfbedingung wegnehme hat das zur Folge, dass das DBGrid immer bewegt wird, egal wo ich mich mit der Maus befinde. Ich möchte aber nur eine Aktion wenn ich mich mit der Maus über dem Grid befinde.

Deswegen kommen wir zur Änderung der Prüfbedingung. Ich habe also versucht herauszufinden, wann die Maus sich über dem Grid befindet. Das Problem mit OnMouseMove dabei ist, dass DBGrid dieses Event nicht kennt, im Gegensatz zu TForm. Das Event wird ausgelöst wenn ich mich über die Fläche von der Form bewege, aber nicht dann, wenn ich über irgendein Control komme.

marabu 9. Aug 2005 12:56

Re: DBGrid-Event wie OnMouseOver
 
Mit welcher Delphi Version arbeitest du? Mein DBGrid kennt das event OnMouseMove.

Minz 9. Aug 2005 12:57

Re: DBGrid-Event wie OnMouseOver
 
hab Delphi 4 :(

mist brauch ich jetzt ne neuere Version dafür? :wall:

marabu 9. Aug 2005 12:59

Re: DBGrid-Event wie OnMouseOver
 
Nicht unbedingt - wenn du die Quellen hast, könnte man die anpassen.

Minz 9. Aug 2005 13:03

Re: DBGrid-Event wie OnMouseOver
 
Sorry, welche Quellen meinst du?

Meinst du den Sourcecode? Das Problem betreffend existiert da noch nicht viel ! Weil ich immernoch nach einem passenden Event oder WindowsMessage suche.

marabu 9. Aug 2005 13:24

Re: DBGrid-Event wie OnMouseOver
 
Mit Quellen meinte ich die VCL sources. Wenn du die nicht hast, dann bleibt immer noch subclassing als Möglichkeit - WndProc hast du ja schon erwähnt. Die Nachricht ist übrigens WM_MOUSEMOVE.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:48 Uhr.
Seite 1 von 2  1 2      

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