Le guide Oracle Forms 9i/10g


précédentsommairesuivant

XVIII. Les attributs visuels

XVIII-A. Définition

Un attribut visuel est un conteneur qui regroupe un ensemble de caractéristiques visuelles pouvant être appliquée à un objet.

Il permet d'appliquer en une fois plusieurs caractéristiques à un objet, d'accélérer la phase de conception en évitant d'attribuer une à une les diverses propriétés visuelles des items communs.

Enfin et surtout, il participe, avec les classes de propriétés et les groupe d'objets à la mise en place et au respect d'une charte graphique commune à l'ensemble des modules d'une application.

XVIII-B. Concept

Il existe trois types d'attribut visuels:

  • Commun
  • Invite
  • Titre

Le type Commun s'applique aux items
Le type Invite s'applique aux invites des items
Le type Titre s'applique aux titres de cadres

Les caractéristiques visuelles pouvant être regroupées dans un attribut visuel sont les suivantes :

  • Couleur de premier plan
  • Couleur d'arrière plan
  • Motif de remplissage
  • Nom de la police
  • Taille de la police
  • Epaisseur de la police
  • Style de police
  • Espacement de police

Certaines caractéristiques sont sans effet sur certains objets.
Par exemple, les caractéristiques relatives aux polices de caractères n'ont aucun sens lorsque l'attribut visuel est appliqué à une fenêtre.

Ces attributs visuels peuvent être attribués aux objets au moment du design, mais également au cours de l'exécution(*) sur les objets suivants:

  • Module (enregistrement courant)
  • Alerte
  • Bloc(*) (enregistrement courant)
  • Item(*)
  • Canevas(*)
  • Page onglet(*)
  • Editeur
  • LOV
  • Option de menu instantané
  • Classe de propriété
  • Fenêtre

Il n'y a pas de limite au nombre d'attributs visuels pouvant être créés dans un module.

XVIII-C. Mise en œuvre

Création d'un attribut visuel

Un attribut visuel ne peut pas être créé à l'exécution, mais uniquement dans la phase de conception.

Cliquer sur le nœud : Attributs visuels dans le navigateur d'objets puis sur Image non disponible
Un nouvel attribut est créé avec un nom attribué par le système.

Faire un double-clic sur le nœud du nouvel attribut pour afficher la palette de propriétés ou F4.

Image non disponible

Pensez immédiatement à renommer l'attribut et définissez les caractéristiques souhaitées, notamment la propriété : Type d'attribut, selon qu'il s'appliquera à un objet commun, une invite ou un titre de cadre.

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

Cette notion d'héritage est particulièrement intéressante dans la mesure ou elle permet de définir des « classes » de base pouvant s'hériter d'objet en objet. Il est dès lors permis de créer des objets regroupant les caractéristiques de base ou communes, puis de créer d'autre objets héritant de ces caractéristiques communes en ne modifiant/ajoutant que les particularités.

Image non disponible

ici, nous définissons que le nouvel attribut héritera des caractéristiques de l'objet VA_BTN précédemment défini.

Image non disponible

Il ne reste plus qu'à modifier les caractéristiques spécifique de ce nouvel attribut visuel.

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


Dupliquer un attribut visuel

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


Appliquer un attribut visuel au moment de la conception

Une fois votre attribut visuel défini, vous pouvez l'appliquer aux objets de la forme via deux propriétés :

  • Groupe d'attributs visuels
  • Groupe d'attributs visuels de l'enregistrement courant

Pourquoi est-il possible d'attribuer deux attributs différents à un même objet ?

Le groupe d'attributs s'applique à l'objet de façon standard.

Le groupe d'attributs de l'enregistrement courant n'est appliqué à l'objet que lorsque celui-ci appartient à l'enregistrement courant (celui dans lequel se trouve le curseur).

Cela permet de différencier visuellement l'enregistrement que l'utilisateur affiche ou modifie.
Cette notion prend tout son sens dans les blocs multienregistrements (tabulaires).


Appliquer un attribut visuel au moment de l'exécution

Pour retrouver le nom d'un attribut visuel attaché à un objet pendant l'exécution, il faut utiliser les fonctions natives suivantes:

 
Sélectionnez

-- Canevas --
Varchar2 := GET_CANVAS_PROPERTY( nom_canevas | id_canevas, VISUAL_ATTRIBUTE )
-- Instance d'item --
Varchar2 := GET_ITEM_INSTANCE_PROPERTY( nom_item | id_item, num_record, VISUAL_ATTRIBUTE )
-- Item --
Varchar2 := GET_ITEM_PROPERTY( nom_item | id_item, VISUAL_ATTRIBUTE ) 
-- Groupe de boutons radio --
Varchar2 := GET_RADIO_BUTTON_PROPERTY (nom_item | id_item, nom_bouton, VISUAL_ATTRIBUTE )
-- Page onglet --
Varchar2 := GET_TAB_PAGE_PROPERTY( nom_page | id_page, VISUAL_ATTRIBUTE )

