Verwenden von Hinweisen zum Anzeigen von Kontexthilfe in einer FireMonkey-Anwendung
Nach oben zu FireMonkey-Anwendungsdesign
Auf dieser Seite wird beschrieben, wie Sie Hinweise in einer FireMonkey-Anwendung verwenden. Außerdem finden Sie hier einige Codefragmente.
Inhaltsverzeichnis
Plattformunterstützung für Hinweise
Plattform | Unterstützt |
---|---|
Windows |
|
macOS |
|
iOS |
|
Android |
Aktivieren von Hinweisen
Aktivieren von Hinweisen für Ihre Anwendung
In Ihrer Anwendung können standardmäßig Hinweise angezeigt werden. Die Eigenschaft, mit der die Anzeige von Hinweisen aktiviert/deaktiviert wird, ist TApplication.ShowHint. Dabei handelt es sich um eine globale Einstellung, die alle hinweisbezogenen Aktionen, wie die Anzeige von Hinweisen und hinweisbezogene Ereignisse, betrifft. Verwenden Sie den folgenden Code, um Hinweise für Ihre Anwendung zu deaktivieren:
Application.ShowHint := False;
Application->ShowHint = false;
Aktivieren von Hinweisen für ein Steuerelement
Führen Sie einen der folgenden Schritte aus, um Hinweise für das aktuelle Steuerelement zu aktivieren:
- Setzen Sie ShowHint des Steuerelements auf
True
. - Setzen Sie ParentShowHint des Steuerelements auf
True
und ShowHint des übergeordneten Steuerelements ebenfalls aufTrue
.
- Setzen Sie HitTest des Steuerelements auf
True
.
True
. Dies gilt jedoch nicht für alle Steuerelemente. Zum Beispiel ist bei TLabel und TPathLabel HitTest standardmäßig False
.Vererbung von ParentShowHint
Wenn Sie ein Steuerelement auf dem Formular platzieren und einen Hinweis für dieses Steuerelement festlegen, ist der Hinweis standardmäßig aktiviert. Und zwar, weil TForm.ShowHint standardmäßig True
ist und ParentShowHint des Steuerelements ebenfalls standardmäßig True
ist.
Wenn Sie jedoch ein anderes Steuerelement als untergeordnetes Steuerelement des vorherigen hinzufügen und einen Hinweis für das neue Steuerelement festlegen, wird dieser Hinweis aufgrund der Nichtbeachtung der im Abschnitt Aktivieren von Hinweisen für ein Steuerelement dargestellten Regeln nicht standardmäßig angezeigt. In diesem Fall ist ParentShowHint des untergeordneten Steuerelements True
, aber ShowHint des übergeordneten Steuerelements ist False
. Ändern Sie eine dieser Eigenschaften entsprechend der Regeln zum Aktivieren von Hinweisen für das untergeordnete Steuerelement.
Festlegen von Hinweisen
Sie können den Hinweistext beim Entwurf im Objektinspektor in die Eigenschaft Hint eines Steuerelements eingeben, oder Sie können einen Hinweis zur Laufzeit programmseitig festlegen. Der folgende Code zeigt, wie ein Hinweis für eine Schaltfläche festgelegt und aktiviert wird:
Button1.Hint := 'This is a button';
Button1.ShowHint := True;
Button1->Hint = "This is a button";
Button1->ShowHint = true;
Kurze und lange Hinweise
Sie können für denselben Hinweis einen kurzen und einen langen Text festlegen. Trennen Sie dazu die beiden Texte einfach durch einen senkrechten Strich (| Pipe). Zum Beispiel:
A hint|A much longer hint
Wenn Sie einen Hinweis anzeigen, können Sie mit den folgenden Methoden aus der Unit FMX.Utils entweder den kurzen oder den langen Teil des Hinweises abrufen:
Der folgende Code zeigt, wie der lange Hinweis in der Ereignisbehandlungsroutine TApplication.OnHint abgerufen wird:
procedure TForm1.OnApplicationHint(Sender: TObject);
begin
Label1.Text := GetLongHint(Application.Hint);
end;
void _fastcall TForm1::OnApplicationHint(TObject* Sender);
{
Label1->Text = GetLongHint(Application->Hint);
}
Hinweise und Ereignisse
Bei jedem Auslösen eines Hinweises wird das Ereignis TApplication.OnHint ausgelöst. Mit diesem Ereignis können Sie alle Hinweise in Ihrer Anwendung abfangen und verwenden. Beispielsweise können Sie dem Ereignis TApplication.OnHint eine benutzerdefinierte Ereignisbehandlungsroutine zuweisen und damit alle Hinweise in einer Beschriftung anzeigen:
Deklarieren der benutzerdefinierten Ereignisbehandlungsroutine:
private
{ Private declarations }
procedure OnApplicationHint(Sender: TObject);
Hinzufügen der Implementierung:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnHint := OnApplicationHint;
end;
procedure TForm1.OnApplicationHint(Sender: TObject);
begin
Label1.Text := Application.Hint;
end;
Hinzufügen der folgenden Deklaration zur Projekt-Header-Datei:
private: // User declarations
void __fastcall OnApplicationHint(TObject* Sender);
Die Implementierung des benutzerdefinierten Ereignisses:
__fastcall TForm1:FormCreate(TObject* Sender);
{
Application->OnHint = OnApplicationHint;
}
void __fastcall TForm1:OnApplicationHint(TObject* Sender);
{
Label1->Text = Application->Hint;
}
Unterdrücken von Hinweisen
Möglicherweise möchten Sie die Anzeige eines Hinweises unterdrücken, diesen Hinweis aber dennoch abfangen. Sie erreichen dies durch Aufrufen von TApplication.HideHint in der Ereignisbehandlungsroutine TApplication.OnHint:
procedure TForm1.OnApplicationHint(Sender: TObject);
begin
Label1.Text := Application.Hint;
Application.HideHint;
end;
void __fastcall TForm1:OnApplicationHint(TObject* Sender);
{
Label1->Text = Application->Hint;
Application->HideHint;
}
Besondere Aspekte
Es gibt einige Ausnahmen und besondere Anwendungsfälle, die Sie bei der Verwendung von Hinweisen berücksichtigen sollten.
Menüs
Sie können für Menüeinträge Hinweise festlegen, aber sie werden nicht wie bei anderen Steuerelementen angezeigt, sondern an die Ereignisbehandlungsroutine weitergegeben. Wenn Sie also einen Hinweis für einen Menüeintrag festlegen, können Sie ihn mit einer benutzerdefinierten TApplication.OnHint-Ereignisbehandlungsroutine abfangen und anzeigen. Hinweise für Menüeinträge können nicht deaktiviert werden. Wenn Sie einen Hinweis für einen Menüeintrag deaktivieren möchten, weisen Sie als Hinweis einen leeren String zu.
Statuszeile
Ein Sonderfall in Bezug auf Hinweise stellt das Steuerelement TStatusBar dar. Wenn Sie Ihrer Anwendung eine Statuszeile hinzufügen und die Eigenschaft TStatusBar.AutoHint auf True
setzen, empfängt das Ereignis TStatusBar.OnHint automatisch alle Hinweise.
Verwenden Sie diesen Code in der Ereignisbehandlungsroutine, um Hinweise in einer Beschriftung anzuzeigen, wenn Ihr Formular über eine Statuszeile verfügt:
procedure TForm1.StatusBar1Hint(Sender: TObject);
begin
Label1.Text := Application.Hint;
end;
__fastcall TForm1:StatusBar1Hint(TObject* Sender);
{
Label1->Text = Application->Hint;
}
Gleichzeitiges Verwenden beider OnHint-Ereignisse
Wenn Sie eine benutzerdefinierte TApplication.OnHint-Ereignisbehandlungsroutine in einer Anwendung mit einer Statuszeile festlegen, wird das Ereignis TStatusBar.OnHint ungeachtet der Eigenschaft TStatusBar.AutoHint nicht ausgelöst. Wenn Sie dennoch beide Ereignisse verwenden möchten, können Sie dies durch Aufrufen von TStatusBar.OnHint aus der TApplication.OnHint-Ereignisbehandlungsroutine erreichen.
procedure TForm1.OnApplicationHint(Sender:TObject);
begin
Label1.Text := Application.Hint;
StatusBar1Hint(Sender);
end;
void __fastcall TForm1:OnApplicationHint(TObject* Sender);
{
Label1->Text = Application->Hint;
StatusBar1Hint(Sender);
}
Aktionen
FireMonkey-Aktionen unterstützen ebenfalls Hinweise. Sie können einen Hinweis für eine Aktion angeben, und dieser Hinweis wird für alle Steuerelemente, die diese Aktion verwenden, übernommen. Sie können Aktionshinweise nicht deaktivieren (sie verfügen nicht über die Eigenschaft ShowHint
). Die globale TApplication.ShowHint-Einstellung betrifft auch Aktionen.
Festlegen von Aktionshinweisen
Sie können einen Hinweis für eine Aktion im Objektinspektor oder zur Laufzeit festlegen. Ein Beispiel zur Definition eines Hinweises für eine Aktion zur Laufzeit finden Sie unter Aktionsereignis OnHint. Sie müssen aber trotzdem Hinweise für dieses Steuerelement aktivieren, ansonsten ist der Hinweis deaktiviert.
Tastenkürzel für Aktionen
Aktionen ermöglichen auch, das Tastenkürzel (TAction.ShortCut) als Teil des Hinweises anzuzeigen. Dazu müssen Sie
TApplication.HintShortCuts auf True
setzen.
True
ist.Aktionsereignis OnHint
Aktionen haben ein eigenes unabhängiges OnHint-Ereignis. Wenn Sie eine benutzerdefinierte Ereignisbehandlungsroutine für dieses Ereignis implementieren, können Sie den Text des Hinweises programmseitig festlegen oder ändern oder diesen Hinweis unterdrücken.
Der folgende Code ist ein Beispiel für eine OnHint-Ereignisbehandlungsroutine für eine Aktion, die den Text des Hinweises ändert.
CanShow
führt nichts aus.procedure TForm1.Action1Hint(var HintStr: string; var CanShow: Boolean);
begin
HintStr := HintStr + 'My hint text';
end;
__fastcall TForm1:Action1Hint(System:UnicodeString HintStr, boolean CanShow);
{
HintStr = HintStr + "My hint text";
}
Wenn Sie den Hinweis entfernen möchten, können Sie dies im Objektinspektor tun oder den Hinweis zur Laufzeit unterdrücken:
procedure TForm1.Action1Hint(var HintStr: string; var CanShow: Boolean);
begin
HintStr := '';
end;
__fastcall TForm1:Action1Hint(System:UnicodeString HintStr, boolean CanShow);
{
HintStr = "";
}
Steuerelementhinweise und Aktionshinweise
Wenn Sie einem Steuerelement eine Aktion zuweisen, erbt das Steuerelement automatisch den Hinweis dieser Aktion. Wenn Sie den Hinweis später ändern möchten, können Sie dazu entweder den Hinweis der Aktion oder den Hinweis des Steuerelements ändern. Es gibt jedoch bestimmte Szenarien, die Sie berücksichtigen sollten. In der folgenden Tabelle sind die verschiedenen Szenarien und der sich ergebende Hinweis aufgeführt.
Schritte | Angezeigter Hinweis |
---|---|
|
|
|
|
|
|
|
|
Siehe auch
Bibliotheken
- FMX.Controls.THint
- FMX.Controls.TControl.Hint
- FMX.Controls.TControl.HitTest
- FMX.Controls.TControl.ShowHint
- FMX.StdCtrls.TStatusBar.OnHint
- FMX.StdCtrls.TStatusBar.AutoHint
- FMX.Forms.TApplication.OnHint
- FMX.Forms.TApplication.Hint
- FMX.Forms.TApplication.ShowHint
- FMX.Forms.TApplication.HideHint
- FMX.Forms.TApplication.HintShortCuts
- FMX.Utils.GetLongHint
- FMX.Utils.GetShortHint