AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MouseEnter trotz MouseDown abfragen

Ein Thema von G-Baumstamm · begonnen am 8. Dez 2010 · letzter Beitrag vom 9. Dez 2010
Antwort Antwort
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#1

MouseEnter trotz MouseDown abfragen

  Alt 8. Dez 2010, 17:54
Delphi-Version: 5
Joho

ich habe aus relativ vielen von TPanel abgeleiteten Komponenten eine Art Tabelle gebastelt. Jetzt würde ich gerne à-la Excel durch Ziehen der Maus mehrere dieser Zellen (also Panels) markieren, dafür muss ich meinen bereits implementierten Prozeduren nur noch sagen welche Zellen denn grade ausgewählt wurden.

Theoretisch hatte ich mir das so gedacht, dass ich im MouseDown jedes Panels eine Variable (zB MouseIstDown) auf true setze, die ich dann im MouseUp wieder auf false setze. Wenn dann MouseEnter von einem Panel aufgerufen wird und MouseIstDown = true gilt, soll die aktuelle Zelle in mein dynamisches Array eingetragen werden, welches die markierten Zellen enthält.

Das Problem ist aber, daas OnMouseEnter (ebenso wie OnMouseLeave) nicht ausgelöst werden, solange ich die Maus gedrückt, aber noch nicht wieder losgelassen hab. Ich hab auch durch manuellen Aufruf von OnMouseUp versucht Delphi zu täuschen, leider ist es nicht drauf reingefallen ...

Jetzt könnte ich natürlich solange MouseIstDown = true gilt in einem Timer die Cursorposition auslesen und die entsprechenden Zellen eintragen, irgendwie erscheint mir das aber ziemlich unsauber, außerdem führt das sicherlich zu unnötiger Systembelastung ...

Hat da jemand nen cooleren Vorschlag?

Danke
Daniel NR
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: MouseEnter trotz MouseDown abfragen

  Alt 8. Dez 2010, 19:22
Ich weiß nicht, ob MouseMove noch werkelt, wenn Du Dein ursprüngliches Control verlässt. Sonst könntest Du darüber die Position in Deiner "Tabelle" ermitteln.
Alternativ ginge es vielleicht auch mit DragOver zu arbeiten.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: MouseEnter trotz MouseDown abfragen

  Alt 9. Dez 2010, 17:13
Mhmmm ... das ist seltsam

Du hast völlig Recht ... Mit dem DragOver gehts zwar nicht, das MouseMove arbeitet aber weiter. Ich hab mir das mal genauer angeschaut und bin zu folgendem Ergebnis gekommen: Während die Maus gedrückt ist dehnt Delphi virtuell den Bereich der Komponente auf den gesamten Bildschirm aus. D.h. Maus-Ereignisse anderer Komponenten (zB OnMouseEnter, OnMouseMove, OnMouseUp) werden nicht ausgelöst, dafür arbeitet zB MouseMove weiter, auch wenn ich mit dem Cursor die Komponente, ja sogar die Form, verlasse. Es ist übrigens egal über welcher Komponente ich die Maus wieder loslasse, das OnMouseUp geht immer an die Ausgangskomponente ...

Finde ich persönlich extrem unlogisch und hinderlich, wenn mans weiß kann man aber zumindest damit arbeiten ^^
Trotzdem muss ich jetzt über X und Y vom MouseMove die entsprechende Komponente, über der die Maus grade is, manuell berechnen, so wahnsinnig anders als der Timer den ich mir als Notlösung überlegt hatte isses also garnich mehr -.- ^^

Danke für die Hilfe
Daniel NR
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 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