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

Delphi Discussion :

ItemDelegate en Delphi


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut ItemDelegate en Delphi
    Bonjour,

    comme j'ai encore beaucoup de mal avec les subtilités du LiveBinding, je voudrais savoir comment on peut "obtenir" la délégation de Qt.

    Dans une colonne d'une Grid, je charge un boolean. Avec Qt, il est possible d'afficher à la place de 0 ou 1, une image par exemple (ou autre chose).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if(index.data().toInt()==1)
                style->drawItemPixmap(painter,option.rect,Qt::AlignCenter,pixmapY);
            else
                style->drawItemPixmap(painter,option.rect,Qt::AlignCenter,pixmapN);
    La colonne contient des booleans mais elle affiche des images (donc elle est immédiatement triable).

    Alors avec Delphi, je peux en faire autant en ajoutant une colonne "image" et en cachant la colonne "boolean". Mais est-il possible de pratiquer de la même façon que Qt ? Ce serait une fonction du LiveBinding que je ne connais pas. Serge ?

    Merci. Cordialement. Gilles

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 607
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par Selzig Voir le message
    Serge ?
    C'est un Serge bien fatigué (gros rhume) qui va te répondre ...
    Je ne comprend pas cette histoire de délégation (mais c'est surtout à cause de mon cerbo lent)
    Je crois avoir à peu près répondu à tout dans mon dernier tutoriel sur les grilles https://delphi.developpez.com/index/...-Serge-Girard/
    Avec Qt, il est possible d'afficher à la place de 0 ou 1.
    idem avec les LiveBindings tu peux très bien utiliser un customformat du style IfThen(value=0,'A','B')
    pour les images voir dans le tuto

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour Serge,

    Le rub... c'est le climat ! Mais... c'est inquiétant si cela atteint le cerveau

    Je re-regarde. Pourtant, je l'ai étudiée, ta superbe doc. Je me suis même basé dessus. Si je ne m'en sors pas, je referai appel... mais je te laisse quand même le temps de te soigner.

    Bonne journée. Gilles

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 607
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par Selzig Voir le message
    Mais... c'est inquiétant si cela atteint le cerveau
    j'ai l'impression qu'il me coule par les narines
    Je re-regarde. Pourtant, je l'ai étudiée, ta superbe doc.
    merci
    Si je ne m'en sors pas, je referai appel...
    une petite image de ce que tu voudrais aiderai pour l'instant c'est flou

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re-bonjour,

    voilà les images demandées :
    Nom : Capture d’écran 2018-09-11 à 12.20.17.png
Affichages : 172
Taille : 12,6 Ko et Nom : Capture d’écran 2018-09-27 à 15.48.09.png
Affichages : 180
Taille : 8,2 Ko

    A gauche, une approche classique : une colonne contenant les données et l'autre contenant les images.
    A droite, l'approche que j'ai retenue : la colonne xxactif contient exactement les mêmes données que sur l'image de gauche mais affiche les images. si je demande la valeur de la première ligne de xxactif, il m'est renvoyé "1".

    A plus.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 607
    Billets dans le blog
    65
    Par défaut
    Ah, je vois mieux

    Voilà comment je ferai :
    une grille (évidemment, avec une colonne de type TimageColumn) un TImageList qui va contenir tes deux images. Je fait l'impasse sur la possibilité de la définition multires mais si tu veux je peux te faire l'article je crois que j'ai (enfin) compris.
    La grid à la propriété Images qui pointe sur le TImageList
    une liaison (livebinding) somme toute très classique entre la colonne et tes valeurs et basta

    en gros sur la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     TForm20 = class(TForm)
        Grid1: TGrid
        ImageList1: TImageList;
        BindingsList1: TBindingsList;
        BindSourceDB1: TBindSourceDB;
        FDQuery1: TFDQuery;
    la valeur de ta colonne est l'index de l'image affichée
    la limite est que tu ne peux utiliser qu'un seul TImageList pour ta grille si tu veux l'utiliser pour plusieurs colonnes il faudra jouer avec les index des images

    par exemple pour ma colonne A, valeurs 0-3 j'utilise les images index 0 à 3
    pour ma colonne B valeurs 0-3 j'utilise les images index 4 à 7 (pour ça dans ma liaison j'utilise CustomFormat pour rajouter 4 à la valeur de la colonne

Discussions similaires

  1. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  2. Réponses: 1
    Dernier message: 13/05/2002, 09h19
  3. [Kylix] Migration delphi -> kylix
    Par Christian dans le forum EDI
    Réponses: 1
    Dernier message: 03/04/2002, 22h50
  4. Réponses: 4
    Dernier message: 27/03/2002, 11h03
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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