Le guide Oracle Forms 9i/10g


précédentsommairesuivant

XXI. Les items bouton de commande

XXI-A. Définition

Un bouton de commande permet d'exécuter du code lorsqu'il est cliqué avec la souris ou déclenché avec le clavier (touche Entrée).

Ce type d'item n'accepte pas de saisie et ne stocke aucune valeur.

Il peut être associé soit à un libellé soit à une image.

XXI-B. Concept

- Sous Forms 9i/10g, un item bouton ne peut pas correspondre à une colonne d'une table.
Il est obligatoirement non basé.

- Il peut faire partie d'un bloc mono ou multi enregistrements.

- Le code PL/SQL associé doit être placé dans un déclencheur : When-Button-Pressed.

XXI-C. Mise en œuvre

Créer un item Bouton de commande

Depuis le navigateur d'objet:

Pointer le nœud Eléments du bloc désiré puis sur le bouton Image non disponible
La propriété Type d'élément doit être valorisée à Bouton de commande


Depuis l'éditeur de présentation:

Sélectionner le canevas et le bloc de réception de l'item.
Cliquer l'icône Image non disponible
Dessiner sur le canevas un rectangle avec la souris pour délimiter les dimensions de l'item

Propriétés spécifiques du bouton de commande:

Libellé est le texte qui sera affiché dans le bouton.
Cette propriété peut être modifiée à l'exécution via l'instruction:
Set_Item_Property( nom_item | id_item, LABEL, libelle) ;.
Touche d'accès permet de sélectionner la touche clavier de déclenchement du bouton avec la touche ALT.
Si vous souhaitez que le bouton réagisse à Alt+d, entrez d dans cette propriété.
Cette propriété ne peut être modifiée à l'exécution.
Icône permet d'indiquer si une image sera associée au bouton (à la place du libellé).
Cette propriété ne peut être modifiée à l'exécution.
Nom de fichier d'icône indique le nom du fichier image associé au bouton.
Il ne faut pas saisir l'extension du nom de fichier.
En effet Forms 9i cherche un fichier ayant l'extension .ICO dans la partie conception (Forms Builder) et .GIF à l'exécution (Forms Runtime)…
Cette curiosité obligeant la présence de deux fichiers (.ICO et .GIF) pour chaque image. (Forms 10g accepte un fichier .GIF dans les deux modes).
Cette propriété peut être modifiée à l'exécution via l'instruction:
Set_Item_Property( nom_item | id_item, ICON_NAME, nom_fichier_icone).
Bouton par défaut indique si le bouton obtiendra automatiquement le focus.
Il régira donc à toute frappe de la touche Entrée.
Cette propriété ne peut être modifiée à l'exécution.
Navigation autorisée au clavier Indique si le bouton obtiendra le focus lors de la navigation par le clavier (touches Tab ou Shift+Tab).
Cette propriété peut être modifiée à l'exécution via l'instruction:
Set_Item_Property( nom_item | id_item, NAVIGABLE, PROPERTY_TRUE | PROPERTY_FALSE).
Navigation à la souris indique si le bouton obtiendra le focus lorsqu'il est cliqué avec la souris.
Cette propriété peut être modifiée à l'exécution via l'instruction:
Set_Item_Property( nom_item | id_item, MOUSE_NAVIGATE, PROPERTY_TRUE | PROPERTY_FALSE).

Attention:
Ces deux dernières propriétés positionnées à Oui peuvent engendrer des effets non souhaités.
En effet, le bouton peut appartenir à un autre bloc (souvent un bloc de contrôle) et engendre, dans ce cas un processus de navigation qui actionne certains déclencheurs ( When-Validate-Record, PostRecord, PostBlock, etc.), ce qui n'est pas toujours le but souhaité.
Je conseille dans ce cas, en l'absence d'une bonne raison, de positionner ces deux propriétés à Non.

Le code Forms devant s'exécuter lorsque le bouton est actionné doit être placé dans un déclencheur When-Button-Pressed qui accepte les procédures restreintes.

XXI-D. Techniques avancées

Lorsque vous placez un item Bouton de commande dans un bloc multi enregistrements, Forms créé autant de boutons que d'enregistrements affichés.
Si vous ne souhaitez qu'une seule instance du bouton, positionnez sa propriété Nombre d'éléments affichés à 1.

D'une façon générale, il est conseillé de placer les boutons de commande dans un bloc de contrôle dont la propriété Enregistrement unique est positionnée à OUI


Libellé multilignes

Au moment de la conception, il n'est pas possible de scinder le libellé du bouton en plusieurs lignes.
Par contre vous pouvez le faire à l'exécution.
Il suffit pour cela de déclarer une chaîne de caractères contenant des caractères CHR(10) puis d'associer cette chaîne au bouton comme dans l'exemple suivant :

 
Sélectionnez

