Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

Le guide Oracle Forms 9i/10g


précédentsommairesuivant

XV. Les classes de propriétés

XV-A. Définition

Une classe de propriétés est un conteneur permettant de regrouper plusieurs propriétés communes à un objet.

Si l'attribut visuel ne regroupe que les propriétés relatives à l'aspect visuel (polices, couleurs), la classe de propriétés permet de grouper n'importe quelle propriété applicable à un objet.

De surcroît, elle permet également d'implémenter les méthodes associées à ces objets (déclencheurs).

La classe de propriétés permet d'utiliser toute la puissance de l'héritage, dans une optique « réutilisation » et respect de la charte graphique.

Une classe de propriétés peut être créée au niveau de chaque module, mais peut également être dérivée, par copie ou par référence d'un autre module, ou encore mieux, d'une librairie d'objets.

XV-B. Concept

La classe de propriétés permet de définir autant de groupes de propriétés nécessaires à la constitution de l'ensemble des objets de la forme.

A la faveur de l'héritage, une classe peut hériter des propriétés d'une autre classe, permettant de construire, à partir de briques de base les objets les plus complexes.

Ces classes peuvent être stockées dans une forme, dans un groupe d'objets de la forme ou dans une librairie d'objets.

Lorsque l'ensemble des classes est défini, le développeur n'a plus à ajuster une à une les diverses propriétés de ses objets, mais simplement leur appliquer la classe correspondante.

Par exemple, le dossier de spécifications indique qu'un item affichant une date aura les caractéristiques suivantes:

  • Type : DATE
  • Largeur : 60
  • Hauteur : 24
  • Format : DD/MM/YYYY
  • Alignement : Centré

Afin de s'assurer que l'ensemble des développeurs respecteront cette spécification, une classe de propriétés regroupant ces caractéristiques sera créé et devra être systématiquement appliqué à chaque item de chaque forme devant afficher une date.

Il devient alors facile d'appliquer les règles de spécifications :

Item caractère : aligné à gauche
Item numérique : aligné à droite
Item date : aligné au centre
Bouton : 100*20, fond bleu clair, libellé bleu foncé, etc.
Taille de la fenêtre : xxx * yyy
Couleur du canevas principal
Couleur des pages onglet



Il n'y a pas de limite au nombre de classes de propriétés pouvant être créées dans un module.

XV-C. Mise en œuvre

Création d'une classe de propriété

Nous allons créer une classe qui sera la base de tous les items.

Cliquer sur le nœud : Classe de propriété dans le navigateur d'objets puis Image non disponible.
Une nouvelle classe est créée avec un nom attribué par le système.

Faire un double-clic sur le nœud de la nouvelle classe pour afficher la palette de propriétés (ou F4).

Image non disponible

Renommons la classe en : ITEM et ajoutons les propriétés nécessaires

Cliquez sur l'icône Image non disponible pour ajouter une propriété

Image non disponible

Sélectionnez la propriété : Activé dans la liste et cliquez le bouton OK.

Adaptez la valeur de la nouvelle propriété : Oui

Répétez l'opération autant de fois que nécessaire afin de spécifier les propriétés communes à tous les item saisissables:

Image non disponible

Nous avons également besoin d'une classe de propriétés pour les item affichés (non saisissables).
Celle-ci ne diffère que sur 2 propriétés :

Le type d'élément est : Elément affiché La couleur de fond est : Gris

Créons une nouvelle classe que nous nommerons DISPLAY_ITEM

La propriété : Information de référence permet, par héritage, de récupérer les valeurs saisies dans un autre objet existant.

Sélectionnons l'objet : ITEM

Notre nouvelle classe vient d'hériter de toutes les propriétés de la classe : ITEM

Ajoutons la propriété : Type d 'élément pour la valoriser à : Elément affiché
Modifions la propriété : Couleur d'arrière plan pour indiquer : Gray15

Pour les items qui seront affichés dans les blocs multienregistrements, nous devons passer le prompt en haut de l'item.

Créons une nouvelle classe que nous nommerons ITEM_MR que nous dérivons de la classe : ITEM.

Ajoutons à cette nouvelle classe les propriétés suivantes:

  • Bord d'attachement de l'invite : Haut
  • Décalage d'alignement de l'invite : 3
Image non disponible

Attention : La notion d'héritage est persistante, ce qui implique que si vous modifiez l'objet parent (dans cet exemple la classe ITEM) ces modifications seront automatiquement répercutées dans chaque objet héritant de cette classe.


Ajouter des méthodes à la classe de propriétés

Il est possible d'ajouter des déclencheurs aux classes de propriétés.
Il suffit de cliquer sur le nœud : Déclencheurs de la classe et de cliquer le bouton Image non disponible

Lorsque un item héritera de cette classe, il héritera de toutes les propriétés et de tous les déclencheurs associés.

