IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Le guide Oracle Forms 9i/10g

Date de publication : Juin 2005




Les Canevas et lucarnes
Définition
Concept
Mise en oeuvre
Techniques avancées


Les Canevas et lucarnes


Définition

Le canevas correspond à une surface d'affichage.
Il est obligatoirement associé à une fenêtre et une seule (Window).

Une fenêtre peut contenir plusieurs canevas de type Intégral et plusieurs canevas de type Empilé et/ou Onglet mais un seul canevas intégral n'est visible à la fois.

La lucarne correspond à une "fenêtre" d'affichage physique du canevas
Par exemple, un canevas peut avoir des dimensions de 2000x1000 pixels, mais la lucarne d'affichage n'en affichera qu'une certaine partie.
Cela permet de "faire tenir" un canevas dans une zone d'affichage bien délimitée avec l'affichage d'éventuels ascenseurs pour se déplacer sur le canevas à travers la lucarne qui est fixe.


Concept

Forms supporte quatre types de canevas :

  • Intégral
  • Empilé
  • Onglet
  • Barre d'outils
Le canevas intégral

Il s'agit de la surface d'affichage par défaut. Il est appelé canevas parent dans la mesure ou il représente la surface d'affichage principale sur laquelle sont affiché les graphiques, les items des blocs ainsi que les canevas de type empilé et/ou onglet.

Chaque fenêtre de l'application doit contenir au moins un canevas intégral.

Lorsque vous créez un nouveau module Forms, une des premières choses à faire est de créer un canevas intégral. C'est sur cette surface que vous afficherez les objets graphiques et les items.

Création de plusieurs canevas intégraux sur une même fenêtre

Forms, à l'exécution ne peut afficher au même instant qu'un seul canevas intégral pour une même fenêtre. Il doit donc " décider " lequel sera affiché dans l'instant et considéré comme le canevas courant.

Par défaut, Forms place le focus sur le premier item navigable du premier bloc de la forme. C'est donc le canevas intégral qui contient cet item qui deviendra le canevas courant.
Lorsque la navigation déplace le focus vers un item hébergé par un autre canevas intégral, c'est celui-ci qui devient le canevas courant.

Au moment de la conception, vous pouvez définir au niveau des propriété de la fenêtre quel sera le canvas principal.


Le canevas empilé

Comme son nom l'indique, il s'agit d'un canevas qui se superpose au canevas intégral.
Lorsqu'il est affiché, il masque la partie du canevas intégral sur lequel il est posé.
Il peut être masqué ou affiché par programme à l'exécution.

Vous pouvez créer autant de canevas empilé que souhaité.
Vous pouvez ajuster ses propriétés visuelles afin de souligner graphiquement sa présence( couleur de fond différente du canevas intégral par exemple).
Vous pouvez également lui donner les mêmes attributs graphiques que le canevas intégral donnant l'impression à l'utilisateur qu'il s'agit de la même zone d'affichage.

La particularité du canevas empilé réside dans le fait qu'il est "fenêtrable".
Cela veut dire que vous pouvez forcer son affichage à l'intérieur d'une zone fixe et faire défiler le canevas à l'intérieur de cette zone sans que le canevas intégral ne soit impacté.
Cette technique permet de gérer des tableaux d'enregistrements (de type feuille de calcul) beaucoup plus larges que la taille du canevas intégral.
Un canevas empilé peut être affiché/masqué à l'exécution et permet d'afficher sur un même canevas intégral des objets totalement différents.


Le canevas à onglets

Il s'agit d'un canevas munis d'un ou de plusieurs onglets.
Il permet d'afficher un grand nombre d'items dans chaque onglet, sachant qu'un seul onglet est visible à la fois.
Chaque onglet bénéficie d'un libellé sur lequel l'utilisateur peut cliquer et d'une surface d'affichage égale à celle du canevas qui l'héberge.


Le canevas barre d'outils

Ce type de canevas est utilisé pour créer des barres d'outils.
Il peut être horizontal et dans ce cas affiché en haut de la fenêtre juste sous la barre de menu, ou vertical et dans ce cas affiché sur le coté gauche de la fenêtre.

Il peut y en avoir plusieurs pour chaque fenêtre et il est possible de les afficher/masquer selon le contexte à l'exécution.


Le concept de la lucarne (VIEW)

La lucarne est un concept fondamental dans la notion de canevas.
Une lucarne peut être représenté comme un fenêtre d'affichage à l'intérieur d'un canevas permettant d'afficher tout ou partie du canevas.

