Professional Documents
Culture Documents
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
FORUM ORACLE F.A.Q ORACLE TUTORIELS ORACLE TUTORIELS SQL SCRIPTS SQL LIVRES ORACLE QUIZ
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
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
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
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)
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
If GET_ITEM_PROPERTY(LC$Item , ITEM_TYPE) in ('CHECKBOX','RADIO GROUP') then set_item_property(); Pour appliquer les proprits l'item
set_tab_page_property(lc$tabcan,VISUAL_ATTRIBUTE,'VA_PAGE'); Le balayage des diffrents items d'un bloc est ralis dans la boucle suivante :
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;
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
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.