8. Hints in FireMonkey nutzen Seit der ersten FireMonkey-Version gibt es keine Hints für die Controls. Gemeint sind die kleinen gelben Fenster, die aufpoppen, wenn Sie mit der Maus z.B. über einen Schalter fahren.
Interessanterweise hat das Object "TControl" aber sehr wohl eine Eigenschaft "Hint", nur wird diese nicht veröffentlicht, ist also privat. Das bedeutet, das man i.d.R. als Entwickler darauf keinen Zugriff hat. Außer man benutzt einen Hack, wie wir das in meiner Unit "HS_FMXHints.pas" machen: type Dadurch erhalten Sie
Zugriff auf die Eigenschaft "Hint". Leider können wir die Eigenschaft "Hint" nicht im Objektinspektor bearbeiten, sondern müssen sie mit einem Aufruf der Funktion "SetAHint" setzen, was man am besten im Create-Event einer Form macht. procedure SetAHint (ic: TObject; txt: string); Als Wert für "ic" geben Sie das Control ein, dem Sie einen Hint verpassen wollen (z.B. TButton, TListbox, was auch immer) und für "txt" den Hintstring. Die Unit richtet sich selber ein, wenn Sie nur eingebunden wird und nimmt dabei schon bestimmte Standardeinstellungen für den Hint vor. Diese Standardeinstellungen können Sie mit einem Aufruf der Procedure SetHintsetting überschreiben: procedure SetHintSetting (TimeBeforeShow, TimeToShow: Integer; DynamicShow: Boolean; TC: TAlphaColor); TimeBeforeShow gibt dabei in Millisekunden an, wie lange gewartet werden soll, bis der Hint angezeigt werden soll (nachdem Sie also die Maus über das Control geführt haben). TimeToShow beschreibt, wie lange der Hint angegeben werden soll. DynamicShow, wenn gesetzt, verändert die Anzeigedauer je nach Länge des Hint-Textes. Das ist besonders praktisch, wenn es sich um längere Hinweise handelt. Procedure HindeHint sollten Sie in jeder Form zur Sicherheit im FormDesytroy-Event aufrufen, in welcher Sie die Hints verwenden. Sie stellt sicher, dass der Hint ausblendet ist und die zu zerstörender Form nicht mehr Parent des Hints ist. Wichtige Randinformationen: Die Hint-Funktionalität ist nur einsetzbar bei Controls, welche die Eigenschaft "HitTest" auf "True" gesetzt haben, denn ansonsten wird das Event "OnMouseEnter", welches die HS_FMSHints-Unit verwendet, nicht erzeugt. Behandlung eines Sonderfallsl Wenn Sie selber im Objectinspector für ein Control das Event OnMouseEnter (oder OnMouseLeave) auswerten, müssen Sie manuell die Funktion "HintEnter" aufrufen, damit der Hint angezeigt wird (bzw. HintExit, damit er wieder ausgeblendet wird). Sie können die Unit hier downloaden. Zur Verwendung der Unit gibt es auch 2 Videos, welche Sie über die nachfolgenden Links aufrufen können. Das erste Video zeigt die Funktionalität etwas ausführlicher, das 2. Video geht auf die letzte aktuelle Fassung der HS_FMXHints-Unit ein. Für Anwender, die mein FireMonkey-Buch gekauft haben, gibt es noch ein Zusatzprogramm oben drauf, das Gethints-Programm. Es kann aus einer VCL-DFM-Datei alle Hints auslesen und Aufrufe generieren, die Sie direkt in der Firemonkey-Form für Ihre Controls verwenden können, wenn Sie z.B. die VCL-Form mit dem Mida-Converter in eine FMX-Form ungewandelt haben:
Viel Erfolg mit Delphi und FireMonkey! Harry Stahl, 27.08.2014
|