AppelerObjet
Instruction
Rôle : |
Appel en sous-programmed'un objet en mettant en suspens l'objet (et bien sûr la méthode) en cours qui se poursuivra ultérieurement. |
Syntaxe : |
AppelerObjet [[dll.]domaine.] objet [ (paramètre1 [, paramètre2, ... ] )] |
Notes : |
objet est l'objet que l'on veut appeler. C'est une expression alphanumérique qui peut être une variable qui sera évaluée et dont le contenu est le code de l'objet ou bien directement le code de l'objet.
L'objet peut être indiqué sous l'une de ces formes :
objet |
L'objet est dans la même source. |
domaine.objet |
L'objet n'est pas dans le même domaine. On doit alors préciser ce domaine. |
dll.domaine.objet |
L'objet n'est pas dans la même DLL. On doit préciser DLL et domaine. |
Attention, il ne faut pas appeler un objet de façon asynchrone (CreerObjet, CreerUnique ou ChainerObjet) depuis un objet lancé en synchrone (AppelerObjet). Bien que cela soit possible, c’est une règle d’architecture à respecter.
Exemple :
Chaine
Obj1("Objet") = "O1"
Chaine Dom1("Domaine") = "D1"
Chaine Dll1("Librairie") = "L1"
AppelerObjet O1
AppelerObjet Obj1
Appel de l'objet O1.
AppelerObjet D1.O1
AppelerObjet Dom1.Obj1
Appel de l'objet O1 qui se trouve dans le domaine D1.
AppelerObjet L1.D1.O1
AppelerObjet Dll1.Dom1.Obj1
Appel de l'objet O1 du domaine D1 et de la DLL L1.
Les paramètres sont facultatifs. S'ils sont indiqués, l'objet appelé doit avoir une déclaration PARAMETRES définissant les variables formelles associées.Ils sont passés par référence ou par valeur en fonction de la déclaration PARAMETRES.
Au retour, les modifications éventuelles des paramètres seront retransmises s'ils sont passés par référence.
L'objet en cours n'est pas arrêté définitivement, il est simplement suspendu. L'objet appelé pourra lui-même appeler, chaîner ou créer d'autres objets. Lorsque l'objet appelé (ou l'un de la chaîne en cas de chaînage) sera terminé, l'objet appelant reprendra son exécution. |
La fenêtre de l'objet initial n'est pas effacée lorsqu'un objet appelé est activé. Si le nouvel objet possède une déclaration ECRAN, sa fenêtre se superposera à la fenêtre de l'objet appelant. Il apparaîtra sous Windows comme une fenêtre de dialogue.
L'instruction AppelerObjet a été principalement conçue pour simplifier la programmation et la maintenance : elle permet d'éviter complètement la programmation multiple de toutes les fonctions annexes à l'objet lui-même : consultation ou modification de tables secondaires, calculs, modification de paramètres généraux, ... L'instruction CreerObjet a également été conçue en ce sens.
L'objet appelé dispose d'un contexte différent de celui de l'objet appelant et dans une large mesure, son fonctionnement n'affectera pas l'objet appelant :
• Les écrans sont complètement isolés. Même si l'objet appelé utilise le même écran, il est rechargé sous sa forme initiale ;
• Les contextes des différentes tables de l'objet appelant sont protégés : on retrouvera au retour les enregistrements en cours et les filtres éventuellement choisis ;
• En réseau, on peut réserver un enregistrement par table et par niveau. Un enregistrement réservé dans l'objet appelant est alors inaccessible dans l'objet appelé : attention aux embrasses mortelles (deadlock). Se reporter à l'instruction Reserver pour plus d'informations sur les réservations ;
En revanche, les éléments suivants sont partagés entre l'objet appelant et l'objet appelé :
• Les champs ou variables de l'objet appelant qui ont été passés en paramètre.
• Les fichiers globaux utilisés sont hérités si les deux objets sont dans le même domaine.
• Les variables globales sont communes si les deux objets sont dans le même DOMAINE.
Une sortie de l'objet appelé (Sortir) provoque le retour à l'objet appelant qui poursuit son déroulement en séquence (à l'instruction suivant l'instruction AppelerObjet). |
|
Exemple :
Domaine : ESSAI "Appel d' objet"
Objet SAISIE : APPOBJ
Declaration
ECRAN :
ECR1
FinDeclaration
Methode
DEBUT
Commande
1,"Edition représentants"
FinMethode
Methode
COMMANDE 1
AppelerObjet "DOMED-EDITREPR"
FinMethode
FinObjet
Domaine : DOMED
Objet EDITION : EDITREPR "Edition des représentants"
Declaration
TABLE :
REPR
FinDeclaration
FinObjet