EvtMouseItem
EvtMouseItem
Maus-Ereignis
Details
- Name: Typ Beschreibung
- aEvt:
eventEreignisinformationen - aButton:
intMaustaste - aHitTest:
intHittest-Code - aItem:
handleDeskriptor der Spalte oder des Intervall-Objekts - aID:
int/bigintRecID bei RecList / selektierte Zeile bei DataList / Zeile bei GanttGraph - Resultat:
logicEreignis an die Objekte RecList , GanttGraph oder RecNavigator weiterreichen - Siehe: Liste , Objekte , Ereignisbefehle , Beispiel
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.
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:
_WinMouseLeft: linke Maustaste_WinMouseRight: rechte Maustaste_WinMouseMiddle: mittlere Maustaste_WinMouseMask: linke, rechte oder mittlere Maustaste_WinMouseDouble: Doppelklick_WinMouseShift:-Taste
_WinMouseCtrl:-Taste
Die Konstanten können miteinander kombiniert werden. Wurde zum Beispiel die -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:
_WinHitNone: kein Objekt_WinHitLstHeader: Spaltenkopf eines RecList -, DataList - oder RecView -Objektes_WinHitLstView: Spalte eines RecList - oder DataList -, Anzeigebereich eines DocView - oder leerer Bereich eines RecView -Objektes_WinHitStatusbar: Statusbar_WinHitStatusbarButton: Statusbar-Button -Objekt in einer Statusbar_WinHitCorner: Zwischenraum der Achsen (linke obere Ecke eines Gantt-Graphen )_WinHitGanttView: Ausgabebereich eines Gantt-Graphen_WinHitIvl: Interval -Objekt eines Gantt-Graphen_WinHitIvlBox: Box -Objekt eines Gantt-Graphen (_WinGanttIvlBoxClickmuss inGanttFlagsgesetzt sein)_WinHitIvlLeft: linke Seite des Intervalls eines Gantt-Graphen_WinHitIvlRight: rechte Seite des Intervalls eines Gantt-Graphen_WinHitAxis: Achse eines Gantt-Graphen_WinHitTreeNode: Knoten -Objekt eines TreeView_WinHitRecNavFirst: "ersten Datensatz lesen" eines RecNavigator -Objektes_WinHitRecNavLast: "letzten Datensatz lesen" eines RecNavigator -Objektes_WinHitRecNavPrev: "vorigen Datensatz lesen" eines RecNavigator -Objektes_WinHitRecNavNext: "nächsten Datensatz lesen" eines RecNavigator -Objektes_WinHitRecNavPgUp: "fünf Datensätze zurück blättern" eines RecNavigator -Objektes_WinHitRecNavPgDn: "fünf Datensätze vor blättern" eines RecNavigator -Objektes_WinHitRecNavNew: "Datensatz einfügen" eines RecNavigator -Objektes_WinHitRecNavDel: "Datensatz löschen" eines RecNavigator -Objektes_WinHitRecNavSave: "Datensatz Speichern" eines RecNavigator -Objektes_WinHitRecNavLock: "Datensatz sperren" eines RecNavigator -Objektes_WinHitDocViewPage: Seite eines DocView -Objektes_WinHitPrtPage: Seite eines PrtJobPreview -Objektes_WinHitGroupColumn: Spalte eines RecView -Objektes_WinHitGroup: Gruppe eines RecView-Objektes_WinHitCanvasView: Ausgabebereich eines Canvas -Objektes_WinHitCanvasGraphic: CanvasGraphic eines Canvas -Objektes
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.
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:
- aHitTest: aItem
_WinHitNone:0_WinHitLstView: Deskriptor der Spalte , die angeklickt wurde_WinHitLstHeader: Deskriptor der Spalte , deren Spaltenkopf angeklickt wurde_WinHitStatusbar:0_WinHitStatusbarButton: Deskriptor des Statusbar-Button -Objekts_WinHitIvl: Deskriptor des angeklickten Interval -Objektes_WinHitIvlLeft: Deskriptor des Interval -Objektes, dessen linke Begrenzung angeklickt wurde_WinHitIvlRight: Deskriptor des Interval -Objektes, dessen rechte Begrenzung angeklickt wurde_WinHitIvlBox: Deskriptor des Box -Objektes, das angeklickt wurde_WinHitGanttView: Die Nummer der angeklickten Spalte, die Zeile wird inaIDübergeben._WinHitAxis: Deskriptor der angeklickten Achse_WinHitTreeNode: Deskriptor des angeklickten Knoten -Objektes_WinHitDocViewPage:0_WinHitPrtPage: Deskriptor des angeklickten Objektes auf der Seite_WinHitGroupColumn: Deskriptor der Spalte , die angeklickt wurde_WinHitGroup: Deskriptor der Gruppe , die angeklickt wurde_WinHitCanvasView:0_WinHitCanvasGraphic: Deskriptor des angeklickten CanvasGraphic -Objektes im Canvas -Objekt
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.
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
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 : ...
}
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.