0% ont trouvé ce document utile (0 vote)
3 vues15 pages

Tutorial Forms 1

Ce tutoriel présente comment permettre aux utilisateurs de personnaliser les couleurs des écrans dans Oracle Forms à l'exécution. Il décrit les composants nécessaires, les procédures de colorisation, et les étapes d'installation pour mettre en œuvre cette fonctionnalité. La première partie se concentre sur la manipulation dynamique des objets et la gestion des préférences utilisateurs via une table dédiée.

Transféré par

Adnane Naim
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues15 pages

Tutorial Forms 1

Ce tutoriel présente comment permettre aux utilisateurs de personnaliser les couleurs des écrans dans Oracle Forms à l'exécution. Il décrit les composants nécessaires, les procédures de colorisation, et les étapes d'installation pour mettre en œuvre cette fonctionnalité. La première partie se concentre sur la manipulation dynamique des objets et la gestion des préférences utilisateurs via une table dédiée.

Transféré par

Adnane Naim
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Tutoriel Oracle Forms : manipulations

dynamiques 1ère partie

Par SheikYerbouti

Date de publication : 16 février 2004

Laissez vos utilisateurs personnaliser les écrans de leurs applications


Oracle Forms
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

Pré-requis..................................................................................................................................................................... 3
1 - Introduction.............................................................................................................................................................4
2 - Principe...................................................................................................................................................................5
3 - Liste des objets modifiables dynamiquement........................................................................................................6
4 - Description des composants..................................................................................................................................7
4.1 - La table des préférences utilisateurs............................................................................................................ 7
4.2 - L'écran de sélection des couleurs.................................................................................................................8
4.3 - La librairie Forms [Link].............................................................................................................. 8
4.4 - Une Forme de référence contenant les attributs visuels, l'attachament de la librairie, le paramètre UTI_ID
et les déclencheurs référencés depuis la librairie d'objets.................................................................................. 10
4.5 - La librairie d'objets contenant la référence des éléments constitutifs......................................................... 11
4.6 - Le menu Forms pour lancer l'écran de modification des couleurs..............................................................11
5 - Indications sur la fonction de colorisation........................................................................................................... 12
6 - Installation du matériel......................................................................................................................................... 13
7 - Exercice................................................................................................................................................................14
Remerciements.......................................................................................................................................................... 15

-2-
[Link]
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

Pré-requis

Cette fonction est développée sous Forms 9i et testée avec un noyau [Link].0 Il est toutefois possible de concevoir
un équivalent adapté à la version 6i par copier-coller des différents constituants
N'hésitez pas à consulter le complément de cet article avec un écran de sélection de couleurs qui utilise le javabean
[Link]

-3-
[Link]
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

1 - Introduction

L'objet de ce tutoriel est de voir comment modifier les couleurs d'une forme pendant l'exécution afin de permettre à
l'utilisateur de personnaliser l'apparence des écrans de son application Oracle Forms.

Les concepts abordés dans cette partie concernent :

• La navigation dans les blocs


• Lecture et positionnement des propriétés des items
• Manipulation des attributs visuels
• Appel d'un écran depuis un menu
• Centralisation du traitement en librairie

Le matériel nécessaire à la mise en œuvre de cette fonctionnalité est constitué des éléments suivants

• Une forme de référence pour base des futurs écrans


• Une librairie PL/SQL Forms
• Un menu Forms (en français) contenant l'appel de l'écran de sélection des couleurs
• Un écran Forms de sélection des couleurs
• Une librairie d'objets
• Un écran de test

L'intégralité de ce matériel est téléchargeable ici et libre de toute utilisation, déploiement et modification

-4-
[Link]
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

2 - Principe

Les couleurs des différents objets de la forme sont stockées dans une table contenant autant de lignes que
d'utilisateurs
Lors du chargement de l'écran, l'ensemble de ses objets est balayé et colorisé selon les choix enregistrés
Un écran de sélection des couleurs est mis à disposition de l'utilisateur pour lui permettre à tout moment de modifier
ses préférences et de les enregistrer

