Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUM ORACLE F.A.Q ORACLE TUTORIELS ORACLE TUTORIELS SQL SCRIPTS SQL LIVRES ORACLE QUIZ BLOG ORACLE

FJTable v2

Date de publication : Août 2005

Par SheikYerbouti (Page d'accueil)
 

FJTable - des blocs multi-lignes Forms 9i / 10g au look "Java Swing JTable"
(version persistante)

 English version


1. Présentation
2. Comment invoquer la palette d'options dans un bloc multi-lignes ?
3. Quelques copies d'écran
4. Les composants de l'outil
5. Procédure d'installation
6. Mise en oeuvre dans vos modules Forms
7. Réglages spéciaux
8. Traductions
9. Problèmes répertoriés


1. Présentation

Cet outil permet de donner à tous blocs Forms multi-lignes un comportement semblable à un composant Java Swing JTable.
Il permet également à l'utilisateur de sauver/retrouver ses derniers réglages enregistrés en base pour les utilisations futures.

Lorsque l'utilisateur recharge un écran, les blocs sont affichés automatiquement selon les derniers réglages enregistrés.
Il s'agit donc d'une version "persistante" de l'outil.


Dans l'application Forms, lorsque le curseur est situé dans un bloc multi-lignes, l'utilisateur peut effectuer les opérations suivantes:

  • Permuter les colonnes entre elles
  • Augmenter / réduire la largeur de chaque colonne
  • Trier le bloc sur n'importe quelle colonne basée (ASC/DESC)
  • Changer le libellé des colonnes
  • Enregistrer ses réglages en base
  • Restaurer ses derniers réglages
  • Restaurer les réglages d'origine

Les réglages sont enregistrés dans 2 tables Oracle:

  • FJT_BLOCK qui stocke les informations des blocs
  • FJTABLE qui stocke les informations des items
Chaque ligne de ces tables possède un identifiant utilisateur (chaque utilisteur peut sauver/retrouver ses propres réglages).

Cet identifiant (USER_ID) provient du paramètre Forms :PARAMETER.PM$USER_ID.

L'identifiant : 0 est réservé aux réglages d'origine (ceux fixés à la conception). N'attribuez jamais cet identifiant à un utilisateur.

La valeur par défaut du paramètre est : 1


Cet outil a été testé avec les configurations suivantes:

  • Forms 9i et Database 9i
  • Forms 10g et Database 10g

Si vous utilisez toujours une ancienne version, n'oubliez-pas que vous pouvez télécharger gratuitement (pour test uniquement) une version plus récente sur OTN.


2. Comment invoquer la palette d'options dans un bloc multi-lignes ?

Lorsque le curseur est situé dans un bloc multi-lignes, l'utilisateur peut afficher la palette d'options en double-cliquant dans une des colonnes du bloc.
Si un accélérateur clavier a été spécifié, l'utilisateur doit presser cette touche pendant le double-clic.

Si vous utilisez déjà le double-clic dans votre application pour un autre usage, vous devez définir un accélérateur clavier pour accéder à la palette d'options.

L'accélérateur est lu depuis le paramètre Forms : :PARAMETER.PM$SHIFTSTATUS

Les valeurs possibles sont les suivantes:

  • Shift+
  • Caps Lock+
  • Control+ (valeur par défaut)
  • Alt+
  • Command+
  • Super+
  • Hyper+
Si vous ne souhaitez pas utiliser d'accélérateur, laissez le paramètre vide.


3. Quelques copies d'écran

Le premier paneau de la palette d'options est identique à celui de la version 1 (Voir la version 1)

Pour accéder aux nouvelles fonctionnalités, cliquez le bouton Next options....


L'utilisateur peut modifier le libellé de la colonne


Il peut également:

  • Enregistrer les réglages en cours
  • Restaurer ses derniers réglages
  • Restaurer les réglages d'origine

Les réglages sont toujours relatifs au bloc en cours


4. Les composants de l'outil

L'outil se compose des objets suivants:

  • Une librairie PL/SQL contenant un package ( fjtable_2.pll )
  • Une librairie d'objets contenant un groupe d'objets ( obj_fjtable_2.olb )
  • Un script SQL de création des objets en base ( fjtable_install.sql )


5. Procédure d'installation


  • Téléchargez le fichier FJTable_2.zip

  • Décompressez le fichier FJTable_2.zip

  • Ouvrez le script SQL fjtable_install.sql

    • Ajustez les ordres de création de tables selon vos propres spécifications (tablespace, extents, etc.)
    • Exécutez le script

  • Compilez la librairie PL/SQL fjtable_2.pll
Sécurité des données

Si vous êtes intransigeants sur la sécurité des données, effectuez les opérations suivantes:

  • Crééz un schéma spécial pour stocker les tables et la package PKG_FJTABLE
  • Crééz des synonymes sur les tables et le package
  • Attribuez le droit SELECT sur les tables aux utilisateurs
  • Attribuez le droit EXECUTE sur la package aux utilisateurs
De cette manière, les utilisateur pourront interroger les tables mais ne pourront rien faire d'autre.
Les opérations d'écritures sont réalisées par le package.


Modification d'un bloc

Lorsque vous modifiez un bloc de données déjà enregistré en table, vous perdez la synchronisation.
Dans ce cas, vous devez supprimer des tables les anciennes informations enregistrées pour ce bloc.

Pour supprimer ces informations, vous pouvez utiliser la procédure PKG_FJTABLE.Remove_Object().

Procédure Remove_Object
PROCEDURE Remove_Object ( PC$Module IN VARCHAR2, PC$Block IN VARCHAR2 DEFAULT NULL ) ;
Si vous ne transmettez pas l'argument PC$Block, tous les blocs du module concerné sont effacés.

Exemple:

Vous avez modifié le bloc EMP du module EMPLOYES. Exécutez l'instruction suivante:

EXECUTE PKG_FJTABLE.Remove_Object( 'EMPLOYES', 'EMP' ) ;


Identification des utilisateurs

L'outil FJTable stockant les réglages pour chaque utilisateur, celui-ci doit être clairement identifié via le paramètre PM$USER_ID.
Ce paramètre doit être passé de forme en forme et peut nécéssiter l'adaptation de vos instructions CALL_FORM(), NEW_FORM() et OPEN_FORM() existantes.

La valeur 0 est réservée aux réglages d'origine et ne doit pas être attribuée à un utilisateur.


Si vous n'implémentez pas d'identification de vos utilisteurs, ils verront et modifieront tous les mêmes réglages. (La valeur par défaut du paramètre étant 1).

6. Mise en oeuvre dans vos modules Forms


  • Ouvrez votre module

  • Attachez la librairie fjtable_2.pll

  • Ouvrez la librairie d'objets obj_fjtable_2.olb

  • Glissez le groupe d'objets GRP_FJTABLE_xxx dans votre forme (noeud : Groupes d'objets) en cliquant le bouton copie par référence

    Selon le système de coordonnées défini dans votre module, glissez le Groupe d'objets correspondant:

    • GRP_FJTABLE_PIXEL
    • GRP_FJTABLE_CM
    • GRP_FJTABLE_INCH
    • GRP_FJTABLE_POINT
    • GRP_FJTABLE_CHAR

  • Déplacez le bloc BL_JFMENU en fin de liste des blocs dans le navigateur d'objets

  • Déplacez le canevas CV_JFMENU en fin de liste des canevas dans le navigateur d'objets

  • Editez le trigger When-New-Form-Instance pour ajouter l'appel de la procédure d'initialisation:
  • When-New-Form-Instance
    PKG_JTABLE.Init ( PC$Can_Resize_Window => :PARAMETER.PM$RESIZEWINDOW, PC$Can_Resize_Canvas => :PARAMETER.PM$RESIZECANVAS, PN$Initial_Version => :PARAMETER.PM$INITIAL_VERSION ) ;
  • Compilez tout et lancez la forme


7. Réglages spéciaux

Si vous utilisez déjà le double-clic dans un trigger de niveau bloc ou item:

  • Positionnez la propriété du trigger: Ordre d'exécution à : Après

  • Assurez-vous que le paramètre PM$SHIFTSTATUS Contient un accélérateur.

Le paramètre :PARAMETER.PM$RESIZEWINDOW

Il est utilisé pour indiqué si la fenêtre peut être agrandie lorsque l'utilisateur agrandit la taille des colonnes.
La valeur par défaut de ce paramètre est : 'O'. Si vous ne souhaitez pas que la fenêtre soit agrandie à l'exécution, indiquez 'N' dans ce paramètre.


Le paramètre :PARAMETER.PM$RESIZECANVAS

Il est utilisé pour indiqué si le canevas peut être agrandi lorsque l'utilisateur agrandit la taille des colonnes.
La valeur par défaut de ce paramètre est : 'O'. Si vous ne souhaitez pas que le canevas soit agrandi à l'exécution, indiquez 'N' dans ce paramètre.


Le paramètre :PARAMETER.PM$INITIAL_VERSION

Il est utilisé pour indiquer si la forme provient d'une ancienne version (inférieure à 9i) migrée en 9i ou 10g.
La valeur par défaut de ce paramètre est : 9.
Si votre forme provient d'un processus de migration d'une version antérieure, indiquez dans ce paramètre un chiffre inférieur à 9.


