Les fonctionnalités des actions implémentées dans FireMonkey

De Appmethod Topics
Aller à : navigation, rechercher

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).

Boîte de dialogue Classes d'actions standard

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

Text

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.

CustomText

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 Quit <Application.Title>. Toutefois, si vous voulez définir une valeur différente, vous devez définir une valeur pour la propriété CustomText.

ImageIndex

Ce membre n'est pas actuellement supporté. Toutefois, il est stocké dans les fichiers fmx/dfm s'il n'est pas égal à -1. L'inspecteur d'objets ne présente pas cette propriété. En revanche, il peut obtenir sa valeur quand une action est copiée depuis la VCL.

IsSupportedInterface

Méthode virtuelle, qui renvoie True (par défaut) si cette action peut être implémentée sur la plate-forme en cours.

HideIfUnsupportedInterface

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.

UnsupportedArchitectures

Architectures non supportées. Peut être défini sur arIntelX86 et arIntelX64.

UnsupportedPlatforms

Plates-formes non supportées. Peut être défini sur pfWindows et pfMacOS.

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

InitiateAction

Si la propriété Action est définie, sa valeur est alors mise à jour. Sinon, rien ne se passe.

Action

L'action qui est utilisée par un objet. Elle est similaire à Action dans la VCL.

ActionLink

Un objet de la classe qui effectue la liaison entre un objet et une action. Cet objet est créé quand une valeur non nil est assignée à Action, et est détruit quand nil est assigné.

ActionChange

Méthode virtuelle qui est appelée quand la propriété Action d'un objet est changée.

GetActionLinkClass

Méthode virtuelle qui doit renvoyer un descendant de TActionLink. Les objets de cette classe sont créés quand une valeur non nil est assignée à Action. Si GetActionLinkClass renvoie nil, une exception est déclenchée.

ActionClient

Propriété en lecture seule. Elle spécifie que l'objet utilise une action. Elle est définie sur True quand Action est non nil, False sinon. Cette propriété peut être utilisée pour une vérification rapide de l'existence d'une action.


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

ActionUpdateDelay

Délai de la mise à jour de toutes les actions, en millisecondes (la valeur par défaut est 100) :

  • Si ActionUpdateDelay > 0, la mise à jour est alors gérée par le temporisateur.
  • Si ActionUpdateDelay = 0, la mise à jour s'exécute alors directement dans DoIdle.
  • Si ActionUpdateDelay < 0, aucune mise à jour n'est alors exécutée.

Vous pouvez également utiliser la constante ActionUpdateDelayNever.

DoIdle

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

UpdateActions

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.

GetActionLinkClass

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.

FMX_TMainMenu


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

Text

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 Quit <Application.Title> si CustomText=", ou sinon le texte <CustomText> stocké dans la propriété CustomText.

CustomText

Si la valeur de cette propriété est définie, elle est alors utilisée en tant que Text de l'action.

OnCanActionExec

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

FmxObject

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.

OnCreateComponent

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

Min

Valeur acceptable minimale.

Max

Valeur acceptable maximale.

Value

Un paramètre à virgule flottante changeable.

ViewportSize

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 Max - ViewportSize.

Frequency

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

Equals

Vérifie si les valeurs de toutes les propriétés de l'objet Obj en cours sont exactement égales aux valeurs des propriétés correspondantes de l'objet spécifié. La fonction renvoie True si les valeurs de toutes les propriétés de l'objet en cours sont égales aux valeurs des propriétés correspondantes de Obj.

Same

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 Obj spécifié. Cette fonction est similaire à Equals, mais elle utilise la fonction SameValue pour comparer les valeurs. Ainsi, si la différence entre les valeurs est inférieure à l'erreur d'arrondi possible, la fonction SameValue estime alors les valeurs comme étant égales et Same renvoie True.


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

IsEmpty

Renvoie True, si toutes les propriétés (Min, Max, Value, et ainsi de suite) ont les valeurs par défaut.

Clear

Assigne les valeurs par défaut à toutes les propriétés (Min, Max, Value, et ainsi de suite).

Tracking

Si Tracking = True, les événements BeforeChange et AfterChange] sont alors déclenchés sur chaque changement de propriété. Si Tracking = False, les événements BeforeChange et AfterChange ne sont alors pas déclenchés.

IsChanged

Spécifie que des propriétés ont été changées, mais que les valeurs ne sont toujours pas recalculées.

Changed

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 UpdateCount > 0, aucune activité n'est alors produite et IsChanged est définie sur True. Quand le chargement est terminé, le contrôle doit vérifier la valeur de la propriété IsChanged et appeler la méthode Changed (le cas échéant).

New

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.

RelativeValue

Cette propriété est calculée relativement à Value, selon l'expression suivante

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.

Owner

Le composant propriétaire de cette instance de classe.

BeginUpdate

Début de la mise à jour.

EndUpdate

Fin de la mise à jour.

UpdateCount

Compteur spécifiant le nombre de fois que les changements de mise à jour ont démarré. Si UpdateCount > 0, aucun changement de mise à jour ne sera alors réellement implémenté tant que la méthode EndUpdate qui définit UpdateCount = 0 n'a pas été appelée. Toutes les propriétés Max, Min, Value, Frequency et ViewportSize auront des anciennes valeurs. Pour définir les nouvelles valeurs sur ces propriétés, utilisez la propriété New.

Changing

Cette propriété identifie qu'un objet de type TCustomValueRange est dans l'état de recalcul des valeurs.

BeforeChange

Cet événement est déclenché avant que les nouvelles valeurs des paramètres ne deviennent effectives. Par exemple, Min contient toujours une ancienne valeur, alors que la nouvelle valeur est seulement dans le paramètre New.Min. L'événement BeforeChange est déclenché si Tracking = True.

OnChanged

Cet événement est déclenché après qu'une valeur d'un paramètre ait changé, indépendamment de la valeur de Tracking.

AfterChange

Cet événement est déclenché après qu'une valeur d'un paramètre ait changé, mais seulement quand Tracking = True.

OnTrackingChange

Cet événement est déclenché après qu'une valeur du paramètre Tracking ait changé, indépendamment de UpdateCount.

DoBeforeChange
DoChanged
DoAfterChange
DoTrackingChange

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
MinStored
ValueStored
FrequencyStored
ViewportSizeStored

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

Exemples d'application