-5-
[Link]
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

3 - Liste des objets modifiables dynamiquement

Tous les types d'items ainsi que l'invite associée sont modifiables dynamiquement
Les objets graphiques tels que les lignes et encadrement ne sont pas modifiables

-6-
[Link]
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

4 - Description des composants

4.1 - La table des préférences utilisateurs

CREATE TABLE UTIL_PREFS


(
COD_UTIL NUMBER(5) PRIMARY KEY,
C_FOND VARCHAR2(20),
C_LIBELLE VARCHAR2(20),
C_CADRE VARCHAR2(20),
C_BOUTON VARCHAR2(20),
C_TBOUTON VARCHAR2(20),
C_CURREC VARCHAR2(20),
C_TCURREC VARCHAR2(20)
) ;

Cette table doit avoir au moins une ligne avec le COD_UTIL = 0.


Cette ligne est sélectionnée par défaut lorsque l'utilisateur n'a pas encore personnalisé ses couleurs.

INSERT INTO UTIL_PREFS ( COD_UTIL, C_FOND, C_LIBELLE, C_CADRE, C_BOUTON, C_TBOUTON, C_CURREC,
C_TCURREC )
VALUES
( 0, 'r128g128b192', 'r255g255b64', 'r128g255b255', 'r255g192b128', 'r64g64b192', 'r128g255b255', 'r128g128b255')

L'utilisateur est identifié par son code numérique (COD_UTIL)


La table permet de stocker :

• la couleur du canvas (C_FOND)


• la couleur des onglets (C_CADRE)
• la couleur des invites (C_LIBELLE)
• la couleur du fond des boutons (C_BOUTON)
• la couleur du texte des boutons (C_TBOUTON)
• la couleur du fond de l'enregistrement courant (C_CURREC)
• la couleur du texte de l'enregistrement courant (C_TCURREC)

-7-
[Link]
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

4.2 - L'écran de sélection des couleurs

[Link]
Le bloc Objets permet de sélectionner les différents objets sur lesquels l'utilisateur applique une couleur sélectionnée
dans l'onglet Couleurs

4.3 - La librairie Forms [Link]

Contient le package PKG_COULEURS de colorisation des items, ainsi que 2 procédures permettant de gérer la
colorisation des items interrogeables (QUERY_ALLOWED) lors d'une interrogation (ENTER-QUERY) Debut_query()
et Fin_query().
Ces deux procédures sont appelées par les trigger KEY-EXEQRY et KEY-ENTQRY de la forme de
référence(FORM_REF.FMB).
Le package PKG_COULEURS

PACKAGE PKG_COULEURS IS

PROCEDURE change_couleur;
PROCEDURE set_block_couleurs_libelles;
PROCEDURE set_bouton_couleur;
PROCEDURE set_current_record;

GC$C_FOND UTIL_PREFS.C_FOND%Type ;
GC$C_LIBELLE UTIL_PREFS.C_FOND%Type ;
GC$C_CADRE UTIL_PREFS.C_FOND%Type ;
GC$C_BOUTON UTIL_PREFS.C_FOND%Type ;
GC$C_TBOUTON UTIL_PREFS.C_FOND%Type ;
GC$C_CURREC UTIL_PREFS.C_FOND%Type ;

-8-
[Link]
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

GC$C_TCURREC UTIL_PREFS.C_FOND%Type ;

END;

La procédure change_couleurs lit les préférences de l'utilisateur dans la table UTIL_PREFS, adapte les couleurs
des attributs visuels
et appelle les procédures spécifiques de colorisation.
La procédure set_block_couleurs_libellés colorise tous les items de la form à l'exception des boutons de commande
La procédure set_bouton_couleur colorise les boutons de commande
La procédure set_current_record applique l'attribut visuel à la propriété CURRENT_RECORD_ATTRIBUTE de
chaque
block multi-lignes(RECORDS_DISPLAYED > 1).

