You are on page 1of 11

Parte superior do formulrio

Parte inferior do formulrio

Forums Tutoriels Magazine FAQs Blogs Projets Chat Newsletter tudes Emploi Club Contacts

Accueil Conception Java .NET Dv. Web EDI Langages SGBD Office Solutions d'entreprise

Applications Systmes

SGBD

4D Access DB2 Firebird InterBase MySQL Oracle PostgreSQL SQL-Server Sybase

FORUM ORACLE F.A.Q ORACLE TUTORIELS ORACLE TUTORIELS SQL SCRIPTS SQL LIVRES ORACLE QUIZ

Tutoriel Oracle Forms : manipulations dynamiques 1re partie


Date de publication : 16/02/2004

Par SheikYerbouti (Page d'accueil)

Laissez vos utilisateurs personnaliser les crans de leurs applications Oracle Forms

Pr-requis 1. Introduction 2. Principe 3. Liste des objets modifiables dynamiquement 4. Description des composants

4.1. La table des prfrences utilisateurs 4.2. L'cran de slection des couleurs 4.3. La librairie Forms COULEURS.PLL 4.4. Une Forme de rfrence contenant les attributs visuels, l'attachament de la librairie, le paramtre UTI_ID et les dclencheurs rfrencs depuis la librairie d'objets. 4.5. La librairie d'objets contenant la rfrence des lments constitutifs 4.6. Le menu Forms pour lancer l'cran de modification des couleurs

5. Indications sur la fonction de colorisation

6. Installation du matriel 7. Exercice Remerciements

Pr-requis
Cette fonction est dveloppe sous Forms 9i et teste avec un noyau 9.2.0.1.0 Il est toutefois possible de concevoir un quivalent adapt la version 6i par copier-coller des diffrents constituants

N'hsitez pas consulter le complment de cet article avec un cran de slection de couleurs qui utilise le javabean Colorpicker.jar

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

Les concepts abords dans cette partie concernent : La navigation dans les blocs Lecture et positionnement des proprits des items Manipulation des attributs visuels Appel d'un cran depuis un menu Centralisation du traitement en librairie

Le matriel ncessaire la mise en uvre de cette fonctionnalit est constitu des lments suivants Une forme de rfrence pour base des futurs crans Une librairie PL/SQL Forms Un menu Forms (en franais) contenant l'appel de l'cran de slection des couleurs Un cran Forms de slection des couleurs

Une librairie d'objets Un cran de test

L'intgralit de ce matriel est tlchargeable ici et libre de toute utilisation, dploiement et modification

2. Principe
Les couleurs des diffrents objets de la forme sont stockes 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 enregistrs Un cran de slection des couleurs est mis disposition de l'utilisateur pour lui permettre tout moment de modifier ses prfrences et de les enregistrer

3. Liste des objets modifiables dynamiquement


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

4. Description des composants


4.1. La table des prfrences 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 slectionne par dfaut 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 numrique (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)

4.2. L'cran de slection des couleurs

COULEURS.FMB Le bloc Objets permet de slectionner les diffrents objets sur lesquels l'utilisateur applique une couleur slectionne dans l'onglet Couleurs

4.3. La librairie Forms COULEURS.PLL Contient le package PKG_COULEURS de colorisation des items, ainsi que 2 procdures permettant de grer la colorisation des items interrogeables (QUERY_ALLOWED) lors d'une interrogation (ENTER-QUERY)Debut_query() et Fin_query(). Ces deux procdures sont appeles par les trigger KEY-EXEQRY et KEY-ENTQRY de la forme de rfrence(FORM_REF.FMB). Le package PKG_COULEURS

PACKAGE PKG_COULEURS IS PROCEDURE PROCEDURE PROCEDURE PROCEDURE change_couleur; set_block_couleurs_libelles; set_bouton_couleur; 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 ; GC$C_TCURREC UTIL_PREFS.C_FOND%Type ;

END; La procdure change_couleurs lit les prfrences de l'utilisateur dans la table UTIL_PREFS, adapte les couleurs des attributs visuels et appelle les procdures spcifiques de colorisation. La procdure set_block_couleurs_libells colorise tous les items de la form l'exception des boutons de commande La procdure set_bouton_couleur colorise les boutons de commande La procdure set_current_record applique CURRENT_RECORD_ATTRIBUTE de chaque block multi-lignes(RECORDS_DISPLAYED > 1). l'attribut visuel la proprit

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 utilises 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 diffrents 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 proprits l'item

set_item_property(LC$item, VISUAL_ATTRIBUTE, 'VA_CHECKBOX'); set_canvas_property(); Pour appliquer les proprits au canvas

set_canvas_property(lc$canvas,VISUAL_ATTRIBUTE,'VA_FOND'); set_tab_page_property(); Pour appliquer les proprits aux onglets

set_tab_page_property(lc$tabcan,VISUAL_ATTRIBUTE,'VA_PAGE'); Le balayage des diffrents items d'un bloc est ralis 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 rfrence contenant les attributs visuels, l'attachament de la librairie, le paramtre UTI_ID et les dclencheurs rfrencs depuis la librairie d'objets.

Chaque cran de l'application doit avoir un paramtre :PARAMETER.UTI_ID qui contient le code utilisateur ainsi qu'un appel la fonction du package de la librairie plac dans le trigger WHENNEW-FORM-INSTANCE : PKG_COULEURS.Change_couleur ; La librairie COULEURS.PLL doit tre attache chaque forme. L'idal est de rfrencer vos cran partir de FORM_REF.FMB

Conception d'un nouvel cran Si vous partez de zro, le plus simple est de faire une copie de la forme de rfrence comme base de dveloppement du nouvel cran. Si vous vous appuyez dj sur une forme de rfrence, glissez le groupe d'objets de la librairie d'objets dans la section Groupes d'objets de votre forme de rfrence. Faites un attachement par Rfrence plutt que par Copie et attachez la librairie COULEURS.PLL Si vous gnrez vos crans depuis Oracle Designer, indiquez la forme de rfrence dans la proprit Form Template ainsi que la librairie objets dans la proprit Object Library Template.

4.5. La librairie d'objets contenant la rfrence des lments constitutifs OLB_COULEURS.OLB Ces lments sont regroups 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 -- Cration de la liste de paramtres -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''excution de la procdure PL/SQL associe 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 immdiate 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;

5. Indications sur la fonction de colorisation


Les items saisissables sont indiqus 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 consquent on ne peux pas y faire entrer le curseur

pour faire dfiler le contenu, ni pour des oprations de copier-coller. Utilisez plutt des Text_Item dont les proprits INSERT et UPDATE sont positionnes FALSE) Les items non saisissables sont indiqus par une couleur de fond gris Les items obligatoires sont indiqus par une invite en caractres gras.

