
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
inwpGanttFlags
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 EigenschaftwpHelpTip
gesetzt, wird diese vor demwpHelpTip
der Tool- oder Statusbar bevorzugt. Ist zusätzlich beim Tool- oder Statusbar-Objekt dasEvtHelpTip
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
undEvtHelpTip
bei den gemeinsamen Argumenten. BeiEvtMouseItem
wird inaID
immer die RecID / Nummer der selektierten Zeile übergeben, imEvtHelpTip
hingegen immer die, über der die Maus steht. - In Calendar-Objekten wird in
aID
das inint
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 ArgumenteaHitTest
=_WinHitNone
, undaItem
sowieaID
=0
. - Objekte, deren Eigenschaft
wpDisabled
auftrue
gesetzt ist, erhalten keinEvtHelpTip
. Es wird in diesem Fall kein Helptip angezeigt. Dies betrifft ebenfalls Listen-Objekte, deren EigenschaftwpLstStyle
auf_WinLstHeaderStatic
gesetzt ist.
Eine Antwort
Hört sich sehr interessant an