LC$Block := get_form_property( NAME_IN('System.Current_Form'), FIRST_BLOCK ) ;


while LC$Block is not null Loop -- pour chaque block --
LN$NbRec := get_block_property(LC$BLOCK, RECORDS_DISPLAYED) ;
If Nvl(LN$NbRec,1) > 1 Then
.......

Les principales fonctions utilisées sont :


get_form_property();
ici pour se positionner sur le premier block de la form

LC$Block := get_form_property( NAME_IN('System.Current_Form'), FIRST_BLOCK ) ;

set_va_property() ;
pour affecter aux différents attributs visuels les couleurs de l'utilisateur
get_block_property();
pour se positionner sur le premier item

lc$itemdeb := get_block_property(LC$BLOCK, FIRST_ITEM) ;

get_item_property();
pour tester le type de l'item

If GET_ITEM_PROPERTY(LC$Item , ITEM_TYPE) in ('CHECKBOX','RADIO GROUP') then

set_item_property();
Pour appliquer les propriétés à l'item

set_item_property(LC$item, VISUAL_ATTRIBUTE, 'VA_CHECKBOX');

set_canvas_property();
Pour appliquer les propriétés au canvas

set_canvas_property(lc$canvas,VISUAL_ATTRIBUTE,'VA_FOND');

set_tab_page_property();
Pour appliquer les propriétés aux onglets

set_tab_page_property(lc$tabcan,VISUAL_ATTRIBUTE,'VA_PAGE');

-9-
[Link]
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

Le balayage des différents items d'un bloc est réalisé dans la boucle suivante :

LC$Block := get_form_property( NAME_IN('System.Current_Form'), FIRST_BLOCK ) ;


while LC$Block is not null Loop -- pour chaque block --
lc$itemdeb := get_block_property(LC$BLOCK, FIRST_ITEM) ;
while lc$itemdeb is not null loop -- pour chaque item --
lc$item := LC$BLOCK || '.' || lc$itemdeb ;
………………….
lc$itemdeb := get_item_property(lc$item, NEXT_NAVIGATION_ITEM );
End loop ;
LC$Block := get_block_property( LC$Block, NEXTBLOCK ) ;
End loop ;

4.4 - Une Forme de référence contenant les attributs visuels, l'attachament de la librairie, le
paramètre UTI_ID et les déclencheurs référencés depuis la librairie d'objets.

Chaque écran de l'application doit avoir un paramètre :PARAMETER.UTI_ID qui contient le code utilisateur
ainsi qu'un appel à la fonction du package de la librairie placé dans le trigger WHEN-NEW-FORM-INSTANCE :
PKG_COULEURS.Change_couleur ;
La librairie [Link] doit être attachée à chaque forme.
L'idéal est de référencer vos écran à partir de FORM_REF.FMB

- 10 -
[Link]
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

Conception d'un nouvel écran


Si vous partez de zéro, le plus simple est de faire une copie de la forme de référence comme base de développement
du nouvel écran.
Si vous vous appuyez déjà sur une forme de référence, glissez le groupe d'objets de la librairie d'objets dans la
section Groupes d'objets de votre forme de référence. Faites un attachement par Référence plutôt que par Copie et
attachez la librairie [Link]
Si vous générez vos écrans depuis Oracle Designer, indiquez la forme de référence dans la propriété Form Template
ainsi que la librairie objets dans la propriété Object Library Template.

4.5 - La librairie d'objets contenant la référence des éléments constitutifs

OLB_COULEURS.OLB
Ces éléments sont regroupés dans un groupe d'objets nommé GRP_COULEURS

4.6 - Le menu Forms pour lancer l'écran de modification des couleurs

