
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_WinGanttIvlBoxClickinwpGanttFlagsgesetzt 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
wpHelpTipbesitzen, bei denen jedoch keine Ereignisse eingetragen werden können. Zwei dieser Objekte sind Toolbar-Buttons und Statusbar-Buttons. Ist beim Button die EigenschaftwpHelpTipgesetzt, wird diese vor demwpHelpTipder Tool- oder Statusbar bevorzugt. Ist zusätzlich beim Tool- oder Statusbar-Objekt dasEvtHelpTipgesetzt, 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
EvtMouseItemundEvtHelpTipbei den gemeinsamen Argumenten. BeiEvtMouseItemwird inaIDimmer die RecID / Nummer der selektierten Zeile übergeben, imEvtHelpTiphingegen immer die, über der die Maus steht. - In Calendar-Objekten wird in
aIDdas inintgewandelte Datum (CnvID()) übergeben, über dem der Mauszeiger steht. - Beim PrtJobPreview-Objekt wird
EvtHelpTipauch dann ausgelöst, wenn sich der Mauszeiger nicht über einer Seite befindet. In diesem Fall sind die ArgumenteaHitTest=_WinHitNone, undaItemsowieaID=0. - Objekte, deren Eigenschaft
wpDisabledauftruegesetzt ist, erhalten keinEvtHelpTip. Es wird in diesem Fall kein Helptip angezeigt. Dies betrifft ebenfalls Listen-Objekte, deren EigenschaftwpLstStyleauf_WinLstHeaderStaticgesetzt ist.
Eine Antwort
Hört sich sehr interessant an