Le modèle d'objet EDITION_ETAT

EDITION_ETAT complète le modèle IMPETAT par des automatismes composants qui prennent en charge la lecture des informations des composants en lien.

Rappelons que le modèle d'objet IMPETAT permet d'imprimer les états conçus avec le générateur d'états d' Oxygène++. Il dispose de fonctionnalités puissantes de tri, de filtre, de mise en page et d'aperçu à l'écran qui sont traitées de façon transparente pour le programmeur.

Fonctionnement du modèle

Au démarrage de l'objet, le système analyse le contenu de l'état pour déterminer les composants qui sont en relation. Cette analyse est très sophistiquée, puisqu'elle ne se limite pas à la table principale imprimée. Elle est capable de détecter un composant en relation avec une table secondaire ce qui est très fréquent, en particulier avec les contrôles de type "Liste".

La détection d'une relation est basée sur le respect des conventions de nom donnés aux clés étrangères et de la présence des champs de la forme I_<code composant>.<code champ>. Suivant la localisation des champs de ce type, les appels aux composants en lien se font dans les méthodes adéquates et avec les clés étrangères prises dans les tables ad hoc (parcours principal ou table de liste).

Par exemple, si un composant est détecté dans la définition du tri associé à une liste, il est appelé dans l'événement CTRL_SELECTION pour lequel CtrlCode est le code de la liste. S'il est détecté dans le corps de la liste, il est appelé dans les événements CTRL_PAGINATION et CTRL_DEBUT_FICHE pour cette liste. S'il est détecté dans le pied de la liste, il est appelé dans l'événement CTRL_DEBUT_FICHE du parcours principal. S'il est détecté dans le pied d'une liste qui se trouve elle-même dans le corps d'une liste, il est appelé dans les événements CTRL_PAGINATION et CTRL_DEBUT_FICHE pour la  liste englobante.

Les déclarations et méthodes standards

Les déclarations et méthodes héritées du modèle IMPETAT n'ont pas évolué. Notez ici que l'appel à l'implémentation par défaut des méthodes (par l'instruction AppliquerDefaut) n'est pas nécessaire puisque les automatismes sont directement pris en charge par les méthodes génériques.