Visual - Listes - Filtres manuels
Last modified by Isabelle FERRIERE on 2015/10/12 10:12
Soit une liste d’animaux, dont les colonnes CATEGORIE et ANIMAL sont définies en filtre manuel :
Sur l’événement « ActionFiltre » de ces colonnes :
1/ Déterminer le filtre, à partir de la propriété VALEUR_INTERNE_FILTRE :
- 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é à *BLANK indique que l'utilisateur a choisi de tout afficher (filtre « * »)
* Action sur filtre
SI COL_CATEG:VALEUR_INTERNE_FILTRE = *BLANK
W_FILTRE_OPERATEUR = '*'
W_FILTRE_CASSE = *BLANK
W_FILTRE_LONG = *BLANK
W_FILTRE_VAL = *BLANK
SINON
W_FILTRE_OPERATEUR = &EXTRACTION(COL_CATEG:VALEUR_INTERNE_FILTRE; 1; 2)
W_FILTRE_CASSE = &EXTRACTION(COL_CATEG:VALEUR_INTERNE_FILTRE; 3; 1)
W_FILTRE_LONG = &EXTRACTION(COL_CATEG:VALEUR_INTERNE_FILTRE; 4; 3)
W_FILTRE_VAL = &EXTRACTION(COL_CATEG:VALEUR_INTERNE_FILTRE; 50; 200)
FIN
SI COL_CATEG:VALEUR_INTERNE_FILTRE = *BLANK
W_FILTRE_OPERATEUR = '*'
W_FILTRE_CASSE = *BLANK
W_FILTRE_LONG = *BLANK
W_FILTRE_VAL = *BLANK
SINON
W_FILTRE_OPERATEUR = &EXTRACTION(COL_CATEG:VALEUR_INTERNE_FILTRE; 1; 2)
W_FILTRE_CASSE = &EXTRACTION(COL_CATEG:VALEUR_INTERNE_FILTRE; 3; 1)
W_FILTRE_LONG = &EXTRACTION(COL_CATEG:VALEUR_INTERNE_FILTRE; 4; 3)
W_FILTRE_VAL = &EXTRACTION(COL_CATEG:VALEUR_INTERNE_FILTRE; 50; 200)
FIN
2/ Parcourir la liste (LECTURE_LST, par exemple) et rendre visible ou non les lignes en fonction du filtre, ce en utilisant le filtre défini précédemment et la propriété LIGNE_VISIBLE :
LECTURE_LST LST_ANIMAUX:LISTE
* Masquer toutes les lignes
LST_ANIMAUX:LIGNE_VISIBLE = *FAUX
* Filtre = « tous » => Rendre visible toutes les lignes
SI W_FILTRE_OPERATEUR = '*'
LST_ANIMAUX:LIGNE_VISIBLE = *VRAI
SINON
SI W_FILTRE_CASSE = '0'
* Non respect de la casse
SI WCOL_NOM = 'CATEGORIE'
WCOL_VALEUR = &MINUSCULE(COL_CATEG:)
SINON_SI WCOL_NOM = 'ANIMAUX'
WCOL_VALEUR = &MINUSCULE(COL_ANIMAL:)
FIN
W_FILTRE_VAL = &MINUSCULE(W_FILTRE_VAL)
SINON
* Casse sensitive
SI WCOL_NOM = 'CATEGORIE'
WCOL_VALEUR = COL_CATEG:
SINON_SI WCOL_NOM = 'ANIMAUX'
WCOL_VALEUR = COL_ANIMAL:
FIN
FIN
* Rendre visible les lignes respectant le filtre
SI W_FILTRE_OPERATEUR = '=' ET WCOL_VALEUR = W_FILTRE_VAL
LST_ANIMAUX:LIGNE_VISIBLE = *VRAI
FIN
SI W_FILTRE_OPERATEUR = '>' ET WCOL_VALEUR > W_FILTRE_VAL
LST_ANIMAUX:LIGNE_VISIBLE = *VRAI
FIN
SI W_FILTRE_OPERATEUR = '<' ET WCOL_VALEUR < W_FILTRE_VAL
LST_ANIMAUX:LIGNE_VISIBLE = *VRAI
FIN
SI W_FILTRE_OPERATEUR = '~' ET WCOL_VALEUR CONTIENT W_FILTRE_VAL
LST_ANIMAUX:LIGNE_VISIBLE = *VRAI
FIN
FIN
* Mettre à jour la liste
MODIFIER_ELT LST_ANIMAUX:LISTE
FIN_LECTURE_LST
* Masquer toutes les lignes
LST_ANIMAUX:LIGNE_VISIBLE = *FAUX
* Filtre = « tous » => Rendre visible toutes les lignes
SI W_FILTRE_OPERATEUR = '*'
LST_ANIMAUX:LIGNE_VISIBLE = *VRAI
SINON
SI W_FILTRE_CASSE = '0'
* Non respect de la casse
SI WCOL_NOM = 'CATEGORIE'
WCOL_VALEUR = &MINUSCULE(COL_CATEG:)
SINON_SI WCOL_NOM = 'ANIMAUX'
WCOL_VALEUR = &MINUSCULE(COL_ANIMAL:)
FIN
W_FILTRE_VAL = &MINUSCULE(W_FILTRE_VAL)
SINON
* Casse sensitive
SI WCOL_NOM = 'CATEGORIE'
WCOL_VALEUR = COL_CATEG:
SINON_SI WCOL_NOM = 'ANIMAUX'
WCOL_VALEUR = COL_ANIMAL:
FIN
FIN
* Rendre visible les lignes respectant le filtre
SI W_FILTRE_OPERATEUR = '=' ET WCOL_VALEUR = W_FILTRE_VAL
LST_ANIMAUX:LIGNE_VISIBLE = *VRAI
FIN
SI W_FILTRE_OPERATEUR = '>' ET WCOL_VALEUR > W_FILTRE_VAL
LST_ANIMAUX:LIGNE_VISIBLE = *VRAI
FIN
SI W_FILTRE_OPERATEUR = '<' ET WCOL_VALEUR < W_FILTRE_VAL
LST_ANIMAUX:LIGNE_VISIBLE = *VRAI
FIN
SI W_FILTRE_OPERATEUR = '~' ET WCOL_VALEUR CONTIENT W_FILTRE_VAL
LST_ANIMAUX:LIGNE_VISIBLE = *VRAI
FIN
FIN
* Mettre à jour la liste
MODIFIER_ELT LST_ANIMAUX:LISTE
FIN_LECTURE_LST
Déclarations utiles://**
ALPHA(2) W_FILTRE_OPERATEUR
ALPHA(1) W_FILTRE_CASSE
ALPHA(3) W_FILTRE_LONG
ALPHA(200) W_FILTRE_VAL
ALPHA(9) WCOL_NOM
ALPHA(200) WCOL_VALEUR
ALPHA(1) W_FILTRE_CASSE
ALPHA(3) W_FILTRE_LONG
ALPHA(200) W_FILTRE_VAL
ALPHA(9) WCOL_NOM
ALPHA(200) WCOL_VALEUR
Articles connexes
Les articles connexes apparaissent ici en fonction des étiquettes que vous avez sélectionnées. Cliquez pour modifier la macro et ajouter ou modifier des étiquettes.