IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Filtrer une liste génériques


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Chef de projets
    Inscrit en
    Août 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 127
    Points : 195
    Points
    195
    Par défaut Filtrer une liste génériques
    Bonjour,

    J'aurais voulu savoir si quelqu'un avait déjà travaillé sur un système pour filtrer les listes génériques ?

    L'idée serait d'avoir un code du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var
    MaListe : TObjectListFilter<TPersonne>
    [....]
    MaListe.Filter("Age", Filter.Equal, 20);
    Je penchais pour retrouver la property avec la RTTI. Mais avant de me lancer, j'aurais bien voulu avoir des avis, retours, tutos ou autres.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 225
    Points
    25 225
    Par défaut
    TObjectListFilter ? C'est ta propre classe ?
    N'est-ce pas un abus de générique ?

    Je n'aime pas trop utilisé les noms de propriété en chaine, même si je l'ai fait pas plus tard que Vendredi pour récupérer un OnDblClick d'un TWinControl
    Evidemment lors d'un mapping OR, j'ai un tableau associant nom de champ et nom de propriété, et si j'utilise explicitement le nom de propriété (au lieu de la propriété), j'utilise mes constantes mais ce cas n'est pas fréquent

    En plus que dois faire le Filtre ?
    Doit-il supprimer les éléments trouvés ou non trouvés ?
    Doit-il juste gérer un masque et donc tu dois par la suite refaire les accesseurs de Items[] ?
    Donc autant ne pas les ajouter à la liste, cela serait un gain de temps !

    Pourquoi ne pas plutôt un utiliser un adapteur entre un TPersonne et un TDataSet
    le TPersonneDataSetAdapter est un curseur* et lit les données en cours du TDataSet, il peut aussi générer un Filter selon la syntaxe supporté par le TDataSet


    Le TDataSet pouvant être un TClientDataSet, TQuery, TADOQuery...
    Un Curseur dans le sens où il n'y qu'une seule instance de TPersonneDataSetAdapter qui ne sert que de Reader\Writer avec des propriétés vers les champs du TDataSet peu importe la position dans le DataSet, le curseur lit simplement l'enregistrement en cours !
    Cela reste POO sans la lourdeur d'une collection d'objet !

Discussions similaires

  1. Sélection d'un champ d'une liste générique ?
    Par chuiben dans le forum Ada
    Réponses: 2
    Dernier message: 22/03/2007, 14h36
  2. Filtrer une liste déroulante
    Par Gone 23 dans le forum IHM
    Réponses: 7
    Dernier message: 20/03/2007, 14h06
  3. Filtrer une liste de classes
    Par neuromencien dans le forum Langage
    Réponses: 7
    Dernier message: 14/10/2006, 11h22
  4. Réponses: 12
    Dernier message: 23/09/2006, 12h12
  5. Impossibilité de filtrer une liste déroulante
    Par lito74 dans le forum Access
    Réponses: 12
    Dernier message: 27/02/2006, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo