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

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 62
    Points
    62
    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 chevronné
    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
    Points : 2 187
    Points
    2 187
    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

  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
    Points : 3 766
    Points
    3 766
    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 sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    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 586
    Points : 25 256
    Points
    25 256
    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; 
      }

  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
    Points : 3 766
    Points
    3 766
    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 du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 62
    Points
    62
    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 chevronné
    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
    Points : 2 187
    Points
    2 187
    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

+ 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