FJTable v1

SheikYerbouti

FJTable - des blocs multilignes Forms 9i / 10g au look « Java Swing JTable »
(version non persistante)

English version ♪

- Titre : FJTable v1

- Auteur : SheikYerbouti

- Parution : 1 août 2005

- Licence : 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'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- 1. Présentation

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

- 3. Quelques copies d'écran

- 4. Les composants de l'outil

- 5. Procédure d'installation

- 6. Mise en œuvre 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 à tout bloct multiligne un comportement semblable à un composant Java Swing JTable.

Dans l'application Forms, lorsque le curseur est situé dans un bloc multiligne, 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).

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 multiligne ?

Lorsque le curseur est situé dans un bloc multiligne, 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

Dans cet exemple, l'utilisateur veut augmenter la largeur de la colonne Job.
Il (Ctrl+) double-clique dans la colonne Job…

… puis presse le bouton Increase size (+) autant de fois que nécessaire. (l'incrément est d'environ 1 caractère de large).

Aussi longtemps que la palette d'options est affichée, l'utilisateur peut effectuer toutes les opérations sur la colonne sélectionnée.

Lorsqu'il veut revenir au bloc, il clique le bouton Cancel.

Maintenant, il veut déplacer la colonne Sal juste après la colonne Job.
Il (Ctrl+) double-clique dans la colonne Sal puis presse deux fois le bouton << Move to left.

Finalement, il souhaite trier le bloc sur la colonne Ename dans l'ordre ascendant.
Il (Ctrl+) double-clique dans la colonne Ename puis clique le bouton Set Order by ASC.

4 - Les composants de l'outil

L'outil se compose des objets suivants :

- une librairie PL/SQL contenant un package ( fjtable.pll ) ;

- une libraire d'objets contenant un groupe d'objets ( obj_fjtable.olb ).

5 - Procédure d'installation

- Téléchargez le fichier FJTable.zip

- Décompressez le fichier FJTable.zip

- Compilez la librairie PL/SQL fjtable.pll

6 - Mise en œuvre dans vos modules Forms

- Ouvrez votre module

- Attachez la librairie fjtable.pll

- Ouvrez la librairie d'objets obj_fjtable.olb

- Glissez le groupe d'objets GRP_FJTABLE_xxx dans votre forme (nœud : 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

- Éditez 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 indiquer 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 indiquer 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 indiqué 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 chaines de caractères peuvent être traduites dans une autre langue.

Il s'agit du libellé 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écifications 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écution les objets graphiques (frames)
Ne les utilisez pas dans vos blocs multilignes.
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 trait horizontal en entête du bloc.

- Ordre des items dans le navigateur d'objets

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

Exemple correct :

Item

Position X

Item1

50

Item2

100

Item3

140

Exemple incorrect :

Item

Position X

Item1

50

Item2

140 (cet item doit être glissé après l'item3 dans le navigateur d'objets)

Item3

100

- Lorsqu'un bloc multiligne n'affiche pas d'ascenseur, 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 multilignes pour lesquels vous n'affichez pas d'ascenseur, 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 peut pas être redimensionné dynamiquement.

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