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 :

Mettre une image dans un SubItem (listview)


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Par défaut Mettre une image dans un SubItem (listview)
    Bonjours à tous !
    Mon problème est le suivant : je souhaite afficher une image dans la seconde colonne d' un TListview.

    J'ai un bout de code qui permet d'affecter une liste d'image à mon TListView, mais l'image apparait que dans la première colonne.
    J'ai cherché avec la fonction SubItemImages, mais sans grand résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Drapeau = new TImageList(this);
     Graphics::TBitmap *MultiBitmaps[4];                            //declaration de 4 images
     MultiBitmaps[0] = new Graphics::TBitmap;
     
     ListView1->SmallImages= Drapeau;                        //affect la liste d'image au ListView
           	MultiBitmaps[0]->LoadFromFile("France.bmp");
    	Drapeau->Width = MultiBitmaps[0]->Width;
    	Drapeau->Height = MultiBitmaps[0]->Height;
            Drapeau->Add(MultiBitmaps[0],NULL);

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Hello
    il me semblerait que cela à l'air plus compliqué que pour la colonne1
    sans garantie regarder du côté de:
    http://docwiki.embarcadero.com/Libra...tomDrawSubItem
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut Hellgast
    tire de l'aide en ligne BCB6
    TCustomListView::SmallImages
    Propose une liste d'icônes pouvant être affichées à côté de chaque élément de la liste quand ViewStyle n'a pas la valeur vsIcon.
    __property Imglist::TCustomImageList* SmallImages = {read=FSmallImages, write=SetSmallImages};
    Description
    Définissez la propriété SmallImages pour spécifier les bitmaps devant être affichés à côté des éléments de la liste quand ViewStyle a la valeur vsSmallIcon, vsList ou vsReport. Chaque élément de la liste Items peut être associé à un bitmap de cette liste d'images en affectant sa propriété ImageIndex.
    //=====================
    Cet exemple nécessite un TListView, un TImageList et un TComboBox. Vous devez double-cliquer dans la liste d'images et ajouter quelques images à la liste avant d'exécuter le projet. Vous pouvez utiliser les fichiers *.bmp ou *.ico du répertoire \Images\Icons.
    Dans le gestionnaire d'événement OnCreate de la fiche, des éléments sont créés dans le contrôle ListView pour chaque image de la liste d'images et le numéro de l'image dans ImageList est affecté à ImageIndex. Deux colonnes sont créées pour que des colonnes soient affichées quand ViewStyle a le style vsReport.
    Egalement dans le gestionnaire d'événement OnCreate, affectez au ComboBox chacune des quatre constantes TViewStyle à la propriété Objects des éléments. Vous pouvez aussi simplement coder ceci, par exemple dans une série de gestionnaires d'événement OnClick comme, par exemple, ListView1->ViewStyle = vsIcon.
    le code
    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
     
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
      TListItem *pItem;
      TListColumn *pColumn;
      // Crée un élément de ListView pour chaque image dans ImageList
      ListView1->SmallImages = ImageList1;
      ListView1->LargeImages = ImageList1;
      for (int i = 0; i < ImageList1->Count; i++)
      {
        pItem = ListView1->Items->Add();
        pItem->Caption = "Image" + IntToStr(i);
        pItem->ImageIndex = i;
      }
      // Crée deux colonnes pour l'affichage en mode vsReport
      pColumn = ListView1->Columns->Add();
      pColumn->Caption = "Column 1";
      pColumn = ListView1->Columns->Add();
      pColumn->Caption = "Column 2";
      // Ajoute les styles de visualisation et les constantes à la boîte à options
      ComboBox1->Items->AddObject("vsIcon", (TObject *)vsIcon);
      ComboBox1->Items->AddObject("vsList", (TObject *)vsList);
      ComboBox1->Items->AddObject("vsReport", (TObject *)vsReport);
      ComboBox1->Items->AddObject("vsSmallIcon", (TObject *)vsSmallIcon);
      // Affiche le premier élément dans la boîte à options
      ComboBox1->ItemIndex = 0;
    }
    void __fastcall TForm1::ComboBox1Click(TObject *Sender)
    {
      ListView1->ViewStyle = (TViewStyle) ComboBox1->Items->Objects[ComboBox1->ItemIndex];
    }

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 081
    Par défaut
    pour compléter la réponse de blondelle !

    Uniquement pour le vsReport !

    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
     
      // Crée trois colonnes pour l'affichage en mode vsReport
      pColumn = ListView1->Columns->Add();
      pColumn->Caption = "Column 1";
      pColumn = ListView1->Columns->Add();
      pColumn->Caption = "Column 2";
      pColumn = ListView1->Columns->Add();
      pColumn->Caption = "Column 3";
     
      for (int i = 0; i < ImageList1->Count; i++)
      {
        pItem = ListView1->Items->Add();
        pItem->Caption = "Image" + IntToStr(i);
        pItem->ImageIndex = i;
        pItem->SubItems->Add("2." + IntToStr(i));
        pItem->SubItems->SubItemImages[0] = (i+1) % ImageList1->Count; 
        pItem->SubItems->Add("3." + IntToStr(i));
        pItem->SubItems->SubItemImages[1] = (i+2) % ImageList1->Count; 
      }
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    chez moi cela fonctionne en vsReport et vsSmallicon, il ne faut pas oublier de mettre dans SmallImage ImageList1 sinon les images ne s'affichent pas

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Par défaut
    Merci a vous

    J'ai réussi a trouvé la réponse avec un exemple en Delphi que j'ai essayer d'adapter en c++ [ici],
    juste avant avoir vu le message de ShaiLeTroll


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TListItem *Item =ListView1->Items->Add();
    Item->SubItemImages[0]=0;
    SubItemImages[0] =>> correspond à la colonne
    et = 0 =>> correspond à l'index de l'image enregistrée dans TimageList (associé à notre TListView)

  7. #7
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Hello
    un code lègerement différent affichant des immages sur 3 colonne (à la une)
    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
     
      TListItem *pItem;
      TListColumn *pColumn;
      const int nCol=4;
       ListView1->ViewStyle = vsReport;
       ListView1->SmallImages = ImageList1;
       for(int n=0;n<nCol;n++)
       {
    	pColumn=ListView1->Columns->Add();
    	pColumn->Caption= "Column " + IntToStr(n);
       }
     
      // Crée un élément de ListView pour chaque image dans ImageList
     
      for (int i = 0; i < ImageList1->Count; i++)
      {
    	pItem = ListView1->Items->Add();
    	pItem->Caption = "Image" + IntToStr(i);
    	pItem->ImageIndex = i;
    	pItem->SubItems->Add("1." + IntToStr(i));
    	pItem->SubItemImages[0] = (i+1) % ImageList1->Count;
    	pItem->SubItems->Add("2." + IntToStr(i));
    	pItem->SubItemImages[1] = (i+1) % ImageList1->Count;
    	pItem->SubItems->Add("3." + IntToStr(i));
    	pItem->SubItemImages[2] = (i+1) % ImageList1->Count;
      }
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/09/2013, 00h12
  2. Mettre une Image dans une Image
    Par shadowhocine dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 19/12/2006, 18h40
  3. [JPanel]Mettre une image dans un JPanel
    Par ehmppowa dans le forum Composants
    Réponses: 11
    Dernier message: 30/11/2005, 20h17
  4. [css](debutant) mettre une image dans un bandeau
    Par tuxrouge dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 07/09/2005, 14h38
  5. Peut on mettre une image dans une BD MySQL ?
    Par maddog2032 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 25/07/2003, 16h18

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