Le guide Oracle Forms 9i/10g


précédentsommairesuivant

XXII. Les items case à cocher

XXII-A. Définition

Un item de ce type permet de représenter deux états différents.
L'un lorsque la boite est cochée, l'autre lorsqu'elle est décochée

A l'inverse des boutons options, les boites à cocher sont indépendantes les unes par rapport aux autres.

XXII-B. Concept

Ce type d'item est idéal pour représenter un choix binaire.
Soit la case est cochée et représente une valeur, soit elle ne l'est pas et représente une autre valeur. C'est typiquement le choix de type Oui/Non.

Deux propriétés de ce type d'item permettent de gérer ce choix:

  • Valeur lorsque cochée indique la valeur stockée dans l'item lorsque l'utilisateur coche la case
  • Valeur lorsque non cochée indique la valeur stockée dans l'item lorsque l'utilisateur décoche la case

Le type de données peut être CHAR, NUMBER ou DATE

XXII-C. Mise en œuvre

Créer une Case à cocher

Depuis le navigateur d'objet:

Pointer le nœud Eléments du bloc désiré puis sur le bouton Image non disponible
La propriété Type d'élément doit être valorisée à Case à cocher


Depuis l'éditeur de présentation:

Sélectionner le canevas et le bloc de réception de l'item.
Cliquer l'icône Image non disponible
Dessiner sur le canevas un rectangle avec la souris pour délimiter les dimensions de l'item


Propriétés spécifiques d'une case à cocher:

Libellé représente le libellé situé à droite de la case. A la différence de l'invite, le libellé est cliquable (il fait parti de la zone sensible permettant de cocher/décocher l'item).
Cette propriété peut être modifiée à l'exécution via l'instruction :
Set_Item_Property( nom_item | id_item, LABEL, libelle).
Valeur lorsque cochée représente la valeur de l'item lorsque l'utilisateur coche la case.
Cette propriété ne peut être modifiée à l'exécution.
Valeur lorsque non cochée représente la valeur de l'item lorsque l'utilisateur décoche la case.
Cette propriété ne peut être modifiée à l'exécution.
Correspondance d'autre valeur indique quel aspect (et donc quelle valeur) sera stockée dans l'item lorsque la donnée stockée ne correspond pas aux valeurs cochée et décochée:

  • Non autorisé toute autre valeur est interdite et génère une erreur
  • Cochée la valeur et celle correspondant à la case lorsqu'elle est cochée
  • Non cochée la valeur et celle correspondant à la case lorsqu'elle est décochée

Cette propriété ne peut être modifiée à l'exécution.

Exemple:
La colonne : Actif de votre table indique si le client a passé une commande les 6 derniers mois. Cette colonne peut prendre deux valeurs : O/N

 
Sélectionnez

ACTIF Varchar2(1) CHECK ACTIF IN ('O', 'N')

La propriété cochée de l'item sera donc valorisé à O
La propriété non cochée sera valorisée à N
La propriété correspondance autre valeur sera valorisée à non cochée


Remarque:
Si la propriété est positionnée sur Non autorisé et que des colonnes en base ont une valeur différente de celles spécifiées, l'enregistrement n'est pas ramené en query.


Lecture de la valeur de l'item:

Pour connaître l'état de l'item il suffit d'interroger son contenu
LC$Valeur := :BLOC.ITEM_CHK_BOX ;

Changement de la valeur de l'item:

La valeur insérée doit correspondre à la valeur lorsque cochée ou non cochée
:BLOC.ITEM_CHK_BOX := 'O' ;

Indépendamment de la valeur stockée dans l'item, il est possible de savoir si la case est cochée ou non avec la fonction:
Boolean Checkbox_Checked( nom_item | id_item ) ;
Cette fonction retourne TRUE si la case est cochée sinon elle retourne FALSE.


Les déclencheurs liés aux cases à cocher:

When-Checkbox-Changed se déclenche dès que l'utilisateur coche ou décoche la case en cliquant avec la souris ou en utilisant le clavier (touche espace).
Utilisez ce déclencheur lorsque vous voulez implémenter une action lors du changement d'état de la case.

Déclencheur : When-Checkbox-Changed
Sélectionnez

Begin
   If :BLOCK.ITEM_CHK_BOX = 'O' Then
      Message('case cochée');
   Else
      Message('case non cochée');
   End if ;
End ;

XXII-D. Techniques avancées

Une case à cocher peut être utilisée, non pas pour spécifier la valeur d'une colonne d'un enregistrement, mais pour indiquer un choix exclusif entre plusieurs enregistrements.

Par exemple, dans les lignes d'une facture, vous avez la possibilité d'accorder une remise de 10% sur un et un seul article de la commande.
Chaque enregistrement du bloc contient donc une boite à cocher, mais une seule peut être cochée à la fois.
Il faut donc, à chaque fois qu'une case d'un enregistrement est cochée, décocher la case des autres enregistrements.
Partons du principe que la valeur de l'item (:BLOC.CB1) est 'O' lorsqu'il est coché et 'N' lorsqu'il ne l'est pas.

Voici comment implémenter le déclencheur : When-Checkbox-Changed attaché à l'item CB1:

Déclencheur : When-Checkbox-Changed
Sélectionnez

Declare
   -- Enregistrement en cours de modification --
   LN$CurRec pls_integer := :system.cursor_record ;
   LN$Rec    pls_integer := 1 ;
Begin
   If :BLOC.CB1 = 'O' Then
      -- Premier enregistrement --
      First_record ;
      Loop
         If LN$Rec <> LN$CurRec Then
            -- enregistrement <> enregistrement courant --
            :BLOC.CB1 := 'N' ;
         End if ;  
         If :system.last_record = 'TRUE' Then
            Exit ;
         End if ;
         -- Enregistrement suivant --
         Next_record ;
         LN$Rec := LN$Rec + 1 ;
      End loop ;
      -- Retour à l'enregistrement en cours --         
      Go_Record( LN$CurRec );
         
   End if ;
End ;

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

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.