WinDev 7 met à la disposition des utilisateurs une multitude de nouvelles propriétés. C'est sans aucun doute une des plus grandes avancées du langage (avec la manipulation des objets d'un projet).
Ainsi le programmeur peut manipuler par programmation les filtres des tables fichiers...
Admettons une fenêtre avec une table (TABLE) en relation avec un fichier (FICHIER) dont le tri est sur FICHIER.RUBRIQUE et un CHAMP qui permet de filtrer le contenu de la table. Evidement CHAMP ne correspond pas à RUBRIQUE mais à FICHIER.RUBRIQUE_CHAMP.
Lors de la description de TABLE, il est possible de fixer (onglet contenu) le fichier (FICHIER), la rubrique mémorisée (rien), une rubrique de parcours (RUBRIQUE) et un filtre sur cette rubrique (rien).
Le filtre en question est un filtre 'simple' du type 'commence par...' sur la rubrique de parcours seule.
A ce sujet, l'aide en ligne nous indique comment modifier ce filtre par programmation :
Citation :
Pour modifier plusieurs des propriétés RubriqueParcourue, Filtre et FichierParcouru, il est conseillé de :
1. Stopper le parcours en affectant une chaîne vide ("") à la propriété FichierParcouru.
2. Modifier les propriétés nécessaires.
3. Relancer le parcours avec la propriété FichierParcouru.
Pour filtrer la table sans problème sur la valeur de CHAMP tout en gardant le parcours sur RUBRIQUE voici la solution :
Dans le code de sortie de CHAMP (je passe sur les tests de validité de la saisie) :
SI MoiMême<>"" ALORS
// saisie effectuée : mise à jour du filtre
// inactive le filtre précédant
HDesactiveFiltre(FICHIER)
// inactive les données de parcours de la table pour mettre en place les nouvelles
Table..FichierParcouru="" // débranche les propriété de parcours
Table..RubriqueParcourue=RUBRIQUE // garde la rubrique de parcours
Table..Filtre="" // rien sur la rubrique
// filtre simplement le fichier
//(on peut aussi filtrer selon une condition...)
cRub=hFiltre(FICHIER,RUBRIQUE_CHAMP,MoiMême)
Table..RubriqueParcourue=crub // Change la clé de parcours [optionnel]
Table..FichierParcouru=FICHIER // rebranche les propriété de parcours
SINON
// pas de saisie on repasse en parcours normal (selon RUBRIQUE)
Table..FichierParcouru="" // débranche les propriété de parcours
Table..RubriqueParcourue=RUBRIQUE
Table..Filtre=""
hDesactiveFiltre(FICHIER)
Table..FichierParcouru=FICHIER // rebranche les propriété de parcours
FIN
// reaffiche la table
TableAffiche(Table,taInit)
// donne le curseur à la table
EcranPremier(Table)
Inutile de préciser que l'on peut ainsi construire des filtres complexe tout en conservant le parcours sur une rubrique.