Zum Hauptinhalt springen

EvtMouseItem

EvtMouseItem

Maus-Ereignis

Details

Dieses Ereignis wird aufgerufen, wenn innerhalb eines Objektes, das aus mehreren Bestandteilen bzw. untergeordneten Objekten besteht, geklickt wurde. Die Möglichkeiten gehen über die des Ereignisses EvtMouse hinaus.

info

Ist bei dem Objekt Statusbar das Ereignis gesetzt, wird das Ereignis EvtMouse nicht ausgeführt.

Das Ereignis wird sofort beim Drücken der Maustaste ausgelöst. Erfolgt also ein Doppelklick auf ein Objekt, wird zunächst das Ereignis für eine einfachen Klick und kurz darauf das Ereignis für den doppelten Klick aufgerufen.

Definition des Funktionskopfes:

sub EvtMouseItem
(
aEvt : event; // Ereignis
aButton : int; // Maustaste
aHitTest : int; // Hittest-Code
aItem : handle; // Spalte oder Gantt-Intervall
aID : bigint; // RecID bei RecList / Zelle bei GanttGraph / Druckobjekt bei PrtJobPreview
)
: logic; // Ereignis an auslösendes Objekt weitergeben?
{
return(true);
}

Alternativer Funktionskopf:

sub EvtMouseItem
(
aEvt : event; // Ereignis
aButton : int; // Maustaste
aHitTest : int; // Hittest-Code
aItem : handle; // Spalte oder Gantt-Intervall
aID : int; // RecID bei RecList / Zelle bei GanttGraph / Druckobjekt bei PrtJobPreview
)
: logic; // Ereignis an auslösendes Objekt weitergeben?
{
return(true);
}

aEvt

In aEvt vom Typ event wird unter anderem der Deskriptor des auslösenden Objekts übergeben.

aButton

aButton gibt die Taste oder die Tastenkombination an, 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.

aHitTest

In diesem Parameter wird der Objekttyp angegeben, der an der Stelle der Mausposition vorliegt:

Beim RecNavigator wird das Ereignis bei den Leseoperationen nach dem Lesen des Datensatzes und bei den Schreiboperationen vor der Datensatzoperation aufgerufen. Bei den Schreiboperationen kann durch die Rückgabe von false die Datensatzoperation verhindert werden.

info

Auf die Eigenschaften einer Gruppe eines RecView-Objektes kann NUR lesend zugegriffen werden.

aItem

Der Übergabeparameter enthält in Abhängigkeit von dem in aHitTest übergebenenden Wert den Deskriptor des angeklickten Objekts:

Wurde das Ereignis bei einem PrtJobPreview -Objekt ausgelöst, kann der Name des Objekts (aItem-> wpName) nur dann ermittelt werden, wenn der Druckjob zuvor mit der Option _PrtJobOpenVerbose gespeichert wurde. Das PrtJobPreview -Objekt der Druckvorschau kann mit dem Befehl PrtSearch (..., 'PpvControl' ) ermittelt werden.

Wurde das Ereignis bei einem RecView -Objekt mit Hittest _WinHitGroup ausgelöst, sind die Eigenschaften SelectorItem und SelectorSubItem entsprechend gesetzt, so dass auf die Eigenschaften des entsprechenden Items zugegriffen werden kann. Die Eigenschaften können nur gelesen werden.

aID

Enthält aItem einen gültigen Deskriptor auf eine Spalte oder Gruppe , wird in aID entweder die Datensatz-ID des angeklickten Datensatzes (bei den Objekten RecList , RecListPopup und RecView ) oder die Zeilennummer (bei den Objekten DataList und DataListPopup ) übergeben.

info

Wird der alternative Funktionskopf verwendet, kommt es zum Laufzeitfehler _ErrValueOverflow , wenn die zu übergebende Datensatz-ID nicht in den Wertebereich von int passt.

Wurde innerhalb eines Statusbar -Objekts geklickt, ist aID immer 0.

Enthält aItem einen gültigen Deskriptor auf ein Intervall , enthält aID den Wert, der in der Eigenschaft ID des Intervalls enthalten ist.

Enthält aItem einen gültigen Deskriptor auf eine Achse , wird in aID die Nummer der Skala-Zelle (>=0) übergeben. Liegt der Punkt, der zum Auslösen des Ereignisses führte, im Titel der Achse, wird in aID der Wert -1 übergeben.

Wird in aItem die Nummer einer Spalte eines Gantt-Graphen übergeben, befindet sich in diesem Parameter die angeklickte Zeile.

Wurde das Ereignis bei einem DocView -Objekt ausgelöst, steht in aID die Nummer der angeklickten Seite. Existiert an der geklickten Stelle keine Seite, wird 0 übergeben. Das Argument aItem ist immer 0.

Ist das Ereignis bei einem PrtJobPreview eingetragen, wird in aID die angeklickte Seitennummer übergeben.

Resultat

Wird true zurückgegeben, wird das Ereignis an das Objekt ( Reclist bzw. GanttGraph ) weitergeleitet, ansonsten nicht. Beim RecNavigator -Objekt kann durch die Rückgabe von false eine Schreiboperation des Datensatzes verhindert werden.

Besonderheiten

info

Während dieses Ereignisses ist eine Veränderung des RecView -Objektes nicht zulässig. Eigenschaften und Befehle, die das RecView , die Columns oder SubColumns verändern würden, lösen den Laufzeitfehler _ErrHdlInvalid aus. Das Abfragen von Eigenschaften sowie der Aufruf von WinInfo () sind zulässig.

Beispiele

sub EvtMouseItem
(
aEvt : event; // Ereignis
aButton : int; // Maustaste
aHitTest : int; // Hittest-Code
aItem : handle; // Spalte oder Gantt-Interval
aID : bigint; // RecID bei RecList / Zelle bei GanttGraph / Druckobjekt bei PrtJobPreview
) : logic; // Ereignis an auslösendes Objekt weitergeben?

{
// Doppelklick in RecList
if (aButton = _WinMouseLeft | _WinMouseDouble and
aItem != 0 and aID != 0)
{
RecRead(1, 0, _RecID, aID);
...
}
}

// 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. Soll die Verarbeitung von einem Doppelklick angehalten werden, darf der Breakpoint erst nach der Auswertung der Maustasten erfolgen.