Wie macht man einen Mouseover-Button?

8

Ich muss ein togglerähnliches Steuerelement erstellen, das einige Aktionen ausführt, wenn die Maus darüber fährt, und eine weitere Aktion ausführt, wenn es die Schaltfläche verlässt, aber nichts tut, während die Maus über und los ist.

Um es klar zu machen, reicht es nicht aus, einfach herauszufinden, ob sich die Maus über einer Region befindet oder nicht, aber es muss nur ein Code ausgeführt werden , wenn die Maus ein- und ausgeht Region. (Klärung beantragt von Szabolcs)

Leider verhält sich die Option AutoAction von Button anders: Sie versucht ständig, die Aktion auszuführen, während sich die Maus innerhalb des Objekts bewegt:

%Vor%

Andererseits kann ein einfacher Mouseover -Befehl keinen Code ausführen, der jedes Mal ausgeführt wird, wenn die Maus das Objekt verlässt:

%Vor%

Ich dachte, dass das zweite Argument von Dynamic verwendet werden könnte, um Anfangs- und Endaktionen für ein Mouseover -Objekt zu definieren, hatte aber auch keinen Erfolg mit diesem Ansatz.

%Vor%

Irgendwelche Ideen?

    
István Zachar 09.01.2012, 15:15
quelle

1 Antwort

10

Sie könnten so etwas tun:

%Vor%

Dies bedeutet, dass Sie die Region, für die Sie die Einträge registrieren möchten, mit Pane in eine etwas größere Region umbrechen. Sowohl die innere Region als auch die äußere Region haben eine EvenHandler , die Bewegungen der Maus registriert. Wenn PassEventsUp->False für die innere EventHandler festgelegt wird, werden die "MouseMoved" -Ereignisse nur dann an die äußere EventHandler übergeben, wenn sich der Mauszeiger über der äußeren Region, aber nicht über der inneren Region befindet.

    
Heike 09.01.2012, 16:31
quelle