Exercice : créer une interface
Dans cet exercice, vous êtes un développeur travaillant pour CRONUS International Ltd. Vous souhaitez créer et implémenter une interface nommée IAddressProvider, qui a une méthode getAddress avec une certaine signature.
Tâches
Créer une interface
Créer deux codeunits implémentant l’interface
Créer une page avec une action testant l’interface
Créer une enum pour prendre en charge l’initialisation de l’interface
Étapes
Pour effectuer cet exercice, procédez comme suit :
Créez un fichier .al avec le code suivant qui définit une interface IAddressProvider ayant une méthode getAddress avec une certaine signature :
interface IAddressProvider { procedure GetAddress(): Text; }Créez deux fichiers .al pour créer deux codeunits : CompanyAddressProvider et PrivateAddressProvider. Les deux codeunits vont implémenter l’interface IAddressProvider, et chacun va définir une implémentation différente de la méthode getAddress ; dans ce cas, il s’agit d’une simple variation de valeur d’adresse :
codeunit 65100 CompanyAddressProvider implements IAddressProvider { procedure GetAddress(): Text; begin exit('Company address \ Denmark 2800') end; }codeunit 65101 PrivateAddressProvider implements IAddressProvider { procedure GetAddress(): Text; begin exit('My Home address \ Denmark 2800') end; }Créez un fichier .al pour créer une page avec une action capturant le choix de l’adresse et appelant, sur la base de ce choix, une implémentation de l’interface IAddressProvider :
page 65100 MyAddress { PageType = Card; ApplicationArea = All; UsageCategory = Administration; layout { area(Content) { group(GroupName) { } } } actions { area(Processing) { action(WhatsTheAddress) { ApplicationArea = All; Caption = 'What's the Address?'; ToolTip = 'Select the address.'; Image = Addresses; trigger OnAction() var iAddressProvider: Interface IAddressProvider; begin AddressproviderFactory(iAddressProvider); Message(iAddressProvider.GetAddress()); end; } action(SendToHome) { ApplicationArea = All; Image = Home; Caption = 'Send to Home.'; ToolTip = 'Set the interface implementation to Home.'; trigger OnAction() begin sendTo := sendTo::Private end; } action(SendToWork) { Image = WorkCenter; Caption = 'Send to Work.'; ToolTip = 'Set the interface implementation to Work.'; ApplicationArea = All; trigger OnAction() begin sendTo := sendTo::Company end; } } } local procedure AddressproviderFactory(var iAddressProvider: Interface IAddressProvider) var CompanyAddressProvider: Codeunit CompanyAddressProvider; PrivateAddressProvider: Codeunit PrivateAddressProvider; begin if sendTo = sendTo::Company then iAddressProvider := CompanyAddressProvider; if sendTo = sendTo::Private then iAddressProvider := PrivateAddressProvider; end; var sendTo: enum SendTo; }Créez un fichier .al pour créer une enum contenant deux valeurs : Company et Private.
enum 65100 SendTo { Extensible = true; value(0; Company) { } value(1; Private) { } }Publiez votre extension, puis ouvrez la page MyAddress.
Sélectionnez l’action Envoyer au domicile.
Sélectionnez l’action Quelle est l’adresse, puis vérifiez que le résultat ressemble à la capture d’écran suivante :
Sélectionnez l’action Envoyer au travail.
Sélectionnez l’action Quelle est l’adresse, puis vérifiez que le résultat ressemble à la capture d’écran suivante :


