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 :

Recherche Objet TListBox amélioré..


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Par défaut Recherche Objet TListBox amélioré..
    Bonjour,

    Je développe actuellement un projet qui récupère des informations...

    Je souhaite Afficher les informations avec 3 critères dans une listbox.

    Par exemple si l'information est correcte j'affiche dans mon listbox :
    une icône verte suivis de l'information.

    Si l'information est fausse mais qu'elle n'est pas importante j'affiche :
    une icône orange avec l'information derrière.

    Enfin si l'information est fausse et qu'elle présente un danger j'affiche:
    une icône rouge style warning suivis de l'information.

    Je ne trouve aucun objet permettant dans builder d'afficher du texte et des images sur des lignes à la suite...

    Quelqu'un peut il m'éclairer a se sujet ? ou m'envoyer vers autre chose (si cela existe )

    Je vous remercie :p

    EDIT : je possède C++ Builder 6 et CodeGear C++ Builder 2007

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Essaye avec la TListView, je pense que ça ferais ce que lu veut, c'est comme une TListBox, mais avec la possibilité de mettre plusieurs colonnes, des titres a tes colonnes et surtout une image (icône) au début de chaque ligne

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Par défaut
    Merci.. :p

    J'ai fait une recherche sur google et sur le forum sur cette objet mais je ne trouve pas d'aide simple et complète

    D'ailleurs j'ai vu que je pouvais ajouter des progress bar ce qui m'interesse beaucoup :p
    Donc si quelqu'un pouvait m'indiquer comment procéder pour ajouter une icone en début de ligne.. un texte (mais ca je pense que la faq ma renseigner ) et enfin un progress bar

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    A moindre coût, ça peut se faire avec son OnDrawItem.
    Ne pas oublier que le canvas pour TListBox est accessible !
    Comme à ce moment là on a la maîtrise du dessin, on peut faire ce que l'on veut.
    Par exemple, on peut prendre le premier caractère des chaînes comme indice pour l'icône et représenter le reste de la chaîne en tant que telle !
    Sur cette base là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int CodeIcon; //de 0 à 9... ou de A à Z si plus de 10 images 
    ListBox->Items->Add(IntToStr(CodeIcon) + "Bla bla bla");
    On aura donc à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    TListBox *ListBox = (TListBox*)Control;
    AnsiString N = ListBox->Items[Index];
    Graphics::TBitmap *Image;
    //... ou quelque chose de plus intelligent avec un tableau d'Images
    switch(N[1])
        {
        case '1' : Image = ...; break;
        } 
    ListBox->Canvas->Draw(R.Left, R.Top, Image);
    ListBox->Canvas->TextOut(R.Left + ???, R.Top + ???, N.SubString(2, N.Length()));
    A plus !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Par défaut
    Merci pour ta réponse!

    Je ne comprend pas vraiment ce que tu souhaite faire ???

    et quand j'essaye de compiler il ne veut pas de
    TListBox *ListBox = (TListBox*)Control

    Control non défini...

    TListView à l'air vraiment complet mais pas son aide

  6. #6
    Membre éprouvé
    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 : 54
    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
    Par défaut
    Bonjour,

    Ce que Maître henderson a surement suggéré,c'est que cette portion de code est a placer dans le 'OnDrawItem' (évènement) du TListBox, et ainsi il n'est pas possible de ne pas avoir accès a 'Control'...

    Bon courage,
    @+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Par défaut
    Je ne vois pas quand l'évènement 'ondrawitem' est appelé..

    Du coup rien ne se passe... j'ajoute des lignes mais mon icone ne s'affiche jamais

  8. #8
    Membre éprouvé
    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 : 54
    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
    Par défaut
    Bonsoir,

    Pour que le code placé dans l'évènement 'OnDrawItem' soit effectivement appliqué - il me semble - il te faut changer la propriété 'style' de ta TListBox, et la mettre (par ex) a lbOwnerDrawFixed.
    Si malgré tout, que le code est bien dans l'event 'OnDrawItem', que la propriété 'Style' est bien modifiée, rien d'attendu ne se passe ... hé bé, a c't'heure, ché po quoi t'dire mon gars

    @+

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Pour l'aide, c'est simple :
    - sélectionner sur la fiche le TListBox
    - sélectionner l'onglet Evenements dans l'Inspecteur d'objets
    - sélectionner OnDrawItem
    - appuyer sur la touche F1

    Lire du début jusqu'à la fin.
    Cliquer sur Exemple.

    Procéder de la même manière pour la propriété Style et pour laquelle l'aide décrit les trois cas possibles.

    Désolé pour ce manque de précisions de ma part !
    Ne pas oublier d'effacer la ligne de l'item... comme dans l'exemple donné par l'aide.

    Je me suis contenté de suggérer la manière la plus simple d'associer une image connue à une chaîne !

    Par ailleurs, ne pas négliger non plus qu'avec la propriété TStrings *Items, on peut associer un objet (TObject*) à chaque chaîne.
    Ca peut être intéressant si on doit associer un ensemble de donnnées... mais on peut se limiter à associer un TImage contenant l'image à afficher !

    Une chose que je n'ai pas dit, non plus, est que si la hauteur des images est plus grande que la hauteur des Items, il faudra sans doute utiliser Canvas->StretchDraw... (voir l'aide pour TCanvas)

    A plus !

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Par défaut
    Merci je vais essayer ça

    Désolé je suis un peux perdu.. car dans le cas d'un TListBox ou TListView cela utilise enormément d'objet annexe :p

    Enfin j'essaie et je reviens "vous dire quoi" (cf Bienvenue chez les ch'ti)

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 30/06/2008, 10h14
  2. Recherche composant datagridview amélioré
    Par chris81 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/03/2008, 09h27
  3. Recherche formule concaténation améliorée
    Par clemasson dans le forum Excel
    Réponses: 2
    Dernier message: 19/12/2007, 17h23
  4. [recherche] idée d'amélioration
    Par franculo_caoulene dans le forum Evolutions du club
    Réponses: 8
    Dernier message: 08/12/2007, 12h33
  5. recherche code pour améliorer mon site
    Par ALTINEA dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 07/08/2007, 18h05

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