8. Traductions

Certaines chaînes de caratères peuvent être traduites dans une autre langue.

Il s'agit du libellé, hint et tooltip des boutons de la palette d'options ainsi que certains messages affichés pendant l'exécution.

Ces chaînes de caractères sont stockées dans les spécification et le corps du package PKG_JTABLE de la librairie PL/SQL.


9. Problèmes répertoriés


  • Les versions actuelles de Forms ne permettent pas de manipuler à l'exécutions les objets graphiques (frames).
    Ne les utilisez pas dans vos blocs multi-lignes.
    Lorsque l'utilisateur agrandit la taille d'une colonne, la taille du canevas (et de la fenêtre) est automatiquent agrandie, mais pas le cadre graphique qui entoure le bloc !

Une solution est de remplacer le cadre par un trait horizontal en entête du bloc.


  • Ordre des items dans le navigateur d'objets

    Les items doivent être ordonnées selon leur coordonnée X sur le canevas

    Exemple correct:

  • Item Ordre Position X
    Item1 1 50
    Item2 2 100
    Item3 3 140
    Exemple incorrect:
    Item Ordre Position X
    Item1 1 50
    Item2 2 140 (cet item doit être glissé après l'item3 dans le navigateur d'objets)
    Item3 3 100


  • Lorsqu'un bloc multi-lignes n'affiche pas d'ascenceur, Forms génère une erreur FRM-99999

    Le problème vient de l'instruction Get_Block_Property( ..., BLOCKSCROLLBAR_X_POS ).

    Si votre forme contient des blocs multi-lignes pour lesquels vous n'affichez pas d'ascenceur, modifiez le trigger de niveau form ON-ERROR ou créez le:
  • ON-ERROR
    Declare LN$ErrCode Number := ERROR_CODE ; LC$ErrType VArchar(3) := ERROR_TYPE; LC$ErrText Varchar2(256) := ERROR_TEXT ; Begin If LN$ErrCode = 99999 and LC$ErrText like '%1413%' Then -- Error on Get_Block_Property( ..., BLOCKSCROLLBAR_X_POS ) -- -- If Block does not have Scrollbar defined -- Null ; Else Bell ; Message( LC$ErrType || '-' || TO_CHAR(LN$ErrCode) || ': ' || LC$ErrText); Raise form_trigger_failure ; End if ; End ;


  • Parce qu'il n'est pas possible d'obtenir, à l'exécution, la liste des boutons du Radio Group, ce type d'item ne peux pas être redimensionné dynamiquement.

    Lorsqu'un bloc multi-lignes contient un Radio group, la palette d'options ne peut pas être invoquée.



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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Responsable bénévole de la rubrique Oracle : Vincent Rogier - Contacter par EMail :
Vos questions techniques : forum d'entraide Oracle - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.