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

C++Builder Discussion :

liste déroulante avec une case à cocher et une image


Sujet :

C++Builder

  1. #1
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut liste déroulante avec une case à cocher et une image
    Bonjour à tous

    J'aimerais créer une liste déroulante ou chaque élément aurait 2 colonnes, une case à cocher et une image. Je dit bien une image, pas une icone.

    J'ai vu que l'on pouvait faire cela avec une ListView mais je ne m'en sort pas.

    Est-ce que quelqu'un pourrait m'aider ?

    Merci d'avance pour votre aide.

  2. #2
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,
    Sous forme de liste déroulante, vraimment ?
    (type combobox quoi ?)

    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  3. #3
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour,

    J'ai tenté un petit truc, même si je commence a croire que je suis peut être dans une impasse ...
    Cela suppose de travailler dans le OnDrawItem du ComboBox, avec la propriété Style a csOwnerDrawFixed, et d'avoir une TImageList avec deux images : 'case cochée', 'case non cochée' ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    TRect gRect, dRect;
    //
    gRect.top = Rect.top;
    gRect.left = Rect.left;
    gRect.bottom = Rect.bottom;
    gRect.right = ((Rect.right - Rect.left)/2) - 12;
    //
    dRect.top = Rect.top;
    dRect.bottom = dRect.bottom;
    dRect.right = Rect.right;
    dRect.left = ((Rect.right - Rect.left)/2) - 12;
    ////
    ComboBox1->Canvas->FillRect(Rect);
    if (State.Contains(odSelected) || State.Contains(odFocused))
    {
    	ComboBox1->Canvas->Brush->Color = clMoneyGreen;
    	ComboBox1->Canvas->Font->Color = clBlack;
    	ComboBox1->Canvas->Font->Style = TFontStyles() << fsBold;
    	ComboBox1->Canvas->DrawFocusRect(Rect);
    }
    else
    {
    	ComboBox1->Canvas->Brush->Color = clWindow;
    	ComboBox1->Canvas->Font->Color = clNavy;
    	ComboBox1->Canvas->Font->Style = TFontStyles();
    }
    ////
    String S, gTexte, dTexte, coche;
    S = ComboBox1->Items->Strings[Index];
    int sep = S.AnsiPos("/");
    //texte gauche
    gTexte = S.SubString(0, (sep-1));
    //texte droite
    dTexte = S.SubString((sep+1), (S.Length()- gTexte.Length() - 3));
    //coche
    coche = S.SubString(S.Length(), 1);
    //
    int gw, gl, dw, dl;
    //position texte gauche
    gw = ComboBox1->Canvas->TextExtent(gTexte).cx;
    gl = (gRect.Width() - gw)/2;
    //position texte droite
    dw = ComboBox1->Canvas->TextExtent(dTexte).cx;
    dl = gRect.Width() + ((dRect.Width() - dw)/2);
     
    //restitution
    ComboBox1->Canvas->TextRect(gRect, gl, gRect.top, gTexte);
    ComboBox1->Canvas->TextRect(dRect, dl, dRect.top, dTexte);
    IML->Draw(ComboBox1->Canvas, (Rect.right - IML->Width), Rect.top, StrToInt(coche), true);
    Je suis parti du principe (tout a fait arbitraire) que les Items étaient sous la forme :
    Item1/SubItem1/0
    Item2/SubItem2/1
    Item3/SubItem3/0
    Item4/SubItem4/1
    Item5/SubItem5/0
    Item6/SubItem6/1
    Item7/SubItem7/0
    Item8/SubItem8/1
    Item9/SubItem9/0
    Bon ... l'affichage foire un peu ...c'est vrai
    Ca aurait été trop facile que cela fonctionne du premier coup


    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  4. #4
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    J'ai vu qu'on pouvait ajouter des cases a cocher dans une listeview

  5. #5
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Finalement, j'ai utilisé une Checklistbox avec en face le nom de l'image et à coté, j'ai mis un TImage qui affiche l'aperçu de l'image.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Etat avec une case à cocher sur une requête difficile
    Par marcoO dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 10/01/2007, 14h21
  2. Réponses: 2
    Dernier message: 04/06/2006, 21h35
  3. Problèmes avec des cases à cocher et une liste déroulante
    Par rob2-9 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/01/2006, 10h52

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