En dehors des canevas empilé, la lucarne d'une canevas est intimement liée à la tille de la fenêtre qui l'héberge.
Modifier la taille de la lucarne d'une de ces canevas modifiera automatiquement celle de la fenêtre et invsersement.

Pour un canevas empilé, il est possible de modifier la taille de cette lucarne à l'exécution.
Pour les autres types de canevas, cette taille est identique à celle de la fenêtre qui l'héberge.
Par contre, vous pouvez pour chaque type de canevas modifier le point d'origine (supérieur gauche) de la lucarne à un endroit spécifique du canevas.
Lorsque qu'un canevas intégral est plus large que sa lucarne (qui correspond à la taille de la fenêtre), il est possible de modifier ce point d'origine pour afficher dans la lucarne des partie du canevas invisibles jusque là.

Les canevas


Mise en oeuvre

Créer un canevas depuis le navigateur d'objets

Pour créer un nouveau canevas depuis la fenêtre du navigateur d'objets, cliquer sur le nœud : Canevas puis sur le bouton de création

Un nouveau canevas apparaît avec un nom automatiquement attribué par Forms et de type intégral.


Créer un canevas onglet ou empilé depuis l'éditeur de présentation

Pour créer un nouveau canevas empilé ou onglet depuis la fenêtre d'édition de présentation, cliquer l'icône du canevas désiré, puis dessinez avec la souris (bouton gauche enfoncé) le rectangle définissant la taille du canevas souhaité.
Relâchez le bouton de la souris.

Icône de canevas onglet
Icône de canevas empilé

Remarque:
Un canevas onglet ou empilé est toujours attaché à un canevas intégral.
Si vous disposez de plusieurs canevas de type intégral dans votre application, veillez à le sélectionner dans l'éditeur de présentation avant d'insérer votre nouveau canevas




Les propriétés du canevas

Cliquez le nom du canevas dans le navigateur et faites apparaître sa fenêtre de propriétés en tapant F4.

Général

Nom désigne le nom du canevas (30 caractères)
Cette propriété ne peut être fixée qu'au moment du design.
Type de canevas peut prendre l'une des 5 valeurs suivantes :

  • Intégral (par défaut) désigne un canevas parent de plus bas niveau
  • Empilé désigne un canevas qui sera superposé à un canevas intégral
  • Barre d'outils horizontale désigne un canevas représentant une barre d'outils
  • Barre d'outils verticale désigne un canevas représentant une barre d'outils
  • Onglet désigne un canevas qui supportera un ou plusieurs onglets
Cette propriété ne peut être fixée qu'au moment du design.
Informations de référence permet l'hériate d'une classe de propriétés
Commentaires est une zone de saisie libre

Fonctionnel

Afficher au premier plan sur saisie désigne la façon dont Forms affiche les canevas. Si la valeur est Oui, Forms affiche le canvas au premier plan, même s'il ne contient pas l'item qui a le focus. Si la valeur est Non, le canvas n'est affiché au premier plan que si l'item en cours correspond à ce canevas
Cette propriété n'est utilisé que lorsqu'au moins deux canevas sont associés à une même fenêtre
Cette propriété ne peut être fixée qu'au moment du design.
Menu instantané permet d'attacher un menu instantané (popup) au canvas
Cette propriété ne peut être fixée qu'au moment du design.

Physique

Visible indique si le canevas est visible par défaut
Cette propriété peut être fixée à l'exécution (Set_View_Property(..., VISIBLE)).
Lorsque le canevas est de type Empilé, 2 propriétés supplémentaires sont actives:

  • Afficher barre de défilement horizontale ajoute au canevas un ascenseur horizontal
  • Afficher barre de défilement verticale ajoute au canevas un ascenseur vertical
Lorsque le canevas est de type Onglet, 4 propriétés particulières sont actives:

1. Type d'angle Chanfreiné
  Carré
  Arrondi
