Le guide Oracle Forms 9i/10g


précédentsommairesuivant

XXV. Les items image

XXV-A. Définition

Forms peut afficher une image sur le canevas de deux façons:

  • Une zone graphique de type image sur laquelle le développeur applique une image depuis le système de fichier ou depuis la base de donnée.
  • Un item basé ou non, stocké dans un bloc permettant d'afficher également une image de type vecteur ou bitmap depuis le disque dur ou la base de données.

Les images peuvent également être appliquées aux items de type Bouton de commande.
Sous Forms 9i, les images appliquées aux boutons de commande doivent être au format .GIF ou .JPEG pour l'exécution, et .ICO pour la partie conception.
Forms 10g accepte les images au format .GIF dans tous les cas.

XXV-B. Concept

Lorsqu'une image dite « de fond » est appliquée directement sur un canevas, elle est sélectionnée au moment de la conception puis est enregistrée dans le fichier source .FBM ainsi que dans le fichier exécutable .FMX.

Les items de type Image sont associés à un bloc de données ou de contrôle et sont manipulables à l'exécution.
Lorsque l'item de type Image est basé sur la colonne d'une table, celle-ci peut être de type soit BLOB soit BFILE.

Rappel:
Une colonne de type BLOB stocke le contenu binaire directement dans la colonne de la table.
Une colonne de type BFILE ne stocke dans la colonne que le chemin d'accès vers le fichier stocké au niveau du système de fichiers.

Les images associées aux items de type Bouton de commande sont également manipulables, dans le sens ou il est possible de changer l'image associée au bouton au cours de l'exécution.

XXV-C. Mise en œuvre

Poser une image de fond sur le canevas

  • Ouvrez l'éditeur de présentation
  • Assurez vous qu'il affiche le canevas désiré
  • Cliquez le menu Edition -> Importer -> Image…
  • Selon la source de l'image, choisissez Base de données ou Fichier
  • Cliquez le bouton Parcourir… afin de sélectionner l'image
  • Choisissez enfin la qualité d'affichage souhaité pour l'image.(plus la qualité est bonne, plus la mémoire nécessaire est importante)

Lorsque l'image apparaît sur le canevas il est possible de la déplacer et d'en changer les dimensions.
La fenêtre de propriété peut être activée en pressant F4.


Gérer un item de type Image

- depuis le navigateur d'objets

Choisissez le bloc dans lequel l'item image sera stocké
Cliquez le nœud : Elément du bloc puis l'icône Image non disponible
Cliquez le nouvel élément et affichez sa fenêtre de propriété avec F4

- depuis l'éditeur de présentation

Sélectionnez le canevas et le bloc de réception désiré
Cliquez l'outil Image non disponible dans la palette d'outils
Dessinez avec la souris le contour de l'image sur le canevas


Les propriétés de l'image

Affichez la fenêtre de propriété avec F4

Type d'élément doit être : Image
Format image permet d'indiquer dans quel format l'image sera stockée en base
Profondeur d'image détermine le profondeur de l'image lue ou écrite depuis le fichier (fonction désuète depuis la version 9i)
Qualité de l'affichage indique la qualité d'affichage souhaitée

  • Max
  • Moyen
  • Min

Plus la qualité est bonne, plus l'espace mémoire requis est important.
Afficher palette (il semble que cette fonctionnalité ne soit plus effective en mode Web)
Type d'ajustement

  • Découper laisse l'image intacte
  • Ajuster ajuste l'image à la taille de l'item

Afficher barre de défilement horizontale, verticale permet d'afficher le ou les ascenseurs pour faire défiler l'image.


Attacher une image à un bouton de commande

Si vous souhaitez visualiser l'image sous Forms Builder, vous devez indiquer une image de type ICON (.ICO).
Par contre, à l'exécution le format attendu est soit .GIF soit .JPEG
Ce système (peu pratique) impose donc d'avoir 2 versions de chaque image.

Partons du principe que les fichiers image sont stockés dans le répertoire : d:\forms9i\icons.

Pour indiquer à Forms Builder dans quels répertoires se trouvent les images, il faut renseigner la variable de registre : UI_ICON

Pour indiquer à Forms Runtime à quel endroit sont stockées les images, il faut le spécifier tout d'abord dans le fichier de configuration:
<ORACLE_HOME>/forms90/server/forms90.conf

en ajoutant une ligne du type:
AliasMatch ^/forms90/icons/(..*) « D:\Forms9i/icons/$1 »

Modifier ensuite le fichier:
<ORACLE_HOME>/forms90/java/oracle/forms/registry/registry.dat

mettre à jour les deux ligne suivantes:
default.icons.iconpath=icons/
default.icons.iconextension=gif

Modifier ensuite les propriétés du bouton de commande:

Icône : Oui
Nom de fichier d'icône : nom du fichier (sans l'extension)

Attention au nom de fichier sur les systèmes Unix qui sont sensibles à la casse.

XXV-D. Techniques avancées

Plusieurs écrans d'exemples sont livrés avec l'article.

ALBUM.FMB permet de constituer un album de photos

ALBUM.FMB

Les images affichées sont stockées dans la table : PHOTOS dont le script de création est livré avec l'article.

Cette table ne contient qu'une colonne de type BLOB permettant de stocker une image par enregistrement.
Hors l'écran tel que nous le voyons semble construit avec des enregistrements affichant chacun cinq images !

Ouvrez le module ALBUM.FMB.
En fait, cinq blocs basés sur la table photos sont déclarés.
La sélection de la photo se fait dans la propriété : Clause Where de chaque bloc.

