FMX.ActnList.TActionLink

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

System.Actions.TContainedActionLinkSystem.Classes.TBasicActionLinkSystem.TObjectTActionLink

Delphi

TActionLink = class(TContainedActionLink)

C++

class PASCALIMPLEMENTATION TActionLink : public System::Actions::TContainedActionLink

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
class public
FMX.ActnList.pas
FMX.ActnList.hpp
FMX.ActnList FMX.ActnList


Beschreibung

Die Aktionsverknüpfung verbindet eine Aktion mit einem Client (Steuerelement, Menüeintrag oder Symbolschaltfläche).

TActionLink erweitert TContainedActionLink durch:

  • Definition von Eigenschaften zum Ermitteln, welche Eigenschaften der Aktion mit den entsprechenden Eigenschaften des Clients verknüpft sind.
Dabei handelt es sich um die folgenden Eigenschaften: CheckedLinked, EnabledLinked, GroupIndexLinked, ShortCutLinked, VisibleLinked und OnExecuteLinked. Diese Eigenschaften rufen die entsprechenden Methoden zum Überprüfen auf, ob Eigenschaften der Aktion mit den entsprechenden Eigenschaften des Clients verknüpft sind.
Dies sind die Methoden IsCheckedLinked, IsEnabledLinked, IsGroupIndexLinked, IsShortCutLinked, IsVisibleLinked und IsOnExecuteLinked. Diese Methoden sind in TActionLink implementiert.
  • Bereitstellung der Implementierung von Methoden, die Werte von mit Aktionseigenschaften verknüpften Client-Eigenschaften festlegen.

Spezielles Verhalten beim Verknüpfen von Eigenschaften der Aktion TCustomViewAction mit zugehörigen Eigenschaften von Clients

Gemäß der Implementierung in TActionLink werden bestimmte Eigenschaften von TCustomViewAction-Aktionen nicht mit den entsprechenden Eigenschaften von Clients verknüpft. Dies sind die Eigenschaften CheckedLinked, EnabledLinked, GroupIndexLinked, ShortCutLinked, VisibleLinked und OnExecuteLinked. Sie geben False zurück, wenn eine der Aktionsverknüpfung TActionLink zugeordnete Aktion zu TCustomViewAction gehört. Das bedeutet, dass Änderungen des Werts der Eigenschaften Enabled, Checked, GroupIndex, ShortCut, Visible und OnExecute nicht an die entsprechenden Eigenschaften von der Aktionsverknüpfung zugeordneten Clients weitergegeben werden.

Für Aktionen, die nicht zu TCustomViewAction gehören, geben die Eigenschaften CheckedLinked, EnabledLinked, GroupIndexLinked, ShortCutLinked, VisibleLinked und OnExecuteLinked True zurück; deshalb werden Änderungen der Werte der Eigenschaften Enabled, Checked, GroupIndex, ShortCut, Visible und OnExecute an die entsprechenden Eigenschaften von der Aktionsverknüpfung zugeordneten Clients weitergegeben.

Verwendung von Aktionsverknüpfungen

Beim Entwerfen von RAD Studio-Anwendungen weist der Programmierer normalerweise Clients (Steuerelementen, Menüeinträgen, Symbolschaltflächen oder anderen Komponenten vom Typ TFmxObject, die die Eigenschaft Action unterstützen) Aktionen zu.

Zuweisen einer Aktion zu einem Client

Beim Entwurf können Sie diese Zuweisung folgendermaßen vornehmen:

  1. Wählen Sie im Formular-Designer Ihre Client-Komponente (ein Objekt, das in den Typ TFmxObject umgewandelt werden kann) aus. Wenn die ausgewählte Komponente die Sichtbarkeit published der Eigenschaft Action hat, dann erscheint diese Eigenschaft im Objektinspektor.
  2. Wählen Sie im Objektinspektor den Eintrag Action aus, klicken Sie rechts auf den nach unten weisenden Pfeil, und wählen Sie dann die Aktion aus, die Sie dem Client zuordnen möchten.

Zur Laufzeit können Sie die benötigte Aktion einfach der Eigenschaft Action (TFmxObject.Action) eines Client-Objekts zuweisen.

Zugreifen auf eine "Action"-Eigenschaft

Das Zuweisen oder Abrufen einer Aktion zu oder aus der Eigenschaft Action wird nicht direkt vorgenommen. Die Eigenschaft Action hat die folgende Deklaration:

property Action: TBasicAction read GetAction write SetAction;

Die Klasse TFmxObject verfügt über kein FAction-Feld. Die private Setter-Methode SetAction und die Getter-Methode GetAction setzen bzw. ermitteln Aktionswerte in bzw. aus der Eigenschaft Action des passenden TActionLink-Objekts. Die Setter- und Getter-Methoden rufen ein TActionLink-Objekt durch Aufruf von GetActionLinkClass ab.

Das Kernstück der SetAction-Setter-Methode sieht etwa folgendermaßen aus:

 procedure TFmxObject.SetAction(const Value: TBasicAction);
 var
   lClass: TActionLinkClass;
 begin
    lClass := GetActionLinkClass;
    FActionLink := lClass.Create(Self);
    ActionLink.Action := Value;
 end;

Hier deklariert:

lClass: TActionLinkClass;

die lClass-Variable, deren Wert die Klassenreferenz für die Klasse TActionLink oder für eine davon abgeleitete Klasse ist. Beachten Sie zum besseren Verständnis dieses Codes, dass die Klasse TFmxObject die schreibgeschützte Eigenschaft ActionLink deklariert, die in dem Feld FActionLink gespeichert wird:

property ActionLink: TActionLink read FActionLink;

Die Setter-Methode SetAction legt die Eigenschaft ActionLink.Action in dem Aktionsverknüpfungsobjekt, das dem Client zugeordnet ist, fest. Dieses Aktionsverknüpfungsobjekt wird erstellt und FActionLink durch den folgenden Code zugewiesen:

FActionLink := lClass.Create(Self);

Der folgende Code ruft den lClass-Klassenreferenzwert ab:

lClass := GetActionLinkClass;

GetActionLinkClass gibt die zugeordnete Aktionsverknüpfungsklasse zurück. Um eine Action abzurufen, ruft das Client-Objekt GetAction auf:

 function TFmxObject.GetAction: TBasicAction;
 begin
  if Assigned(FActionLink) then
    Result := FActionLink.Action
 end;

In diesem Beispiel wird das in der Eigenschaft FActionLink gespeicherte Aktionsverknüpfungsobjekt verwendet. Das heißt, dass Client-Objekte eine zugeordnete Aktion nicht explizit beibehalten. Die Aktion wird im zugehörigen Aktionsverknüpfungsobjekt gespeichert. Die Getter-Methode GetAction und die Setter-Methode SetAction ermitteln bzw. legen eine Aktion aus der oder für die Eigenschaft Action dieses Aktionsverknüpfungsobjekts fest. Wenn GetActionLinkClass einen Wert ungleich nil zurückgibt, wird das Aktionsobjekt zu Action zugewiesen. Wenn das Steuerelementobjekt keine Aktionen unterstützt, dann sollte GetActionLinkClass nil zurückgeben. In diesem Fall löst der Versuch, einen Wert für die Eigenschaft Action festzulegen, die folgende Exception aus:

StrEActionNoSuported = 'Class %s does not support the action'

Beachten Sie die Eigenschaft ActionClient:

property ActionClient: boolean read FActionClient;

Der Wert der Eigenschaft ActionClient hängt vom Wert von Action ab:

  • Wenn Action = nil, dann ist ActionClient = False. Das bedeutet, dass dieses Komponentenobjekt kein Client einer Aktion ist.
  • Wenn Action <> nil, dann ist ActionClient = True. Das bedeutet, dass dieses Komponentenobjekt ein Client einer zugeordneten Aktion ist. Nach dem Ändern der Eigenschaft ActionClient wird die virtuelle Methode DoActionClientChanged aufgerufen.


Hinweis: Aktionsverknüpfungsklassen sind ein internes Feature von RAD Studio. Sie müssen Aktionsverknüpfungsklassen nur explizit in einer Anwendung verwenden, wenn Sie eigene Client-Komponententypen erstellen. Wenn Ihre Client-Komponente beispielsweise über neue Eigenschaften verfügt, dann muss das entsprechende Aktionsverknüpfungsobjekt die Status dieser Eigenschaften steuern. Daher müssen Sie eventuell Aktionsverknüpfungsklassen erweitern, um diese Eigenschaften zu behandeln.

Codebeispiele

Siehe auch