FMX.ActnList.TActionLink

De RAD Studio API Documentation
Aller à : navigation, rechercher

System.Actions.TContainedActionLinkSystem.Classes.TBasicActionLinkSystem.TObjectTActionLink

Delphi

TActionLink = class(TContainedActionLink)

C++

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

Propriétés

Type Visibilité  Source Unité  Parent
class public
FMX.ActnList.pas
FMX.ActnList.hpp
FMX.ActnList FMX.ActnList


Description

TActionLink est la classe de base pour les liaisons d'actions. Une liaison d'actions connecte une action à un client (un contrôle, un élément de menu ou un bouton d'outil).

TActionLink ne déclare que le type relatif aux objets liaison d'actions FireMonkey. TActionLink ne fournit aucune nouvelle fonctionnalité de gestion en ce qui concerne la classe ancêtre TContainedActionLink.


Comment et pourquoi les liaisons d'actions sont utilisées

Lors de la conception des applications RAD Studio, le programmeur assigne typiquement des actions à des clients (contrôles, éléments de menu, bouton d'outil ou tout autre composant de type TFmxObject prenant en charge la propriété Action).

Comment assigner une action à un client

A la conception, vous pouvez effectuer cette assignation en utilisant l'algorithme suivant :

  1. Dans le Concepteur de fiches, sélectionnez votre composant client (un objet pouvant être transtypé sur le type TFmxObject). Si la propriété Action du composant sélectionné a la visibilité published, cette propriété apparaît dans l'inspecteur d'objets.
  2. Dans l'inspecteur d'objets, sélectionnez l'élément Action et cliquez sur la flèche vers le bas située à droite. Choisissez l'action que vous voulez assigner au client.

A l'exécution, vous pouvez assigner simplement l'action désirée à la propriété Action (TFmxObject.Action) d'un objet client.

Comment accéder à la propriété Action

L'assignation d'une action à la propriété Action ou son obtention depuis cette propriété n'est pas une opération directe. La propriété Action a la déclaration suivante :

property Action: TBasicAction read GetAction write SetAction;

Notez que la classe TFmxObject n'a pas de champ FAction. Le setter privé SetAction et le getter privé GetAction définissent et récupèrent respectivement les valeurs d'actions depuis la propriété Action de l'objet de type TActionLink approprié. Le setter et le getter récupèrent un objet de type TActionLink en appelant GetActionLinkClass.

Le noyau du setter SetAction a l'apparence suivante :

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

Ici :

lClass: TActionLinkClass;

déclare la variable lClass dont la valeur est la référence de classe pour la classe TActionLink ou pour l'un de ses descendants. Pour comprendre ce code, sachez que la classe TFmxObject déclare la propriété en lecture seule ActionLink, qui est stockée dans le champ FActionLink :

property ActionLink: TActionLink read FActionLink;

Le setter SetAction définit la propriété ActionLink.Action dans l'objet liaison d'actions associé au client. Cet objet liaison d'actions est créé et assigné à FActionLink par :

FActionLink := lClass.Create(Self);

Le code suivant récupère la valeur de la référence de classe lClass :

lClass := GetActionLinkClass;

GetActionLinkClass renvoie la classe de liaison d'actions associée. Pour récupérer une action, l'objet client appelle GetAction :

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

Cet exemple utilise encore l'objet liaison d'actions stocké dans la propriété FActionLink. Ce qui signifie que les objets client ne conservent pas explicitement une action associée. L'action est stockée dans l'objet liaison d'actions associé. Le getter GetAction et le setter SetAction récupèrent et définissent respectivement une action depuis ou vers la propriété Action de cet objet liaison d'actions. Si GetActionLinkClass renvoie une valeur non nil, l'objet action est assigné à Action. Si l'objet contrôle ne prend pas en charge les actions, GetActionLinkClass doit renvoyer nil. Dans ce cas, la tentative de définir la propriété Action sur une valeur déclenche l'exception suivante :

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

Examinez la propriété ActionClient :

property ActionClient: boolean read FActionClient;

La propriété ActionClient dépend de la valeur de Action :

  • Si Action = nil alors ActionClient = False. Cela signifie que cet objet composant n'est pas un client d'une action quelconque.
  • Si Action <> nil alors ActionClient = True. Cela signifie que cet objet composant n'est pas un client d'une action associée. Dès que la propriété ActionClient est modifiée, la méthode virtuelle DoActionClientChanged est appelée.


Remarque : Les classes de liaison d'actions sont une fonctionnalité interne de RAD Studio. Vous n'avez pas besoin d'utiliser explicitement les classes de liaison d'actions dans une application, sauf si vous créez votre propre type de composants client. Si, par exemple, votre composant client est doté de nouvelles propriétés, il est nécessaire que l'objet liaison d'actions approprié contrôle l'état de ces propriétés. Par conséquent, vous devez étendre des classes de liaison d'actions pour gérer ces propriétés.

Exemples de code

Voir aussi