Pour appliquer un attribut visuel à un objet pendant l'exécution, il faut utiliser les fonctions natives suivantes:

SET_CANVAS_PROPERTY( nom_canevas | id_canevas, VISUAL_ATTRIBUTE, nom_attribut ) ;
SET_ITEM_INSTANCE_PROPERTY( nom_item | id_item, num_record, VISUAL_ATTRIBUTE, nom_attribut ) ;
SET_ ITEM_PROPERTY( nom_item | id_item, VISUAL_ATTRIBUTE, nom_attribut ) ;
SET_ ITEM_PROPERTY( nom_item | id_item, PROMPT_VISUAL_ATTRIBUTE, nom_attribut ) ;
SET_ ITEM_PROPERTY( nom_item | id_item, MERGE_VISUAL_ATTRIBUTE, nom_attribut ) ;
SET_ ITEM_PROPERTY( nom_item | id_item, MERGE_TOOLTIP_ATTRIBUTE, nom_attribut ) ;
SET_ ITEM_PROPERTY( nom_item | id_item, MERGE_CURRENT_ROW_VA, nom_attribut ) ;
SET_RADIO_BUTTON_PROPERTY(nom_item | id_item, nom_bouton, VISUAL_ATTRIBUTE, nom_attribut ) ;
SET_TAB_PAGE_PROPERTY( nom_page | id_page, VISUAL_ATTRIBUTE, nom_attribut ) ;

Exemple:
Pour un item numérique, nous voulons qu'il s'affiche différemment selon qu'il est positif ou strictement négatif. Nous avons défini deux attributs visuels distincts:
VA_NUM_POSITIF pour les nombres positifs
VA_NUM_NEGATIF pour les nombres négatifs
Nous allons donc écrire deux déclencheurs sur l'item pour gérer ce cas de figure.
Tout d'abord, un déclencheur PRE-TEXT-ITEM pour le colorer à l'arrivée dans l'item et un déclencheur POST-TEXT-ITEM pour le re-colorer à la sortie si l'utilisateur a changé la valeur.

Le code est identique pour les deux déclencheurs

 
Sélectionnez

Declare
    LC$Item Varchar2(61) := :system.current_item ;
Begin
    If Nvl( Name_In( LC$Item ), 0 ) >= 0 Then
        Set_Item_Instance_Property( LC$Item, CURRENT_RECORD, VISUAL_ATTRIBUTE, 'VA_NUM_POSITIF' );
    Else
        Set_Item_Instance_Property( LC$Item, CURRENT_RECORD, VISUAL_ATTRIBUTE, 'VA_NUM_NEGATIF' );
    End if ;
End ;



Modifier un attribut visuel au moment de l'exécution

Il est possible de modifier les caractéristiques d'un attribut visuel pendant l'exécution avec la fonction native suivante:

Set_Va_Property( nom_attribut | id_attribut, nom_propriété, valeur_propriété ) ;

Selon le cas, valeur_propriété est de type VARCHAR2 ou NUMBER
nom_propriété peut prendre l'une des valeurs suivantes :

  • BACKGROUND_COLOR (couleur de l'arrière plan).
  • FILL_PATTERN (type de remplissage de l'arrière plan)
  • FONT_NAME (nom de la police de caractères)
  • FONT_SIZE (taille de la police de caractères)
  • FONT_SPACING (espacement de la police de caractères)
  • FONT_STYLE (style de la police de caractères)
  • FONT_WEIGHT (graisse de la police de caractères)
  • FOREGROUND_COLOR (couleur du premier plan)

Et de récupérer ces mêmes caractéristiques avec la fonction native:
Varchar2 := Get_Va_Property( nom_attribut | id_attribut, nom_propriété ) ;

XVIII-D. Techniques avancées

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.
(voir le chapitre Classes de propriétés)

La manipulation des attributs visuels au cours de l'exécution est également largement implémentée dans le tutoriel : Forms : manipulations dynamiques première partie, au niveau du paquetage PKG_COLORS de la librairie COLORS.PLL

XVIII-E. Conseils pratiques

L'utilisation des attributs visuels, comme celle des classes de propriétés, est un outil puissant, autant pour accélérer la phase de développement que pour respecter la charte graphique de l'application.

Avant de partir « la tête dans le guidon » et de positionner une à une chacune des propriétés de chacun des objets de vos modules, prenez le temps de définir une charte graphique aussi détaillée que possible, et de définir, avant toute chose, les attributs visuels et classes de propriétés que vous utiliserez, autant durant la phase de développement que pendant la période de maintenance.

Ces éléments vous permettront de monter rapidement une maquette de l'application et de la faire évoluer rapidement.

L'héritage permettra surtout, s'il est bien pensé au départ, d'adapter vos formes à la demande, sans devoir ouvrir et modifier vos modules mais également de vous assurer que chaque module (et chaque développeur) respectera la charte graphique définie dans les spécifications.


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.