Zum Hauptinhalt springen

EvtMouse

EvtMouse

Maustaste

Details

Die angegebene Prozedur wird ausgeführt, wenn mit einer Maustaste auf das Objekt geklickt wurde.

info

Beim Objekt Statusbar wird das Ereignis nicht ausgeführt, wenn in dem Ereignis EvtMouseItem eine Funtion eingetragen ist.

Definition des Funktionskopfes:

sub EvtMouse
(
aEvt : event; // Ereignis
aButton : int; // Maustaste
)
: logic; // Ereignis an auslösendes Objekt weitergeben?
{
return(true);
}

aEvt

In aEvt vom Typ event wird unter anderem der Deskriptor des Objekts übergeben, welches das Ereignis ausgelöst hat. Dies ist das Objekt, in dem die Ereignisfunktion eingetragen wurde.

info

Bei Scrollbox -Objekten bezieht sich aEvt: Pos auf die linke obere Ecke des Scrollbereiches und nicht des Ausgabebereiches.

aButton

aButton enthält die Taste oder die Tastenkombination, die das Ereignis auslöste:

Die Konstanten können miteinander kombiniert werden. Wurde zum Beispiel die Umschalt -Taste gedrückt und mit der linken Maustaste ein Doppelklick ausgeführt, steht im Übergabeparameter aButton der Wert _WinMouseLeft|_WinMouseDouble|_WinMouseShift.

Über die Konstante _WinMouseMask können zusätzlich gedrückte Tasten ausgeblendet werden (vgl. Beispiel).

Resultat

Wird true zurückgegeben, wird das Ereignis an das auslösende Objekt weitergeleitet, ansonsten nicht.

info

Wird beim CtxDocEdit true zurückgegeben, wird anschließend das Ereignis EvtMouseItem ausgelöst.

Beispiele:

// Doppelklick
if (aButton & _WinMouseDouble > 0)
...

switch (aButton & _WinMouseMask)
{
// linke Maustaste
case _WinMouseLeft : ...

// rechte Maustaste
case _WinMouseRight : ...

// mittlere Maustaste
case _WinMouseMiddle : ...
}
info

Bei der Verwendung des Debuggers in Verbindung mit Breakpoints sowie den Anweisungen DbgStop () und DbgControl ( _DbgStop ) kann kein Doppelklick ausgelöst werden. Bei einem Doppelklick werden immer zwei Ereignisse ausgelöst: Da das Windows System nach einem erfolgten Klick nicht weiss, ob innerhalb kurzer Zeit ein weiterer Klick erfolgt, wird zunächst ein Ereignis für den Klick und anschließend das Ereignis für den Doppelklick ausgelöst. Wird die Verarbeitung in dem Ereignis angehalten, vergeht zwischen den beiden Klicks zu viel Zeit, um sie noch als einen Doppelklick zu erkennen.