Principe de fonctionnement
Le filtre est activé par la propriété FILTRE de l'objet Colonne.
Cette propriété autorise ou non l'affichage d'un champ en lecture seule situé sur l'en-tête de colonne, au-dessous du libellé de la colonne et qui contient la valeur du filtre.
Un menu contextuel est disponible depuis ce champ. Il contient :
Les quatre derniers filtres utilisés.
Un symbole à gauche du texte du filtre indique le type de sélection : "=" (Egal), ">" (Supérieur ou égal), "<" (Inférieur ou égal), "~" (Contient), "%" (Commence par), "!" (Différent), et "/" (Ne contient pas),
- La valeur spéciale "*" qui ne filtre aucune ligne.
- Une option "Filtre" permettant d'afficher la boîte de définition d'un filtre.
Une coche indique le filtre courant.
Remarques :
- Pour une colonne ayant une représentation en case à cocher, le menu filtre ne propose que les options "Coché", "Décoché" et "*".
- La méthode INITIALISER_CHAMP_FILTRE de l'objet Colonne réinitialise le champ filtre d'une colonne avec la valeur "*".
- La méthode INITIALISER_CHAMPS_FILTRES de l'objet Liste effectue la réinitialisation sur toutes les colonnes de la liste.
Les filtres peuvent être gérés en mode automatique ou en mode manuel.
Le mode automatique
En mode automatique, le filtrage des lignes est entièrement géré par Adélia. Il s'applique uniquement sur les lignes chargées dans la liste graphique. Les lignes filtrées sont toujours présentes dans la liste mais ne sont pas visibles. Les lignes filtrées ont leur propriété LIGNE_VISIBLE à *FAUX.
L'option "Filtre" du menu contextuel ouvre la boîte de dialogue qui permet de définir les critères de sélection.
Le mode manuel
Dans ce cas, le développeur effectue lui-même le filtrage des lignes et peut définir une boîte spécifique de définition de filtre.
Lorsque l'utilisateur clique sur l'option Filtre du menu contextuel des colonnes, cela déclenche l'événement ChoixFiltre sur la colonne. Cet événement permet au développeur d'appeler sa propre boîte de définition du filtre. Après l'appel de cette boîte de dialogue, la méthode DECLENCHER_ACTION_FILTRE doit être appelée pour déclencher l'événement ActionFiltre en indiquant la valeur interne du filtre (valeur qui identifie de manière précise le filtre voulu) et la valeur externe du filtre (valeur qui est affichée dans le menu contextuel des filtres).
Dans l'événement ActionFiltre, le développeur code le filtrage des lignes en fonction de la valeur de la propriété VALEUR_INTERNE_FILTRE. Cette propriété a été mise à jour via l'appel de la méthode DECLENCHER_ACTION_FILTRE, soit directement si c'est l'appel à cette méthode qui a déclenché l'événement, soit indirectement dans le cas où l'événement a été déclenché depuis le choix d'un filtre dans le menu contextuel (dans ce cas, c'est la valeur interne associée à la valeur externe du filtre affiché qui est prise en compte, l'association ayant été effectuée lors d'un précédent appel à la méthode DECLENCHER_ACTION_FILTRE).
Remarque : dans le cas où l'événement ChoixFiltre de la colonne n'est pas géré dans le programme, l'option "Filtre" déclenche l'appel de la boîte de dialogue Adélia de définition de filtre et, lors de l'exécution de cette boîte de dialogue, l'événement ActionFiltre est déclenché. Dans ce cas, le format de la propriété VALEUR_INTERNE_FILTRE est le suivant :
- Position 1 à 2 : opérateur du filtre. Valeurs possibles : '=', '>', '<', '~', '%', '! ', '/' |
- Position 3 : indicateur de casse ('0' sans casse, '1' avec la casse). |
- Position 4 à 6 : longueur de la valeur (sur 3 chiffres, complétée par des zéros à gauche). |
- Position 50 : début de la valeur. |
- La propriété à blanc indique que l'utilisateur a choisi de tout afficher (filtre "*"). |
Définition d'un filtre
La boîte de dialogue de définition d'un filtre est accessible quel que soit le mode de gestion des filtres utilisé : automatique ou manuel.
Les boutons radio
Afficher tous
Aucune ligne n'est filtrée.
Filtre
Active la définition d'un filtre. Les autres champs de la boîte de dialogue deviennent actifs.
Le bouton Filtre est sélectionné par défaut.
La liste déroulante
Permet de sélectionner le critère de sélection.
Valeurs possibles :
Commence par |
La cellule doit commencer par la chaîne du filtre. Ce critère n'est valable que pour les colonnes de type alphanumérique. |
Contient |
La cellule doit contenir la chaîne du filtre. Ce critère n'est valable que pour les colonnes de type alphanumérique. |
Différent |
La cellule ne doit pas contenir la même valeur que celle du filtre en respectant ou non la casse, selon la valeur de la case à cocher Respecter la casse. |
Egal |
La cellule doit contenir exactement la même valeur que celle du filtre en respectant ou non la casse, selon la valeur de la case à cocher Respecter la casse. |
Ne contient pas |
La cellule ne doit pas contenir la chaîne du filtre. Ce critère n'est valable que pour les colonnes de type alphanumérique. |
Supérieur ou égal |
La cellule doit contenir une valeur supérieure ou égale à celle du filtre. |
Inférieur ou égal |
La cellule doit contenir une valeur inférieure ou égale à celle du filtre. |
Les cases à cocher
Respecter la casse
Valable uniquement pour les colonnes de type alphanumérique et lorsque le critère de sélection est "Egal" ou "Différent".
Remarque : par défaut, un Runtime Visual Adélia en français affiche les constantes de la boîte de dialogue et les textes Adélia des options du menu Filtre ("Filtre..." , "Coché", "Décoché") en français. Un Runtime anglais affiche ces constantes en anglais. Si vous souhaitez afficher ces constantes dans une autre langue, copiez le fichier "objectsv.sav" en le renommant "objectsv.ini", puis traduisez les textes de la rubrique [COLONNE].