Par exemple le premier bloc contient : Substr(IDENTIFIANT,length(IDENTIFIANT),1) IN ('1','6')
Le deuxième contient : Substr(IDENTIFIANT,length(IDENTIFIANT),1) IN ('2','7')
Et ainsi de suite…

La clé primaire de chaque photo stockée (colonne IDENTIFIANT) est alimentée par la séquence SEQ_PHOTOS.

Le premier bloc affiche donc les images dont le numéro d'identifiant se termine par 1 ou 6.
Le deuxième bloc affiche donc les images dont le numéro d'identifiant se termine par 2 ou 7.
Et ainsi de suite pour les trois autres blocs.

Deux boutons permettent d'ajouter de nouvelles images à l'album.
L'un pour afficher un écran de gestion de répertoire (si vous n'avez pas installé la librairie WEBUTIL)

CHARGE_PHOTO.FMB

CHARGE_PHOTO.FMB

Si vous n'avez pas installé Webutil, cliquez le bouton Nouvelle photo (sans Webutil) pour afficher un écran Forms de sélection de fichier

GET_FILE_NAME.FMB

Cette forme utilise intensivement la commande Host() pour afficher les lecteurs logiques ainsi que la liste des fichiers inclus.

Remarque:
Cet écran ne fonctionne que sous Windows et Developer Suite.

Néanmoins, comme la grande majorité des postes de développement sont sous Windows, cet écran permet de charger la base de données avec les images présentes sur le poste client sans la présence de WEBUTIL.

Si vous avez installé Webutil, cliquez le bouton Nouvelle photo (avec Webutil) pour afficher un écran Forms de sélection de fichier (CHARGE_PHOTO_WEBUTIL.FMB)

L'item de type image est alimenté avec la fonction Read_Image_File()
Cette fonction permet de lire un fichier image sur le disque et d'en charger le contenu dans un item de type image.
Read_Image_File( nom_fichier, type_fichier, nom_item_image | id_item_image )

nom_fichier représente le nom du fichier complet (chemin + fichier)
type_fichier peut prendre l'une des valeurs suivantes:

  • ANY
  • BMP
  • CALS
  • GIF
  • JFIF
  • JPG
  • PICT
  • RAS
  • TIFF
  • TPIC

Voici le contenu de la procédure : Charge_Photo() de l'écran : CHARGE_PHOTO.FMB :

Procédure : Charge_Photo (sans Webutil)
Sélectionnez

PROCEDURE Charge_photo 
IS

  LC$Img    Varchar2(100);  
  LN$But    Number ;
  pl_id     ParamList; 
  pl_name   Varchar(20) := 'list_params'; 
  
BEGIN
     
    -----------------------------------------
    -- Liste des paramètres pour le filtre --
    -----------------------------------------
    pl_id := Get_Parameter_List(pl_name);
    If NOT Id_Null(pl_id) THEN 
       Destroy_Parameter_List( pl_id ) ;
    End if ;
    pl_id := Create_Parameter_List(pl_name); 
    -- Ajout des paramètres --
    Add_Parameter(pl_id,'P_FILTRE',TEXT_PARAMETER,'*.gif,*.jpg');
    Add_Parameter(pl_id,'P_POSY',TEXT_PARAMETER,'1');  
     
    ---------------------------------------------------
    -- choix de la photo dans le système de fichiers --
    ---------------------------------------------------
    :global.get_file_name := '' ;

    -- Appel de l'écran de sélection de fichier (sans Webutil) --
    call_form( 'get_file_name', NO_HIDE, DO_REPLACE, QUERY_ONLY, pl_id ) ;
    If not form_success Then
       message('pb appel get_file_name');
    End if ;
     
    If :GLOBAL.get_file_name is not null Then
       -- lecture de la photo dans le champs basé --
       LC$Img := :GLOBAL.get_file_name ;
       Go_block( 'PHOTOS' );
       Read_Image_File(LC$Img, 'ANY', 'PHOTOS.photo');
       Go_item( 'PHOTOS.NOM' );
    Else
       Raise form_trigger_failure ;
    End if ;
  
END;

Pour écrire un fichier image depuis un item de type image, utilisez la fonction Write_Image_File().

Un double clic sur l'une des photos de l'écran ALBUM permet d'afficher l'image dans un format plus grand et d'y exécuter certaines manipulations.

Image non disponible

quatre boutons permettent de déplacer l'image dans la fenêtre à l'aide des instructions : Image_Scroll()

Image_Scroll( nom_image | id_image, X, Y )

X indique la coordonnée X (abscisse) du déplacement
Y indique la coordonnée Y (ordonnée) du déplacement

X et Y peuvent être négatif, nul ou positif.

Des images sont d'ailleurs attachées à ces boutons (livrés avec l'article):

  • fl_droite.gif
  • fl_gauche.gif
  • fl_haut.gif
  • fl_bas.gif

Deux autres boutons permettent d'agrandir ou diminuer l'image avec la fonction : Image_Zoom().

Image_Zoom( nom_image | id_image, zoom_type [, zoom_facteur] )

zoom_type peut valoir:

  • ADJUST_TO_FIT Ajuste l'image de telle façon quelle soit entièrement contenu dans la surface de l'item Image.
  • SELECTION_RECTANGLE La région de l'image sélectionnée rempli entièrement la surface de l'item image.
  • ZOOM_IN_FACTOR L'image est agrandie de la valeur de zoom_facteur.
  • ZOOM_OUT_FACTOR L'image est diminuée de la valeur de zoom_facteur.
  • ZOOM_PERCENT Agrandie/diminue l'image avec le pourcentage indiqué par zoom_facteur

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.