Einzelnen Beitrag anzeigen

Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
650 Beiträge
 
Delphi 12 Athens
 
#1

Delphi 2009 Update 3: Andere Verhalten von (Popup-)Menü?

  Alt 3. Jun 2009, 09:32
Hallo zusammen,

nach dem Einspielen des neuen Update 3 für D2009 habe ich in einem Projekt ein für mich ziemlich großes Problem festgestellt:

Ich zeichne verschiedene Objekte und lasse diese mittels einer TPaintBox ausgeben. Diese Paintbox hat ein "OnMouseMove"-Ereignis, um herauszufinden, ob sich die Maus gerade über einem bestimmten Objekt befindet, mit dem der Benutzer dann was anstellen kann.

Zum Beispiel kann er folgendes machen: Er kann die rechte Maustaste drücken, so dass sich ein Popup-Menü öffnet, in dem er für dieses Objekt unterschiedliche Aktionen auswählen kann. Diese Aktionen müssen dann natürlich wissen, mit welchem Objekt sie etwas machen sollen. Bisher war das auch kein Problem, denn vor dem Erscheinen des Popup-Menü wurde ja durch das OnMouseMove festgestellt, über welchem Objekt man sich befindet und wenn das Popup-Menü einmal erschienen war, wurde auch kein OnMouseMove-Event mehr ausgelöst bis das OnClick-Event für den Menü-Punkt ausgeführt war. Insofern konnte sich also die Aktion hinter dem OnClick darauf verlassen, dass das gerade aktuelle Objekt dasjenige ist, mit dem sie etwas anstellen muss.

Das alles funktioniert seit D2009 Update 3 nicht mehr: Jetzt wird NACH einem Klicken auf den Menüpunkt im Popup-Menü und VOR dem Ausführen des OnClick-Events des Menüpunktes noch einmal ein OnMouseMove der drunterliegenden PaintBox ausgeführt. Das ist natürlich fatal, denn um den Menüpunkt auszuwählen muss der Benutzer natürlich die Maus bewegen, die sich somit nicht mehr über dem eigentlichen Objekt befindet, wodurch die auszuführende Aktion nun das falsche Objekt bearbeitet. Aua.

Ich konnte das Verhalten auf zwei Rechnern mit dem Update 3 reproduzieren und auf einem dritten Rechner, auf dem das Update noch nicht installiert war, trat das Problem nicht auf. Das Update ist also ziemlich sicher die Ursache.

Nun hab ich durchaus Ideen, wie ich um diesen Effekt drumrum programmieren kann, dass ist also nicht meine Frage - da werden mir wohl ein paar Stündchen nervige Fleißarbeit bevorstehen.

Die Frage ist eher: Hat irgendwer eine Ahnung, wie es zu dieser Änderung gekommen ist? In den Änderungslisten vom Update 3 habe ich zu dem Thema nichts gefunden (hatte nach TMenu und TPopupMenu gesucht, auch mal ohne "T"). Oder hat jemand genug Durchblick, um im Quellcode der Unit "menus" rauszufinden, ob etwas geändert wurde? Oder kommt der Effekt durch eine Änderung an einer ganz anderen Stelle und ich suche völlig falsch?

Bin hier für Hinweise dankbar. Vielleicht gibt es ja eine einfachere Möglichkeit, diesen Effekt wieder abzustellen als alles zu überarbeiten. Außerdem will ich wenigstens verstehen, warum mir so ein Update gerade mein Programm zerschossen hat.

Bin für Hinweise sehr dankbar.

Bis denn
Bommel
  Mit Zitat antworten Zitat