Il convient de prêter une attention particulière au code PL/SQL saisi dans ces déclencheurs.
Comme il s'agit de méthodes génériques puisque codées au niveau classe, il faut s'abstenir de référencer directement l'objet sur lequel sera activé le déclencheur.
Utilisez les variables système :SYSTEM.TRIGGER_ITEM ou :SYSTEM.CURRENT_ITEM pour récupérer le nom de l'item ainsi que la fonction NAME_IN() pour récupérer la valeur de l'item.


Créer une nouvelle classe à partir d'une fenêtre de propriétés

Lorsque vous être dans une fenêtre de propriétés, vous pouvez créer une nouvelle classe à partir des propriétés sélectionnées dans cette fenêtre.

Dans la fenêtre des propriétés en cours, cliquez sur les propriétés (à l'aide de la touche Ctrl) que vous souhaitez conserver puis enfin sur l'icône Image non disponible de la barre d'outils.


Dupliquer une Classe

Afin de ne pas fixer à chaque fois toutes les propriétés lorsque vous souhaitez créer une classe presque semblable à une autre, cliquez la classe que vous voulez dupliquer et taper Ctrl-D au clavier. (ou menu : Edition->Dupliquer)


Appliquer une classe au moment de la conception

Une fois vos classes de propriétés définies, vous pouvez les appliquer aux objets de la forme via la propriété : Information de référence

XV-D. Techniques avancées

Normalement, les classes de propriétés doivent être stockées dans une librairie d'objets (.OLB) sous leur forme simple ou regroupées dans un ou plusieurs groupes d'objets.

A la création d'une nouvelle forme, « glissez » la(les) classe(s) ou le(s) groupe(s) d'objets depuis la librairie vers votre forme.

Dans ce cas, la copie peut se faire de deux façons:

  • Par copie (une copie « physique » des objets est réalisée)
  • Par référence (l'objet inséré dans la forme garde un lien vers l'objet parent de la librairie)

La copie « simple » permet d'hériter des propriétés dans l'optique d'en modifier une ou plusieurs.
L'inconvénient majeur en cas de simple copie est que les modifications ultérieures appliquées aux objets de la librairie ne seront pas répercutées dans votre forme.

La copie par référence permet de s'assurer que toute modification de l'objet parent stocké en librairie sera répercutée au niveau de la forme sur simple re-compilation.

Le module Forms : TEST_CLASSES_PROP.FMB livré avec le tutorial contient nombre d'objets dont les propriétés sont héritées de classes et d'attributs visuels.

TEST_CLASSES_PROP.FMB

La plupart des objets héritent de classes de propriétés et d'attributs visuels.

L'item Température hérite de la classe ITEM_NUM_POS_NEG et de ses déclencheurs. Changez sa valeur en positif/négatif pour voir comment l'attribut visuel est adapté à la valeur.

Dans le bloc multienregistrements, le changement d'enregistrement applique l'attribut visuel VA_CURRENT_RECORD. Le bouton : Change Attribut permet de changer son attribut visuel à chaque fois qu'il est déclenché.

Le bouton Affiche erreur affiche une boite d'alerte avec son attribut visuel ainsi que le bouton Choix ? qui retourne sur la ligne de statut le choix de l'utilisateur.

L'onglet Page 2 démontre comment adapter la couleur de chaque item indépendamment de l'enregistrement.

TEST_CLASSES_PROP.FMB

Le bloc est basé sur la table : TEMPERATURES créée via le script tuto_forms_install.sql.

Sur chaque enregistrement, le champ : Degres est colorié en bleu foncé lorsque la température est inférieure ou égale à 0, en bleu pâle lorsqu'elle est comprise entre 1 et 20 degrés, et en rouge lorsqu'elle est supérieure à 20 degrés, via les attributs visuels VA_FROID, VA_MOYEN et VA_CHAUD de la forme.

XV-E. Conseils pratiques

La mise en place des classes de propriétés nécessaires au développement en équipe d'une application est une phase primordiale d'un projet.

Plus cette analyse sera fine et complète et plus vous gagnerez de temps pendant la phase de codage et de maintenance.

L'héritage est une fonctionnalité puissante dont on ne comprend parfois tout l'intérêt que lorsqu'une demande de modification apparemment mineure (la maîtrise d'œuvre décide, après coup que les champs non modifiables n'auront pas un fond gris mais vert pâle…) provoque la modification de centaines (milliers) d'objets !

Si votre application est basée sur des classes de propriétés, il suffit de modifier la propriété Background_color de la classe DISPLAY_ITEM (dans notre exemple), livrer la librairie à l'exploitation et demander la compilation en batch de l'ensemble des modules (.FMB)
Cette opération vous prendra au pire une demi heure.

Si vous n'avez pas basé votre application sur un système de classes, il vous faudra ouvrir chaque module et modifier « à la mano » tous les items non saisissables….


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2005 SheikYerbouti. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.