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

Le guide Oracle Forms 9i/10g

Date de publication : Juin 2005




Les items bouton de commande
Définition
Concept
Mise en oeuvre
Techniques avancées


Les items bouton de commande


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.


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.


Mise en oeuvre

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
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
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, Post-Record, Post-Block, 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.


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é multi-lignes

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 :

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


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 Post-Query du bloc DEPT, nous souhaitons donner à chaque bouton un aspect particulier selon le code du département:

-- 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:


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é

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 ;


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
-- 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" />



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.