Les fonctionnalités des actions implémentées dans FireMonkey
Sommaire
Remonter à Actions dans FireMonkey
Les classes des actions de base, avec lesquelles les applications utilisateur fonctionnent, résident dans les unités Vcl.ActnList.pas et FMX.ActnList.pas. Les classes des actions standard résident dans les fichiers Vcl.StdActns.pas et FMX.StdActns.pas. Ces modules se trouvent dans les packages VCL.dpkw et FMX.dpk.
Lors de la création de nouvelles actions FMX standard, le programmeur doit si possible les placer dans FMX.StdActns.pas (voir aussi FMX.ActnRes.pas).
Unité FMX.ActnRes
Dans le package dclfmxstd.dpk, l'unité FMX.ActnRes est créée en tant qu'analogie à l'unité ActnRes. Cette unité contient les instances des actions standard avec les titres, les raccourcis par défaut spécifiés et autres propriétés, qui sont utilisées en tant que valeurs par défaut des propriétés lors de la création d'une nouvelle action standard dans l'éditeur de liste d'actions (voir l'image).
L'unité FMX.ActnRes conserve seulement les valeurs, et ne doit pas contenir des implémentations d'actions. Cette unité n'est pas utilisée dans les applications utilisateur, mais seulement par l'éditeur de liste d'actions de l'EDI, quand il appelle System.Actions.RegisterActions pour recenser des actions standard.
L'unité FMX.ActnRes a la classe unique TStandardActions, qui est le descendant de System.Classes.TDataModule.
Remarque : Les développeurs doivent placer des actions standard avec les propriétés définies par défaut, à savoir dans l'unité FMX.ActnRes.
Recensement des actions dans FireMonkey
Vous pouvez recenser les actions FMX de la même façon que les actions VCL. Par exemple :
procedure Register;
begin
...
{ Standard action registration }
RegisterActions(<nowiki><nowiki>''</nowiki>, [FMX.ActnList.TAction, TControlAction], nil);
RegisterActions(SFileCategory, [TFileExit], TStandardActions);
RegisterActions(SViewCategory, [TViewAction], TStandardActions);
end;
</nowiki>
Unité FMX.ActnList
L'unité FMX.ActnList a le même objectif pour FireMonkey que Vcl.ActnList a pour VCL. L'unité FMX.ActnList contient les classes de base pour la manipulation des actions dans FireMonkey. Toutes les classes similaires ont le même nom dans les unités FMX.ActnList et Vcl.ActnList.
Classe TCustomActionList
La classe TCustomActionList définit une liste d'actions qui n'ont pas de propriétés publiées.
A l'inverse de Vcl.ActnList.TCustomActionList, cette classe ne dispose pas de la propriété ImageList.
A la place de la méthode IsShortCut, elle contient la méthode DialogKey qui gère l'appui sur les touches de clavier. Cette méthode appelle de façon séquentielle les méthodes similaires de toutes les actions de la liste. Si la touche appuyée correspond à un raccourci d'opération, la gestion de cette opération est alors appelée et, si cette gestion est accomplie, elle est alors terminée et True est renvoyé.
Classe TActionList
Cette classe a été conçue pour fournir des associations d'actions à des contrôles. Cette classe est l'ancêtre commun pour toutes les actions dans FireMonkey.
Classe TShortCutList
Elle définit une liste de combinaisons supplémentaires de raccourcis clavier dans FireMonkey. Elle fournit l'implémentation FMX de la classe System.Actions.TCustomShortCutList. La classe TShortCutList hérite du champ en lecture seule publié System.Actions.TCustomShortCutList.ShortCuts -- une liste de raccourcis supplémentaires. Cette classe est similaire à Vcl.ActnList.TShortCutList. La seule différence entre ces classes FMX et VCL est dans l'implémentation de la méthode Add. ShortCutList est créée dans la méthode surchargée FMX.ActnList.TCustomAction.CreateShortCutList.
Classe TCustomAction
Cette classe définit des actions FireMonkey ordinaires sans propriétés publiées. Toutes les autres classes d'action doivent être des descendants de cette classe.
Membres les plus importants de la classe TCustomAction :
Membre | Description |
---|---|
Propriété chaîne, identique à Caption. Vous pouvez utiliser Text et Caption, mais les classes descendantes doivent seulement utiliser la propriété publiée Text, afin que l'inspecteur d'objets ne montre que la propriété Text, comme dans la plupart des composants FireMonkey. | |
Un texte utilisateur. Certaines actions peuvent, par défaut, définir automatiquement la propriété Text. Par exemple, dans l'action standard TFileExit, la propriété Text a la valeur | |
ImageIndex |
Ce membre n'est pas actuellement supporté. Toutefois, il est stocké dans les fichiers fmx/dfm s'il n'est pas égal à |
Méthode virtuelle, qui renvoie True (par défaut) si cette action peut être implémentée sur la plate-forme en cours. | |
Si cette propriété est définie sur True, la fonction IsSupportedInterface est alors utilisée pour récupérer la valeur de la propriété Supported. Dans ce cas, avec le retour de IsSupportedInterface, cette action est toujours inaccessible et invisible. Si la propriété HideIfUnsupportedInterface est définie sur False, cette action peut alors être visible ou invisible, selon les autres propriétés. Une application ou un descendant doit lui-même appeler IsSupportedInterface pour récupérer la visibilité et l'accessibilité de l'action. | |
Architectures non supportées. Peut être défini sur | |
Plates-formes non supportées. Peut être défini sur | |
Supported |
Propriété en lecture seule qui définit que l'action peut travailler sur la plate-forme et l'architecture CPU en cours. La valeur de cette propriété est définie par les propriétés UnsupportedArchitectures et UnsupportedPlatforms et également par la fonction IsSupportedInterface. Si Supported est définie sur False, cette action est alors toujours inaccessible et invisible. |
ShortCutPressed |
Propriété en lecture seule qui définit que le gestionnaire d'actions est appelé en appuyant sur une touche de clavier, pas en cliquant sur un contrôle. |
Target |
Propriété en lecture seule qui définit un composant pour lequel l'action est exécutée. Elle peut être à nil. Quand plusieurs contrôles peuvent être appelés avec un raccourci, Target correspond au premier contrôle correspondant. |
Classe TAction
Action ordinaire dans FireMonkey. Cette classe est utilisée par défaut pour la création de nouvelles actions. La propriété System.Actions.TContainedAction.DisableIfNoHandler est définie sur True pendant la création d'une action, ce qui signifie que l'action est inaccessible si elle n'a pas de gestionnaire d'événement OnExecute.
Unité FMX.Types
Interface IIsChecked
Elle est utilisée par les actions pour accéder à la propriété IsChecked. Tous les objets (TMenuItem, TcheckBox, et d'autres) qui supportent les propriétés de type Checked doivent supporter cette interface.
Interface IGroupName
Elle est utilisée par les actions pour accéder à la propriété GroupIndex, GroupName, et à d'autres propriétés. La propriété GroupName est de type chaîne et elle doit conserver un nombre entier. Sinon, elle est ignorée et traitée comme 0.
Classe TFmxObject
Cette classe a ajouté des méthodes et des propriétés protégées. Les descendants doivent fournir la redéfinition des méthodes virtuelles.
Membres les plus importants de la classe TFmxObject :
Membre | Description |
---|---|
Si la propriété Action est définie, sa valeur est alors mise à jour. Sinon, rien ne se passe. | |
L'action qui est utilisée par un objet. Elle est similaire à Action dans la VCL. | |
Un objet de la classe qui effectue la liaison entre un objet et une action. Cet objet est créé quand une valeur non | |
Méthode virtuelle qui est appelée quand la propriété Action d'un objet est changée. | |
Méthode virtuelle qui doit renvoyer un descendant de TActionLink. Les objets de cette classe sont créés quand une valeur non | |
Propriété en lecture seule. Elle spécifie que l'objet utilise une action. Elle est définie sur True quand Action est non |
Classe TControl
La méthode virtuelle Click est changée. Si la propriété Action est définie, EnableExecuteAction = True
et si le gestionnaire d'événement OnClick n'est pas assigné (ou est égal à Action.OnExecute), l'action assignée est alors exécutée, sinon le gestionnaire d'événement OnClick est exécuté.
- Important ! Les développeurs de composants ne doivent pas appeler explicitement le gestionnaire d'événement OnClick ; ils doivent appeler la méthode Click.
if Assigned(onClick) then OnClick(self); // bad inherited Click; // correct
La propriété EnableExecuteAction définit si le contrôle peut utiliser Action.OnExecute pour les clics de souris. Dans TTextControl, TImageControl, TSwitch et leurs descendants, cette propriété vaut True, tandis que dans les autres elle vaut False.
Classe TCustomControlAction
Action ordinaire, sans propriétés publiées, qui est utilisée par les contrôles. Elle peut disposer de propriétés supplémentaires du jeu de propriétés que les contrôles peuvent avoir. Actuellement, la seule propriété supplémentaire est PopupMenu. A l'inverse de TAction, lors de la création d'une action, la propriété DisableIfNoHandler est définie sur False. Ainsi, l'accessibilité d'une action n'est pas changée si le gestionnaire d'événement OnExecute n'est pas défini.
Classe TControlAction
Cette classe est similaire à TCustomControlAction, mais avec des propriétés publiées. Elle est similaire à Vcl.Controls.TControlAction.
Classe TCustomViewAction
Cette classe n'a pas de propriétés publiées. Elle est utile pour la création de commandes dans le menu Voir. Elle dispose de la propriété supplémentaire Component. Utilisez la méthode ExecuteTarget pour définir la propriété Visible sur True. Si Component n'est pas définie, mais que le gestionnaire d'événement OnCreateComponent est défini, le composant est alors créé.
Si Component est une fiche, un volet ou un autre objet similaire, les valeurs de ses propriétés IsChecked, GroupIndex, Enabled, OnExecute et Visible ne sont alors pas liées à une action. Ainsi, si vous masquez ViewAction, cela n'entraîne pas le masquage automatique de la fiche ou du volet. Le programmeur peut gérer son état dans le gestionnaire d'événement OnUpdate.
ComponentText est une méthode virtuelle qui renvoie le texte correspondant à la propriété Component. Si c'est un descendant de FMX.Forms.TCommonCustomForm, Caption est alors renvoyé. Si c'est un descendant de FMX.Controls.TTextControl, Text est alors renvoyé. Dans les autres cas, Name est renvoyé.
Classe TControlActionLink
La classe TControlActionLink est utilisée par les contrôles pour lier les valeurs des propriétés aux actions d'une manière similaire à la VCL. Les fonctions du genre IsCaptionLinked peuvent être utilisées pour déterminer si une propriété doit être enregistrée dans un fichier .fmx. Si IsCaptionLinked renvoie True, le texte du contrôle est alors le même que dans l'action. Par conséquent, le stockage n'est pas nécessaire.
Unité FMX.Forms
Classe TApplication
Membres les plus importants de la classe TApplication :
Membre | Description |
---|---|
Délai de la mise à jour de toutes les actions, en millisecondes (la valeur par défaut est
Vous pouvez également utiliser la constante ActionUpdateDelayNever. | |
Cette méthode appelle le gestionnaire d'événement OnIdle. Après cela, le champ FIdleDone est défini sur Done. Ensuite, si FIdleDone vaut True, selon la propriété ActionUpdateDelay, les états de toutes les actions sont mis à jour. Le champ de sortie Done peut être défini sur False dans le gestionnaire d'événement, par exemple si l'application est inactive pendant un long moment. |
Classe TCommonCustomForm
Membres les plus importants de la classe TCommonCustomForm :
Membre | Description |
---|---|
Exécute les mises à jour successives des états de toutes les actions d'une fiche. Vous n'avez généralement pas besoin d'appeler manuellement cette méthode, car l'objet Application exécute périodiquement cette méthode pour toutes les fiches. | |
Renvoie TFormActionLink, par défaut. |
Classe TFormActionLink
Les fiches utilisent cette classe pour lier les valeurs des propriétés aux actions. A l'inverse de la classe TControlActionLink, TFormActionLink lie seulement les propriétés Caption et Visible aux actions.
Unité FMX.Menus
Classe TMainMenu
La logique du fonctionnement de cette classe a changé. Sur MacOS, le premier élément visible du menu principal est toujours accessible, et il a le même texte que le titre de l'application. C'est en fait l'élément menu système. Si aucun élément de menu visible n'existe, l'élément menu système est quand même créé et il contient l'unique sous-élément Quit <Application>. (Dans l'image, c'est Quit DemoView ^Q.) Avec UnsupportedPlatforms, vous pouvez gérer la visibilité des éléments de menu pour différentes plates-formes.
Unité FMX.StdActns
Cette unité contient les actions standard.
Classe TFileExit
Gère la fermeture des applications.
Membres les plus importants de la classe TFileExit :
Membre | Description |
---|---|
Une valeur de cette propriété est définie automatiquement. Cette propriété n'est pas présentée dans l'inspecteur d'objets. La valeur peut être | |
Si la valeur de cette propriété est définie, elle est alors utilisée en tant que Text de l'action. | |
Le gestionnaire de cet événement peut être utilisé pour la confirmation que l'utilisateur souhaite réellement fermer une application. Vous pouvez analyser la valeur de la propriété ShortCutPressed pour définir si l'événement est activé en appuyant sur une touche du clavier ou en cliquant avec la souris. |
Classe TViewAction
Cette classe est similaire à TCustomViewAction, mais avec des propriétés publiées.
Membres les plus importants de la classe TViewAction :
Membre | Description |
---|---|
Cette propriété pointe sur un objet, qui exécute une action et dont l'image devient visible lors de l'exécution de l'action. | |
Seul un objet de type TFmxObject peut être créé dans le gestionnaire de cet événement. Si le composant créé n'est pas un descendant de TFmxObject, une exception est alors déclenchée et un nouvel objet est détruit. |
Classe TCustomValueRangeAction
C'est la classe de base pour les actions (sans propriétés publiées) qui peuvent être utilisées par des contrôles ayant la propriété Value-type, par exemple : TProgressBar, TCustomTrack, TCustomEditBox.
La propriété ValueRange conserve les informations sur les étendues permises des valeurs à virgule flottante. Voir la classe FMX.StdActns.TCustomValueRange.
Interface IValueRange
Chaque contrôle qui utilise la classe TCustomValueRangeAction doit supporter cette interface. IValueRange est utilisée par une action pour accéder à la propriété ValueRange.
Classe TBaseValueRange
Cette classe associe un nombre à virgule flottante Value à ses étendues. Cette classe conserve seulement les données, elle ne vérifie pas si une valeur stockée est acceptable.
Membres les plus importants de la classe TBaseValueRange :
Membre | Description |
---|---|
Valeur acceptable minimale. | |
Valeur acceptable maximale. | |
Un paramètre à virgule flottante changeable. | |
Utilisé par des contrôles tels que TScrollBar pour définir la taille de la barre de défilement. Notez que la valeur maximale effective de Value diminue selon | |
Le pas des variations de Value possibles. Value peut être un multiple de Frequency, Min ou Max. Par exemple, si Min = 0.1 Max = 2.1 ViewportSize = 0 Frequency = 1 alors Value peut prendre la valeur : 0.1 1 2 2.1 Il ne peut pas être Value = 1.1 | |
Vérifie si les valeurs de toutes les propriétés de l'objet | |
Vérifie si les valeurs de toutes les propriétés de l'objet en cours sont proches des valeurs des propriétés correspondantes de l'objet |
Classe TCustomValueRange
TCustomValueRange est le descendant de TBaseValueRange. Il ne stocke pas seulement Value, mais il fournit également des fonctionnalités pour contrôler la justesse de Value. Par exemple, si vous définissez la valeur Max
afin que Value > Max
, Value
est alors changé en Value = Max
.
Membres les plus importants de la classe TCustomValueRange :
Membre | Description |
---|---|
Renvoie True, si toutes les propriétés (Min, Max, Value, et ainsi de suite) ont les valeurs par défaut. | |
Assigne les valeurs par défaut à toutes les propriétés (Min, Max, Value, et ainsi de suite). | |
Si | |
Spécifie que des propriétés ont été changées, mais que les valeurs ne sont toujours pas recalculées. | |
Cette méthode est appelée immédiatement après que la valeur d'une propriété a été changée. Elle recalcule les valeurs, déclenche les événements appropriés (le cas échéant), et définit IsChanged sur False. Si le composant Owner d'une action est en cours de chargement ou si | |
Représente la propriété de type TBaseValueRange qui conserve les nouvelles valeurs des propriétés déclarées dans la classe TBaseValueRange (Max, Min, Value, Frequency et ViewportSize). Elle peut être utilisée dans le gestionnaire d'événement BeforeChange. | |
Cette propriété est calculée relativement à RelativeValue = (Value-Min)/(Max-Min-ViewportSize) Elle peut être comprise entre 0 et 1, et être utilisée pour le positionnement d'une barre de défilement dans un contrôle. | |
Le composant propriétaire de cette instance de classe. | |
Début de la mise à jour. | |
Fin de la mise à jour. | |
Compteur spécifiant le nombre de fois que les changements de mise à jour ont démarré. Si | |
Cette propriété identifie qu'un objet de type TCustomValueRange est dans l'état de recalcul des valeurs. | |
Cet événement est déclenché avant que les nouvelles valeurs des paramètres ne deviennent effectives. Par exemple, | |
Cet événement est déclenché après qu'une valeur d'un paramètre ait changé, indépendamment de la valeur de | |
Cet événement est déclenché après qu'une valeur d'un paramètre ait changé, mais seulement quand | |
Cet événement est déclenché après qu'une valeur du paramètre | |
Ces méthodes virtuelles déclenchent les événements correspondants. Si vous créez des classes descendantes, vous pouvez alors redéfinir ces méthodes au lieu d'assigner les gestionnaires d'événement correspondants. | |
MaxStored |
Ces fonctions virtuelles renvoient True si la valeur de la propriété correspondante diffère de la valeur par défaut. |
Classe TValueRange
Cette classe est similaire à TCustomValueRange, mais avec des propriétés publiées.
Voir aussi
- Les fonctionnalités des actions indépendantes du framework sont implémentées dans la RTL
- Support de la gestion des actions dans l'EDI
- Changements dans l'implémentation des actions VCL
- Utilisation des listes d'actions
- Que se passe-t-il lors du déclenchement d'une action ?
- Comment les actions trouvent leurs cibles
- Arrangement des contrôles FireMonkey
- Utilisation des menus dans une application FireMonkey