Certains développeurs pensent que les actions automatiques sont pour les débutants. Cependant, ils ont peut-être manqué beaucoup de potentiel que nous avons ajouté ces dernières années. Les actions standard, telles que First Record ou color?value=redpeuvent être assignées à un bouton dans l’interface utilisateur ou par programmation. L’action peut être affectée à un élément de menu, à un menu contextuel ou invoquée avec une commande. L’avantage est que 4D gère aussi automatiquement la désactivation de l’élément de menu ou du bouton lorsque l’action n’est pas applicable (par exemple, s’il n’y a pas d’enregistrement suivant).
Et à partir de 4D v16 R3, la liste des actions standard s’allonge : plus de 100 nouvelles actions standard ont été ajoutées pour 4D Write Pro et Styled Text, permettant de construire par exemple une barre d’outils sans écrire une ligne de code !
En résumé, vous pouvez utiliser les actions standard de 3 manières différentes :
- Associer une action standard à un objet : en phase de conception (en utilisant la liste des propriétés) ou par programmation.
- Associer une action standard à un élément de menu : en phase de conception (en utilisant la boîte à outils) ou par programmation.
- Utilisez les nouvelles commandes INVOKE ACTION et Get action info commandes
Associer une action standard à un objet
En phase de conception
La liste de propriétés permet d’associer une action standard à un objet du formulaire actif. Dans cet exemple, l’action standard Supprimer un enregistrement est associée à un bouton.
Pour plus de détails, veuillez vous référer à cet article de la documentation.
Par programmation
Pendant l’exécution de l’application, vous pouvez associer dynamiquement pour le processus en cours une action standard à un objet par programmation. Ainsi, vous écrasez l’action standard définie par la liste de propriétés.
Par exemple, vous souhaitez associer l’action standard Delete Record à un bouton « btnDelete » :
OBJECT SET ACTION(* ; "btnDelete" ;ak delete record)
ou si vous utilisez la valeur au lieu de la constante :
OBJECT SET ACTION(* ; "btnDelete" ; "deleteRecord")
Et si vous utilisez la valeur au lieu de la constante, vous pouvez également passer un paramètre avec l’action. Dans cet exemple, vous appliquez la couleur magenta à un texte sélectionné.
OBJECT SET ACTION(* ; "btnDelete" ; "color?value=magenta")
Pour plus de détails, veuillez vous reporter à la documentation de ces commandes :
Associer une action standard à un élément de menu
En phase de conception
Vous pouvez associer une action standard à un élément de menu à l’aide de l’éditeur de menu. Par exemple, pour ajouter un élément de menu permettant d’ouvrir le Centre de maintenance et de sécurité 4D, il suffit de sélectionner l’action msc comme action standard associée dans le menu contextuel :
Lorsque vous exécutez votre application, le menu s’affiche :
Vous pouvez créer un sous-menu avec une action standard. Par exemple, pour ajouter un sous-menu permettant d’appliquer un style de police (comme Gras, Italique…), sélectionnez simplement l’action fontStyle comme action standard associée dans le menu contextuel :
Lorsque vous exécutez votre application, le menu s’affiche :
Pour plus de détails, veuillez vous référer à cet article de la documentation.
Par programmation
Vous pouvez également passer une action standard à la commande SET MENU ITEM PROPERTY . Depuis 4D v16 R3, si vous passez la constante ak standard action title à la place d’un nom de titre à la commande APPEND MENU ITEM; 4D utilise le nom de l’action localisée.
Par exemple, dans un menu contextuel, pour ajouter un élément de menu permettant d’aller au premier, dernier ou prochain enregistrement, vous écrivez le code suivant :
- Dans la méthode Form :
Case of
: (Form event=On Load) := ( ; ) ( ;-1 ; ; ) ( ; ) ( ;-1 ; ; ) ( ; ) ( ;-1 ; ; ) : ( = ) ( )
// create menu
menuCreate menu
//insert first record menu item
APPEND MENU ITEMmenuak standard action title
SET MENU ITEM PROPERTYmenuAssociated standard actionak first record
//insert last record menu item
APPEND MENU ITEMmenuak standard action title
SET MENU ITEM PROPERTYmenuAssociated standard actionak last record
//insert next record menu item
APPEND MENU ITEMmenuak standard action title
SET MENU ITEM PROPERTYmenuAssociated standard actionak next record
Form eventOn Unload
// release menu
RELEASE MENUmenu
End case
- Dans la méthode du bouton qui affiche le menu contextuel :
$val:=Dynamic pop up menu(menu)
Ensuite, lorsque vous exécutez votre application dans une autre langue, le menu s’affiche :
Pour plus de détails, veuillez vous référer à la documentation de ces commandes :
- GET MENU ITEM PROPERTY command
- SET MENU ITEM PROPERTY command
- Commande APPEND MENU ITEM
- Commande INSERT MENU ITEM
INVOKE ACTION commande
La commande INVOKE ACTION ajoutée dans 4D v16 R3, déclenche l’action standard définie par le paramètre action, optionnellement dans le paramètre target contexte. Pour savoir si l’action standard est applicable et valide dans le contexte actuel, vous pouvez utiliser la nouvelle commande Get action info commande.
La syntaxe est la suivante :
Par exemple, pour changer l’ouverture du MSC, vous pouvez écrire :
C_OBJECT($actionInfo)
// Check if this standard action is available and valid in this current context
$actionInfo :=Get action info(ak paste;ak current form)
If (OB Get($actionInfo; "enabled"))
// This standard action is enabled
INVOKE ACTION (ak paste;ak current form)
Else
ALERT ("Cette action est impossible. Le presse-papiers est vide.")
End if
Pour plus de détails, veuillez lire la documentation relative à ces commandes :