Impression et affichage des adresses : mise en œuvre
Le code Diva recopie les données de l'adresse dans un fichier RTF après mise en forme, puis le bloc RTF du masque fait l'affichage ou l'impression.
Enregistrement MW public
L'affichage ou l'impression du bloc RTF passe par la déclaration commune (entre le DHSP et le DHSF ou DHSI) d'un enregistrement PUBLIC pour stocker le nom du fichier RTF. On utilisera une instance l'enregistrement MW du A5DD.dhsd.
On peut utiliser un enregistrement MW existant (pour lequel il y a encore un champ disponible puisqu'il s'agit d'un tableau de 8 noms de champ RTFNOM) ou en déclarer un dédié à l'adresse.
Exemple : déclaration d'un record dédié, on utilise l'indice 1
Public Record A5DD.dhsd MW ADR_MW ; Enreg temporaire MW pour l'affichage des adresses ADR_MW.RtfNom(1)
Exemple : utilisation de l'indice disponible, 8 par exemple
CLI_MW.RtfNom(8)
Enregistrement A5ADR local
L'adresse que l'on veut imprimer est déjà disponible dans l'un des enregistrements en cours de travail dans le sur-champ ADR (exemple dans le CLIENT ou le TIERS). Pour compléter par des libellés (notamment le libellé du pays) mais aussi pour 'vider' des données qu'on ne souhaite pas afficher, on passe par une instance d'enregistrement tampon local
Record A5DD.dhsd A5ADR L_A5adr ; Structure adresse temporaire pour transfert adresse
Cette instance doit donc être garnie avec les données adresse à afficher
L_A5adr.Adr = MonEntite.Adr
Que l'on pourra compléter avec les libellés de région/pays via une recherche directe ou par des jointures sur l'entité
Define Declaration_Region = RecordSql 'GTRSTAB.dhoq' Region
Define Declaration_Pays = RecordSql 'GTRSPPTAB.dhoq' Pays
Declaration_Pays
Declaration_Region
L_A5adr.LibPays = Condition(Lectab_(Pays, L_A5adr.Pay) = 0, Pays.lib, ' ')
L_A5adr.LibRegion = Condition(Lectab_(Region, L_A5adr.Pay, L_A5adr.RegionCod) = 0, Region.Lib, ' ')
Chargement du RTF
L’adresse doit être transmise à la fonction commune de haut niveau pour mise en forme (police, couleur, taille) et positionnement (ligne, colonne) juste avant l’affichage ou l’impression.
Cette fonction de haut niveau se trouve dans le module A5PM000.dhop (A5_Charger_RtfAdresse_Affichage, nécessite le code application en paramètre), mais est reprise par exemple dans le module d’application GTPM000.dhop (Charger_RtfAdresse_Affichage). On utilisera donc celle dédiée au module si elle est disponible.
Charger_RtfAdresse_Affichage pour le un rtf destiné à un masque écran
• Charger_RtfAdresse_Impression pour le un rtf destiné à un masque impression
• A5_Charger_RtfAdresse_Affichage ou A5_ Charger_RtfAdresse_Impression si la fonction n’est pas disponible
On utilise donc l’instance d’enregistrement locale pour compléter les données de l’entité adresse, puis on le passe à la fonction de haut niveau qui retourne le nom du fichier RTF, que l’on stocke dans l’instance d’enregistrement PUBLIC utilisée dans le masque.
Exemple : zoom client complète des libellés, et ré-utilise l’enregistrement public CLI_MW en indice 8
L_A5adr.Adr = CLIENT.Adr
L_A5adr.LibRegion = CLIENT.LibelleRegion
L_A5adr.LibPays = CLIENT.LibellePays
CLI_MW.Rtfnom(8) = Charger_RtfAdresse_Affichage('CLI_ADR', L_A5adr)
Affichage ou impression
Affichage des adresses : pour saisie
Le point d'arrêt avant traitement préconisé est 10700 (d'autres points d'arrêts pourront être utilisés si nécessaire). La gestion de ce point d'arrêt dans le code du programme/zoom permettra de lancer la fenêtre de saisie des éléments de l'adresse.
La propriété de l'objet RTF dans XWin Entrée en saisie au clavier devra être positionnée à Oui si l'on veut trapper la tabulation pour entrer en saisie des éléments de l'adresse après avoir saisi le titre comme le montre l'exemple ci-dessous.
Quelques remarques : • si plusieurs champs RTF sont utilisés dans un même programme, pour ne pas répliquer du code inutilement, on pourra utiliser Harmony.Dataind1 pour différencier ces champs RTF. Cependant, ce champ sera écrasé lors de la saisie des éléments de l'adresse ; il faudra donc penser à bien sauvegarder sa valeur avant l'entrée en saisie et la restaurer après.
Affichage des adresses : pour consultation
Le masque d'écran doit comporter un « bloc texte riche » qui fait référence à l'enregistrement public, et à l'indice utilisé dans le code diva. Attention à bien indiquer l'indice du tableau utilisé.
Le style donné au bloc RTF est inutile. C'est le format indiqué à l'appel de la fonction qui fait foi pour le texte, mais on donnera la valeur STD pour obtenir un rendu AVEC cadre et RTF_NOTE pour un rendu SANS cadre.
Exemple affichage :
Note : pour éviter l'affichage de la scrollbar à l'affichage, il faut modifier la LARGUEUR de l'objet dans le masque écran, et changer de page Xwin pour vérifier qu'elle a bien disparu.
Impression des adresses
Le masque d'impression doit comporter un « bloc texte riche » qui fait référence à l'enregistrement public, et à l'indice utilisé dans le code diva. Attention à bien indiquer l'indice du tableau utilisé. Le style donné au bloc RTF est inutile. C'est le format indiqué à l'appel de la fonction qui fait foi pour le texte, mais on donnera la valeur STD.
Exemple impression :
Note : pour éviter l'affichage de la scrollbar à l'affichage, il faut modifier la LARGUEUR de l'objet dans le masque écran, et changer de page pour vérifier.
Affichage des adresses : utilisation
Attention, pour utiliser l'affichage des adresses dans un champ RTF, il ne faudra pas oublier d'initialiser les notes par un A5_RtfAdresse_Debut pour charger le masque de saisie et ainsi éviter d'avoir une erreur de mauvaise page courante ultérieure.