Neu vorgestellt, Programmierung

Neues Ereignis: EvtHelpTip

Viele Vorschläge zu CONZEPT 16 beziehen sich auf die Modifikation von Helptips vor deren Anzeige oder auf eine Reaktion auf Unterobjekte. Um dies realisieren zu können, wird in der nächsten Version 5.7.08 das neue Ereignis EvtHelpTip zur Verfügung gestellt, welches dem Programmierer die gewünschten Möglichkeiten bietet. Dieses Ereignis möchte ich Ihnen im Folgenden näher bringen.

Fallbeispiele

  • Helptip auf Zeilen- / Zellenebene bei Listen
  • unterschiedliche Helptips pro Achse eines GanttGraph-Objektes
  • Helptips pro Seite im DocView- und PrtJobPreview-Objekt

Aufbau und Aufruf

Das Ereignis EvtHelpTip kann bei allen Objekten eingetragen werden, die über die Eigenschaft wpHelpTip verfügen und bei denen Ereignisse eingetragen werden können.

EvtHelpTip wird erstmalig ausgelöst, wenn die Maus über ein Objekt bewegt wird und zurzeit kein Helptip angezeigt wird. Wird bereits ein Helptip angezeigt wird das Ereignis erst wieder ausgelöst, wenn sich eines der Argumente aHitTest, aItem und aID ändert.

Beim Ereignis EvtHelpTip sollte eine längere Prozedurverarbeitung vermieden werden, da in der Zeit keine Benutzeraktionen möglich sind und keine anderen Ereignisse ausgelöst werden. Das Ereignis wird innerhalb eines Objektes maximal alle 250 Millisekunden ausgelöst. Beim Wechsel in ein anderes Oberflächenobjekt wird es direkt ausgelöst.

sub EvtHelpTip
(
  aEvt                  : event;        // Ereignis (in)
  aButton               : int;          // Zusatztasten (in)
  aHitTest              : int;          // Hittest-Code (in)
  aItem                 : handle;       // Spalte oder Gantt-Intervall (in)
  aID                   : int;          // RecID bei RecList / Zelle bei GanttGraph / Druckobjekt bei PrtJobPreview (in)
  aNameID               : alpha;        // Namens-ID (in)
  aText                 : alpha(4096);  // Anzuzeigender HelpTip (in / out)
  aJustify              : int;          // Ausrichtung des HelpTips (in / out)
)
: logic;                                // HelpTip anzeigen?

Ein Teil der übergebenen Argumente (aButton, aHitTest, aItem und aID) sind bereits vom Ereignis EvtMouseItem bekannt. Sie helfen das gegebenenfalls untergeordnete Objekt zu identifizieren. In aHitTest wird bei Objekten mit untergeordneten Objekten der jeweilige Objekttyp übergeben. Das Argument aItem liefert bei bestimmten Objekten den Deskriptor auf das Unterobjekt, beispielsweise bei Listen den Deskriptor der Spalte. In aID werden Zeilen- beziehungsweise Seitennummern, Datensatz-IDs oder Zellpositionen übermittelt.

Bei StoList- und StoListPopup-Objekten wird in aNameID der Name der Applikations-Ressource übergeben, über der die Maus steht.

Die Argumente aText und aJustify enthalten die jeweils aktuellen Werte der Eigenschaften wpHelpTip und wpHelpTipJustify. Diese Argumente können im Ereignis verändert werden und modifizieren dadurch den anzuzeigenden Helptip. Die Eigenschaften selbst bleiben dabei unverändert.

Ist aText beim Beenden des Ereignisses leer, oder wird false zurückgegeben, wird kein Helptip angezeigt.

Untergeordnete Objekte

Folgende Objekte haben untergeordnete Objekte:

  • DataList, RecList, StoList
    Kopfbereich (_WinHitLstHeader), Datenbereich (_WinHitLstView)
  • DataListPopup, RecListPopup, StoListPopup
    Datenbereich (_WinHitLstView)
  • DocView
    Seitenbereich (_WinHitDocViewPage), leerer Anzeigebereich (_WinHitNone)
  • GanttGraph
    Ecke zwischen den Achsen (_WinHitCorner), Achsen (_WinHitAxis), View-Bereich (_WinHitGanttView), Intervalle (_WinHitIvl, _WinHitIvlLeft, _WinHitIvlRight), Boxen (_WinHitIvlBox, wenn die Option _WinGanttIvlBoxClick in wpGanttFlags gesetzt ist, sonst _WinHitGanttView)
  • PrtJobPreview
    Seitenbereich (_WinHitPrtPage), leerer Anzeigebereich (_WinHitNone)
  • RecNavigator
    _WinHitRecNavPrev, _WinHitRecNavNext, _WinHitRecNavPgUp, _WinHitRecNavPgDn, _WinHitRecNavFirst, _WinHitRecNavLast, _WinHitRecNavNew, _WinHitRecNavDel, _WinHitRecNavSave, _WinHitRecNavLock, _WinHitNone
  • RecView
    Kopfbereich (_WinHitGroupColumn), Datenbereich (_WinHitGroup), leerer Anzeigebereich (_WinHitLstView)
  • TreeView
    TreeNode (_WinHitTreeNode), leerer Anzeigebereich (_WinHitNone)

Spezialfälle

  • Es gibt Objekte, die die Eigenschaft wpHelpTip besitzen, bei denen jedoch keine Ereignisse eingetragen werden können. Zwei dieser Objekte sind Toolbar-Buttons und Statusbar-Buttons. Ist beim Button die Eigenschaft wpHelpTip gesetzt, wird diese vor dem wpHelpTip der Tool- oder Statusbar bevorzugt. Ist zusätzlich beim Tool- oder Statusbar-Objekt das EvtHelpTip gesetzt, wird der jeweils zu verwendende Helptip an das Ereignis übergeben und kann dort verändert werden.
  • Bei den DataList- und RecList-Objekten gibt es Unterschiede zwischen EvtMouseItem und EvtHelpTip bei den gemeinsamen Argumenten. Bei EvtMouseItem wird in aID immer die RecID / Nummer der selektierten Zeile übergeben, im EvtHelpTip hingegen immer die, über der die Maus steht.
  • In Calendar-Objekten wird in aID das in int gewandelte Datum (CnvID()) übergeben, über dem der Mauszeiger steht.
  • Beim PrtJobPreview-Objekt wird EvtHelpTip auch dann ausgelöst, wenn sich der Mauszeiger nicht über einer Seite befindet. In diesem Fall sind die Argumente aHitTest = _WinHitNone, und aItem sowie aID = 0.
  • Objekte, deren Eigenschaft wpDisabled auf true gesetzt ist, erhalten kein EvtHelpTip. Es wird in diesem Fall kein Helptip angezeigt. Dies betrifft ebenfalls Listen-Objekte, deren Eigenschaft wpLstStyle auf _WinLstHeaderStatic gesetzt ist.
1 Kommentar

1 Kommentar zu “Neues Ereignis: EvtHelpTip”

Kommentar abgeben