Si vous utilisez une charte graphique particulire pour mettre en relief certains composants ( Items de totalisation souligns par une couleur particulire, montants ngatifs colors en rouge, etc.) Il faut indiquer la procdure de colorisation de ne pas traiter ces lments. Pour cela, il suffit de faire prcder le texte de la proprit TOOLTIP (Bulle d'information) des 3 caractres : NCC Ceux-ci seront bien videmment limins pour un affichage correct l'excution

6. Installation du matriel
Copier et dcompresser le fichier forms_couleurs.zip (130 Ko)dans un rpertoire de votre station de travail Adapter la base de registre pour faire pointer Forms sur ce rpertoire (FORMS90_PATH) Crer la table UTIL_PREFS et insrer la ligne de l'utilisateur 0 Compiler et gnrer un excutable de la librairie COULEURS.PLL Compiler et gnrer un excutable du menu MENU_REF.MMB Compiler les formes COULEURS.FMB et TEST_COULEURS.FMB Excuter 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 prfrences sont appliques

7. Exercice
Un exercice intressant consisterait ajouter la couleur du mode Enter-Query la table des prfrences. La ralisation de cette volution impose les modifications suivantes : Ajout d'une colonne dans la table UTIL_PREFS Modification de l'cran de slection des couleurs pour prendre en compte cette nouvelle colonne Modification de la procdure PKG_COULEURS.Change_couleur pour dfinir une variable de package supplmentaire et adapter l'attribut visuel correspondant (VA_CURRENT_RECORD)

Remerciements
Chaleureux remerciements Developpez.com et l'quipe SGBD

Responsable bnvole de la rubrique Oracle : Djug - Contacter par email

Vos questions techniques : forum d'entraide Oracle - Publiez vos articles, tutoriels et cours et rejoignez-nous dans l'quipe de rdaction du club d'entraide des dveloppeurs francophones Nous contacter - Hbergement - Participez - Copyright 2000-2011 www.developpez.com - Legal informations.

You might also like