MENU_REF.MMB
Il est attaché à la forme TEST_COULEURS et contient l'option Changer les couleurs dans le menu Edition

Declare
pl_id PARAMLIST;
pl_name VARCHAR2(10);
BEGIN
-- Création de la liste de paramètres --
pl_name := 'temp';
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);
IF ID_NULL(pl_id) THEN
MESSAGE('Erreur : Echec de l''exécution de la procédure PL/SQL associée au bouton');
RAISE FORM_TRIGGER_FAILURE;
END IF;
-- Passage du code utilisateur --
add_parameter(pl_id, 'UTI_ID', TEXT_PARAMETER,name_in('PARAMETER.UTI_ID'));

-- Appel de l'écran de choix des couleurs --


call_form('COULEURS', HIDE, DO_REPLACE, NO_QUERY_ONLY, SHARE_LIBRARY_DATA,pl_id);
-- Prise en compte immédiate des nouvelles couleurs --
PKG_COULEURS.Change_couleur ;

IF NOT form_success THEN


MESSAGE('Erreur : Appel de l''application Forms impossible COULEURS');
RAISE FORM_TRIGGER_FAILURE;
END IF;
END;

- 11 -
[Link]
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

5 - Indications sur la fonction de colorisation

Les items saisissables sont indiqués par une couleur de fond blanc
(Il est inutile d'utiliser des Display_Item pour les champs non modifiables.
En effet ceux-ci sont non naviguables. Par conséquent on ne peux pas y faire entrer le curseur pour faire défiler
le contenu,
ni pour des opérations de copier-coller. Utilisez plutôt des Text_Item dont les propriétés INSERT et UPDATE sont
positionnées à FALSE)
Les items non saisissables sont indiqués par une couleur de fond gris
Les items obligatoires sont indiqués par une invite en caractères gras.
Si vous utilisez une charte graphique particulière pour mettre en relief certains composants ( Items de
totalisation soulignés par une couleur particulière, montants négatifs colorés en rouge, etc.) Il faut indiquer
à la procédure de colorisation de ne pas traiter ces éléments.
Pour cela, il suffit de faire précéder le texte de la propriété TOOLTIP (Bulle d'information) des 3 caractères :
NCC
Ceux-ci seront bien évidemment éliminés pour un affichage correct à l'exécution

- 12 -
[Link]
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

6 - Installation du matériel

Copier et décompresser le fichier forms_couleurs.zip (130 Ko)dans un répertoire de votre station de travail
Adapter la base de registre pour faire pointer Forms sur ce répertoire (FORMS90_PATH)
Créer la table UTIL_PREFS et insérer la ligne de l'utilisateur 0
Compiler et générer un exécutable de la librairie [Link]
Compiler et générer un exécutable du menu MENU_REF.MMB
Compiler les formes [Link] et TEST_COULEURS.FMB
Exécuter la forme TEST_COULEURS
Cliquer l'option Changer les couleurs du menu Edition
Modifier les couleurs des objets, enregister, quitter
De retour dans l'écran TEST_COULEURS, les nouvelles préférences sont appliquées

- 13 -
[Link]
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

7 - Exercice

Un exercice intéressant consisterait à ajouter la couleur du mode Enter-Query à la table des préférences.
La réalisation de cette évolution impose les modifications suivantes :

• Ajout d'une colonne dans la table UTIL_PREFS


• Modification de l'écran de sélection des couleurs pour prendre en compte cette nouvelle colonne
• Modification de la procédure PKG_COULEURS.Change_couleur pour définir une variable de package
supplémentaire
et adapter l'attribut visuel correspondant (VA_CURRENT_RECORD)

- 14 -
[Link]
Tutoriel Oracle Forms : manipulations dynamiques 1ère partie par SheikYerbouti

Remerciements

Chaleureux remerciements à [Link] et l'équipe SGBD

- 15 -
[Link]

Vous aimerez peut-être aussi