API:FMX.Forms.TFormActionLink
Delphi
TFormActionLink = class(FMX.ActnList.TActionLink)
C++
class PASCALIMPLEMENTATION TFormActionLink : public Fmx::Actnlist::TActionLink
Sommaire
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
class | public | FMX.Forms.pas FMX.Forms.hpp |
FMX.Forms | FMX.Forms |
Description
Une liaison d'actions connecte une action à un client (un contrôle, un élément de menu ou un bouton d'outil).
FMX.Forms.TFormActionLink hérite de FMX.ActnList.TActionLink. Tout le contenu en-dessous de cette ligne se réfère à FMX.ActnList.TActionLink.
Une liaison d'actions connecte une action à un client (un contrôle, un élément de menu ou un bouton d'outil).
TActionLink étend TContainedActionLink en :
- Définition des propriétés qui déterminent les propriétés de l'action qui sont liées aux propriétés correspondantes du client.
- Ce sont les propriétés suivantes : CheckedLinked, EnabledLinked, GroupIndexLinked, ShortCutLinked, VisibleLinked et OnExecuteLinked. Elles appellent les méthodes respectives qui vérifient si les propriétés de l'action sont liées aux propriétés correspondantes du client.
- Ce sont les méthodes IsCheckedLinked, IsEnabledLinked, IsGroupIndexLinked, IsShortCutLinked, IsVisibleLinked et IsOnExecuteLinked, respectivement. Ces méthodes sont implémentées dans TActionLink.
- Fourniture de l'implémentation des méthodes définissant les valeurs des propriétés client qui sont liées aux propriétés de l'action.
Comportement spécial consistant à définir des liaisons entre les propriétés de l'action TCustomViewAction et les propriétés correspondantes des clients
Telles qu'implémentées dans TActionLink, plusieurs propriétés des actions TCustomViewAction ne sont pas liées aux propriétés correspondantes des clients. Elles sont implémentées dans les propriétés CheckedLinked, EnabledLinked, GroupIndexLinked, ShortCutLinked, VisibleLinked et OnExecuteLinked. Elles renvoient False
lorsqu'une action assignée à la liaison d'action TActionLink appartient au TCustomViewAction. Cela signifie que les modifications des valeurs des propriétés Enabled, Checked, GroupIndex,
ShortCut, Visible et OnExecute ne sont pas distribuées aux propriétés correspondantes des clients associés à la liaison d'action.
Pour les actions qui n'appartiennent pas aux propriétés TCustomViewAction, CheckedLinked, EnabledLinked, GroupIndexLinked, ShortCutLinked, VisibleLinked et OnExecuteLinked, renvoie True
; par conséquent, les modifications des valeurs des propriétés Enabled, Checked, GroupIndex,
ShortCut, Visible et OnExecute sont distribuées aux propriétés correspondantes des clients associés à la liaison d'action.
Comment et pourquoi les liaisons d'actions sont utilisées
Lors de la conception d'applications RAD Studio, un programmeur assigne typiquement des actions aux clients (contrôles, éléments de menus, boutons d'outils 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 :
- Dans le Concepteur de fiches, sélectionnez votre composant client (un objet pouvant être transtypé sur le type TFmxObject). Si le composant sélectionné a la visibilité published de la propriété Action, cette propriété apparaît alors dans l'inspecteur d'objets.
- Dans l'inspecteur d'objets, sélectionnez l'élément Action, cliquez sur la flèche vers le bas sur la droite, puis sélectionnez l'action que vous voulez assigner au client.
A l'exécution, vous pouvez assigner simplement l'action requise à 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. L'accesseur en écriture private SetAction et l'accesseur en lecture GetAction définit et récupère, respectivement, les valeurs d'action de la propriété Action de l'objet de type TActionLink adéquat. Les accesseurs en écriture et en lecture 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
alorsActionClient = False
. Cela signifie que cet objet composant n'est pas un client d'une action quelconque. - Si
Action <> nil
alorsActionClient = 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.