Declare
    LC$Label varchar2(30) := 'libellé ' || chr(10) || 'du' || chr(10) || 'bouton' ;
Begin
    Set_Item_Property('bloc3.bt', LABEL, LC$Label ) ;
End;
Image non disponible


Bouton multi lignes de couleurs différentes:

Dans un bloc muti enregistrements, il est possible de donner un attribut graphique différent à chaque bouton grâce à l'instruction Set_Item_Instance_Property().

Notre forme possède trois attributs visuels:

  • VA_ROUGE
  • VA_BLEU
  • VA_VERT

Dans le déclencheur PostQuery du bloc DEPT, nous souhaitons donner à chaque bouton un aspect particulier selon le code du département:

 
Sélectionnez

-- Code du déclencheur Post-Query --
If :DEPTNO = 10 Then
    Set_Item_Instance_Property( 'DEPT.BT', CURRENT_RECORD, VISUAL_ATTRIBUTE, 'VA_ROUGE' ) ;
ElsIf :DEPTNO = 20 Then
    Set_Item_Instance_Property( 'DEPT.BT', CURRENT_RECORD, VISUAL_ATTRIBUTE, 'VA_BLEU' ) ;
Else
    Set_Item_Instance_Property( 'DEPT.BT', CURRENT_RECORD, VISUAL_ATTRIBUTE, 'VA_VERT' ) ;
End if ;

Afin d'obtenir le résultat suivant:

Image non disponible


Bouton de contour irrégulier:

Les items bouton de commande sont de forme rectangulaire.
Pour travailler avec des bouton de forme irrégulière, ce type d'item ne convient pas, mais plusieurs techniques de contournement sont possibles.

1- L'image en fond d'écran:

Le but est de placer une image en fond d'écran (Edition->Importer->Image) et de gérer la position X et Y de la souris dans un déclencheur de niveau forme : When-Mouse-Click

Il est important de vérifier en tout premier point que le système de coordonnées est positionné à : Pixel car c'est dans ce système que les variables :system.mouse_x_pos et :system.mouse_y_pos sont valorisées.

- Placez l'image sur le canevas avec le menu d'importation.
- Placez par dessus des rectangles dont les dimensions correspondent à la zone de « sensibilité » de l'image .
- Notez les coordonnées physiques (position x, position y, largeur, hauteur) de ces cadres, puis supprimez-les.
- Dans le déclencheur When-Mouse-Click, vérifiez si la position de la souris au moment du clic est située dans l'une des zones de sensibilité

 
Sélectionnez

Declare
    LN$Posx pls_integer := :system.mouse_x_pos ;
    LN$Posy pls_integer := :system.mouse_y_pos ;
Begin
    If  LN$Posx between 20 and 120
    And LN$posy between 65 and 200 Then
        Message('Image cliquée', acknowledge );
    End if ;
End ;
Image non disponible


2- L'item de type Image:

Cette solution est moins coûteuse en terme de développement mais nécessite que l'image soit présente dans le système de fichiers.

- Placer un item de type image sur le canevas en fixant les propriété de couleur et relief à NULL
- Charger l'image dans l'item au chargement de la forme en utilisant l'instruction Read_Image_File():

Déclencheur : When-New-Form-Instance
Sélectionnez

-- When-New-Form-Instance --
Read_Image_File( 'D:\Cours\tuto_forms\Photos\test.gif','ANY', 'BLOC6.IMG') ;

- Placer un déclencheur When-Image-Pressed sur l'item image.
Ce déclencheur remplace le When-Button-Pressed d'un bouton et ne nécessite aucun code de gestion de la position de la souris.


Configurer Forms pour afficher les icônes

Lorsque vous utiliser des images sur les boutons de commande, il faut indiquer à Forms le chemin d'accès aux fichiers images.
Ce chemin est indiqué dans un répertoire virtuel (virtual directory).

Avec Application Server, il faut configurer le fichier:
<ORACLE_HOME>/forms90/server/forms90.conf

Ajouter l'alias faisant correcpondre le répertoire virtuel avec le chemin physique:

Pour l'exemple nous stockons les fichiers images dans le répertoire : d:\icons
Nous ajoutons donc la ligne suivante:
# Virtual Path pour les icones
AliasMatch ^/forms90/icons/(..*) « d:\icons/$1 »


Avec Developer Suite, il faut configurer le fichier:
%DEV_SUITE_HOME%\j2ee\Oracle9iDS\application-deployments\forms\forms90web\orion-web.xml

<virtual-directory virtual-path=« /icons » real-path=« D:\icons » />


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.