Verwenden von Hinweisen zum Anzeigen von Kontexthilfe in einer FireMonkey-Anwendung

Aus RAD Studio
Wechseln zu: Navigation, Suche

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.

Plattformunterstützung für Hinweise

Plattform Unterstützt

Windows

Checkmark.svg

macOS

Checkmark.svg
(10.10+)

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:

Delphi:
  Application.ShowHint := False;
C++:
  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 auf True.
Hinweis: ShowHint und ParentShowHint des Steuerelements können nicht gleichzeitig True sein.
  • Setzen Sie HitTest des Steuerelements auf True.
Hinweis: Bei den meisten Steuerelementen ist HitTest standardmäßig 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:

Delphi:
  Button1.Hint := 'This is a button';
  Button1.ShowHint := True;
C++:
  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:

Hinweis: Sie müssen dem uses-Abschnitt/der Header-Datei im Quelltext-Editor die Unit FMX.Utils hinzufügen. Wenn Sie für den Hinweis keinen kurzen oder langen Teil festgelegt haben, wird durch Aufruf der obigen Methoden dasselbe Ergebnis, nämlich der gesamte Hinweistext, zurückgegeben.

Der folgende Code zeigt, wie der lange Hinweis in der Ereignisbehandlungsroutine TApplication.OnHint abgerufen wird:

Delphi:
procedure TForm1.OnApplicationHint(Sender: TObject);
begin
  Label1.Text := GetLongHint(Application.Hint);
end;
C++:
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:

Delphi:

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;
C++:

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:

Delphi:
procedure TForm1.OnApplicationHint(Sender: TObject);
begin
   Label1.Text := Application.Hint;
   Application.HideHint;
end;
C++:
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.

Hinweis: Menüeinträge der obersten Ebene unterstützen keine Hinweise.

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:

Delphi:
procedure TForm1.StatusBar1Hint(Sender: TObject);
begin
  Label1.Text := Application.Hint;
end;
C++:
__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.

Delphi:
procedure TForm1.OnApplicationHint(Sender:TObject);
begin
   Label1.Text := Application.Hint;
   StatusBar1Hint(Sender);
end;
C++:
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.

Hinweis: Auch wenn Sie keinen Hinweis für eine Aktion festlegen, wird im Hinweis das Tastenkürzel angezeigt, wenn TApplication.HintShortCuts 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.

Hinweis: Der Parameter CanShow führt nichts aus.
Delphi:
procedure TForm1.Action1Hint(var HintStr: string; var CanShow: Boolean);
begin
  HintStr := HintStr + 'My hint text';
end;
C++:
__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:

Delphi:
procedure TForm1.Action1Hint(var HintStr: string; var CanShow: Boolean);
begin
  HintStr := '';
end;
C++:
__fastcall TForm1:Action1Hint(System:UnicodeString HintStr, boolean CanShow);
{
  HintStr = "";
}
Hinweis: Wenn Sie einem Steuerelement eine Aktion mit einem Hinweis zuweisen und dann den Hinweis aus den Eigenschaften des Steuerelements entfernen, wird der Aktionshinweis trotzdem angezeigt. Informationen zu diesem Szenario finden Sie in der folgenden Tabelle.

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
  1. Festlegen eines Hinweises für die Aktion: ActionHint
  2. Zuweisen dieser Aktion zu einem Steuerelement

ActionHint

  1. Festlegen eines Hinweises für die Aktion: ActionHint
  2. Zuweisen dieser Aktion zu einem Steuerelement
  3. Unterdrücken des Hinweises zur Laufzeit (Zuweisen eines leeren Strings)
  1. Festlegen eines Hinweises für die Aktion: ActionHint
  2. Zuweisen dieser Aktion zu einem Steuerelement
  3. Ändern des Hinweises in den Eigenschaften des Steuerelements, Festlegen des Hinweises als ControlHint

ControlHint

  1. Festlegen eines Hinweises für die Aktion: ActionHint
  2. Zuweisen dieser Aktion zu einem Steuerelement
  3. Entfernen des Hinweises aus den Eigenschaften des Steuerelements

ActionHint

Hinweis: Berücksichtigen Sie bei den Szenarien in der obigen Tabelle die Tastenkürzel.

Siehe auch

Bibliotheken

Themen

FireMonkey-Aktionen