EvtKeyItem
Das Ereignis wird ausgelöst, wenn eine Taste gedrückt wurde.
Das Ereignis wird bei nur in Kombination mit
,
,
,
,
und
ausgelöst.
Für die Pfeiltasten ,
,
und
wird das Ereignis nur bei den Objekten RecList, DataList und Picture ausgelöst. In diesem Fall wird in dem Parameter
aID der Wert 0 übergeben.
Bei den Objekten Frame und AppFrame wird das Ereignis unter folgenden Bedingungen nicht ausgelöst:
- Ein untergeordnetes Objekt hat den Eingabefokus, bei diesem Objekt ist das Ereignis
EvtKeyItemgesetzt und die Ereignis-Prozedur gibtfalsezurück. - Ein untergeordnetes Objekt hat den Eingabefokus und bearbeitet die Taste selber (z. B. beim Drücken der
-Taste, wodurch zum nächsten Objekt gesprungen wird oder die Betätigung von
, wenn im Frame ein Default-Button aktiv ist).
- Die Eigenschaft
MenuKeybei einem MenuItem oder Toolbar-Button ist gesetzt und das Objekt ist aktiviert (Disabled=false) und sichtbar (Visible=true).
Definition des Funktionskopfes:
sub EvtKeyItem
(
aEvt : event; // Ereignis
aKey : int; // Taste
aID : bigint; // RecID bei RecList, Node-Deskriptor bei TreeView
)
: logic; // Taste an Objekt weiterleiten?
{
return(true);
}
Alternativer Funktionskopf:
sub EvtKeyItem
(
aEvt : event; // Ereignis
aKey : int; // Taste
aID : int; // RecID bei RecList, Node-Deskriptor bei TreeView
)
: logic; // Taste an Objekt weiterleiten?
{
return(true);
}
aEvt
In diesem Parameter vom Typ event wird unter anderem der Deskriptor des auslösenden Objekts, d. h. das Objekt, in dem die Ereignisfunktion eingetragen wurde, übergeben.
aKey
aKey liefert die gedrückte Taste. Die Werte entsprechen den folgenden Konstanten. Die Werte können mit _WinKeyShift, _WinKeyCtrl und _WinKeyAlt kombiniert sein, wenn entsprechende Tastenkombinationen gedrückt wurden.
- Konstante: Taste
_WinKeySpace:_WinKeyReturn:_WinKeyEsc:_WinKeyTab:_WinKeyInsert:_WinKeyDelete:_WinKeyBackspace:_WinKeyHome:_WinKeyEnd:_WinKeyPageUp:_WinKeyPageDown:_WinKeyUp:_WinKeyDown:_WinKeyLeft:_WinKeyRight:_WinKeyF1..._WinKeyF12:...
_WinKeyA..._WinKeyZ:...
_WinKey0..._WinKey9:...
Die folgenden Tasten lösen das Ereignis nur aus, wenn in der Eigenschaft Flags des Application-Objekts die Ausprägung _WinAppCalcKeySupport gesetzt ist:
- Konstante: Taste
_WinKeyAdd:_WinKeySubtract:_WinKeyMultiply:_WinKeyDivide:_WinKeyDecimal:_WinKeyDot:
Die folgenden Tasten lösen das Ereignis nur aus, wenn in der Eigenschaft FlagsExt des Application-Objekts die Ausprägung _WinAppExtFlowKeySupport gesetzt ist:
- Konstante: Taste
_WinKeyTab:_WinKeyReturn:_WinKeyUp:_WinKeyDown:
Die folgenden Tasten lösen das Ereignis nur aus, wenn in der Eigenschaft FlagsExt des Application-Objekts die Ausprägung _WinAppExtUmlautKeySupport gesetzt ist:
- Konstante: Taste
_WinKeyAuml:_WinKeyOuml:_WinKeyUuml:_WinKeySZlig:
aID
In Abhängigkeit vom auslösenden Objekt werden hier unterschiedliche Informationen übergeben:
- Objekt: Inhalt
- RecList/RecListPopup: Datensatz-ID des aktuellen Datensatzes
- TreeView: Deskriptor des selektierten TreeNode oder
0 - Frame oder AppFrame: Deskriptor des Fokus-Objekts
- StoList/StoListPopup:
0. Der selektierte Eintrag kann über die EigenschaftCurrentermittelt werden. - WebNavigator:
0.
Wird der alternative Funktionskopf verwendet, kommt es zum Laufzeitfehler _ErrValueOverflow, wenn die zu übergebende Datensatz-ID nicht in den Wertebereich von int passt.
Resultat
Unabhängig vom auslösenden Objekt entscheidet der Rückgabewert darüber, ob die auslösende Taste an das Objekt weitergeleitet wird (true) oder nicht (false). Soll zum Beispiel in einem RecList-Objekt das Blättern mit den Tasten und
oder in einem Eingabe-Objekt das Arbeiten mit der Zwischenablage (
+
,
+
,
+
) möglich sein, muss
true zurückgegeben werden.
Beispiele:
sub EvtKeyItem
(
aEvt : event; // Ereignis
aKey : int; // Taste
aID : bigint; // RecID bei RecList, Node-Deskriptor bei TreeView, Focus-Objekt bei Frames
) : logic; // Taste an Objekt weiterleiten?
{
switch (aKey)
{
case _WinKeyShift | _WinKeyInsert : // <Shift> + <Einfg> wurde gedrückt
...
case _WinKeyDelete : // <Entf> wurde gedrückt
...
}
return(true);
}
if (aKey & _WinKeyInsert > 0)
// Tastenkombination mit <Einfg> wurde gedrückt
...
if (aKey = _WinKeyInsert)
// <Einfg> wurde gedrückt
...