2. Style de largeur Fixe (chaque onglet à la même largeur)
  Variable (la largeur de chaque onglet s'adapte à la taille du libellé)
3. Style actif Normal (la police d'affichage du libellé de l'onglet actif ne change pas)  
  Gras (la police d'affichage du libellé de l'onglet actif passe en gras)
4. Bord d'attachement d'onglet Haut  
  Bas
  Gauche
  Droite  
  Début  
  Fin  
Ainsi qu'une section supplémentaire : Police pour définir les attributs graphiques du libellé de l'onglet

  • Nom de police
  • Taille de police
  • Epaisseur
  • Style
  • Espacement

Fenêtre
Position X de la lucarne sur le canevas spécifie la position horizontale de la lucarne (VIEW) sur le canevas
Cette propriété peut être fixée à l'exécution (Set_View_Property(..., VIEWPORT_X_POS_ON_CANVAS)).
Position Y de la lucarne sur le canevas spécifie la position verticale de la lucarne (VIEW) sur le canevas
Cette propriété peut être fixée à l'exécution (Set_View_Property(..., VIEWPORT_Y_POS_ON_CANVAS)).
Largeur désigne la largeur du canevas exprimée dans le système de coordonnées
Cette propriété peut être fixée à l'exécution (Set_Canvas_Property(..., WIDTH)).
Hauteur désigne la hauteur du canevas exprimée dans le système de coordonnées
Cette propriété peut être fixée à l'exécution (Set_Canvas_Property(..., HEIGHT)).
Les 2 propriétés peuvent être fixée simulatnément à l'exécution(Set_View_Property(..., VIEW_SIZE))
Largeur de la lucarne désigne la largeur de la lucarne (VIEWPORT) exprimée dans le système de coordonnées
Cette propriété peut être fixée à l'exécution (Set_View_Property(..., WIDTH)).
Hauteur de la lucarne désigne la hauteur de la lucarne (VIEWPORT) exprimée dans le système de coordonnées
Cette propriété peut être fixée à l'exécution (Set_View_Property(..., HEIGHT)).
Relief désigne l'apparence visuelle du canevas et peut prendre l'une des six valeurs suivantes:

  • Relâché
  • Enfoncé
  • Aucun
  • Incrusté
  • Ressorti
  • Simple

Attributs visuels

Groupe d'attributs visuels désigne l'attribut visuel assigné au canevas

Couleur

Couleur de premier plan indique la couleur des objets de premier plan
Couleur d'arrière plan indique la couleur du fond
Motif de remplissage indique un motif de remplissage

International

Orientation désigne le sens d'affichage des objets (par défaut de gauche à droite)


Propriétés de l'onglet d'un canevas onglet

Général

Nom désigne le nom interne de l'onglet
Cette propriété ne peut être fixée qu'au moment du design.
Activé indique si l'onglet est actif (et donc cliquable). Si la propriété est fixée à Non, l'onglet reste visible mais son libellé est grisé.
Cette propriété peut être fixée à l'exécution (Set_Tab_Page_Property(..., ENABLED)).
Libellé désigne le libellé de l'onglet
Cette propriété peut être fixée à l'exécution (Set_Tab_Page_Property(..., LABEL)).

Physique

Visible indique si l'onglet est visible
Cette propriété peut être fixée à l'exécution (Set_Tab_Page_Property(..., VISIBLE)).

Attributs visuels

Groupe d'attributs visuels désigne l'attribut visuel assigné au l'onglet
Cette propriété peut être fixée à l'exécution (Set_Tab_Page_Property(..., VISUAL_ATTRIBUTE)).

Couleur

Couleur de premier plan indique la couleur des objets de premier plan
Cette propriété peut être fixée à l'exécution (Set_Tab_Page_Property(..., FOREGROUND_COLOR)).
Couleur d'arrière plan indique la couleur du fond
Cette propriété peut être fixée à l'exécution (Set_Tab_Page_Property(..., BACKGROUND_COLOR)).
Motif de remplissage indique un motif de remplissage
Cette propriété peut être fixée à l'exécution (Set_Tab_Page_Property(..., FILL_PATERN)).

International

Orientation désigne le sens d'affichage des objets (par défaut de gauche à droite)


Les fonctions natives relatives aux canevas et lucarnes

Afficher un canevas

Show_View( 'nom_canevas' | id_canvas) ;
Set_View_Property( 'nom_canevas' | id_canevas, VISIBLE, PROPERTY_TRUE ) ;

Masquer un canevas

Hide_View( 'nom_canevas' | id_canvas) ;
Set_View_Property( 'nom_canevas' | id_canevas, VISIBLE, PROPERTY_FALSE ) ;

Modifier les propriétés d'un canevas

Set_Canvas_Property('nom_canevas' | id_canvas, nom_propriete, valeur [,valeur] ) ;

nom_propriete peut être:

  • BACKGROUND_COLOR défini la couleur du fonc.
  • CANVAS_SIZE détermine la largeur et hauteur (width, height).
  • FILL_PATTERN indique le motif utilsé pour le fond.
  • FONT_NAME indique le nom de la police.
  • FONT_SIZE taille de la police en points.
  • FONT_SPACING espacement des caractères.
  • FONT_STYLE style de la police.
  • FONT_WEIGHT graisse de la police.
  • FOREGROUND_COLOR Couleur de premier plan.
  • HEIGHT hauteur du canevas.
  • TOPMOST_TAB_PAGE nom de l'onglet qui apparaît en premier lieu.
  • VISUAL_ATTRIBUTE nom d'un attribut visuel.
  • WIDTH largeur du canevas.
La valeur de ces propriétés peuvent être obtenues avec la fonction:

Get_Canvas_Property('nom_canevas' | id_canvas, nom_propriete ) ;

Modifier les propriétés d'une lucarne

Set_View_Property( 'nom_lucarne' | id_lucarne, nom_propriete, valeur [,valeur] ) ;

nom_propriété peut être l'une des valeurs suivantes:

  • DIRECTION direction appliquée au objets bi-directionnels. Les valeurs valides sont : DIRECTION_DEFAULT, RIGHT_TO_LEFT, LEFT_TO_RIGHT. DISPLAY_POSITION coordonnées X et Y d'affichage de la lucarne.
  • HEIGHT hauteur de la lucarne.
  • POSITION_ON_CANVAS coordonnées X et Y du point supérieur gauche de la lucarne dans la canevas.
  • VIEWPORT_X_POS position X d'une lucarne relative à la fenêtre pour un canevas de type empilé.
  • VIEWPORT_Y_POS position Y d'une lucarne relative à la fenêtre pour un canevas de type empilé.
  • VIEWPORT_X_POS_ON_CANVAS position X d'une lucarne relative au canevas pour un canevas de type empilé.
  • VIEWPORT_Y_POS_ON_CANVAS position Y d'une lucarne relative au canevas pour un canevas de type empilé.
  • VIEW_SIZE largeur et hauteur de la lucarne.
  • VISIBLE indique si la lucarne doit être affichée ou masquée.
  • WIDTH largeur de la lucarne.

La valeur de ces propriétés peuvent être obtenues avec la fonction:

Get_View_Property( 'nom_lucarne' | id_lucarne, nom_propriete ) ;


Techniques avancées

La forme de test TEST_CANVAS.FMB livrée avec l'article permet de comprendre la gestion des différents types de canevas.

TEST_CANVAS.FMB
Peu de chose à dire sur le canevas intégral (CV_1) qui est obligatoire et partage la taille de la fenêtre qui l'accueille.

La partie supérieure droite de l'écran affiche un canevas de type empilé (CV_EMP_1).

Le bouton Changer le canevas empilé -> permet de permuter à l'exécution le canevas empilé CV_EMP_1 avec l'autre canevas empilé CV_EMP_2.
Ceci permet de voir comment présenter différentes informations à l'utilisateur selon le contexte avec l'instruction Show_View().

Dans le premier canevas empilé (CV_EMP_1) se trouve un autre bouton Descendre qui permet de modifier la position du coin supérieur gauche de la lucarne associée à ce canevas et d'afficher la partie basse, non visible au départ avec l'instruction:
Set_View_Property('Nom_canevas', VIEWPORT_Y_POS_ON_CANVAS, nouvelle _position) ;

Les fonctions Show_View() et Set_View_Property() suffiraient à elles seules à modifier l'affichage s'il n'y avait pas le problème de l'item qui a le focus !

En effet, Forms s'arrange toujours pour afficher le canevas (et la partie du canevas) sur lequel est affiché l'item qui a le focus.
Dans notre exemple, l'instruction Show_View() du bouton Changer le canevas suffit si le focus n'est pas dans un des items du bloc affiché par le canevas empilé.
Par contre, si le focus est positionné dans l'un des items de ce bloc, cette instruction reste dans effet car Forms affichera toujours le canevas qui supporte l'item en cours.
Dans ce cas, il vaut mieux utiliser une instruction Go_Block() ou Go_item() qui déplacera le focus et forcera l'affichage du canevas correspondant.

En d'autres termes les instructions Show_View(), Hide_View() et Set_View_Property() sont sans effet si elles s'appliquent à un autre canevas que celui correspondant à l'item en cours.


La partie inférieure de l'écran affiche un canevas de type onglet.

Le deuxième onglet offre la particularité de démontrer la manière de présenter un tableau de type "feuille de calcul".
On voit que la première colonne reste fixe pendant que les colonnes suivantes peuvent être défilées grâce à la barre de défilement horizontale.

Tous les items appartiennent au même bloc (BL_5).

Le premier est affecté à la page PG_1 du canevas de type onglet alors que les autres items sont affectés à un autre canevas de type empilé (CV_EMP_3) superposé au canevas à onglet et dont la taille de la lucarne est ajustée pour tenir dans la page onglet.



Copyright © 2005 SheikYerbouti. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.