begin process at 2012 05 29 12:36:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Modification d'un item dans un listview


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Modification d'un item dans un listview

mardi 12 juillet 2005 à 10:30:24 | Modification d'un item dans un listview

abdoulax

Bon voilà une question tou bête pourtant ça fé un pti moment que je galaire dessus.

En fait j'ai remplie mon listview avec des items, associé à une icone.
Je voudrai modifié cette icône, voici mon code :
lvItem.iImage        = IcoWait;
SendMessage(GetDlgItem(Dlg, IDC_LIST10),LVM_SETITEM,0,(LPARAM)&lvItem);

Ms ça marche poa ^^

Have Fun ...
mardi 12 juillet 2005 à 14:38:33 | Re : Modification d'un item dans un listview

aardman

Membre Club
Salut,
Chaque item a sa propre icone, ils n'ont pas tous la meme.
Lorsque tu ajoutes l'item dans la listview, il faut mettre le flag LVIF_IMAGE dans le champ mask de la structure LVITEM et remplir correctement le champ iImage.
mardi 12 juillet 2005 à 14:40:07 | Re : Modification d'un item dans un listview

abdoulax

Ouai ms tou ça c fé !!

Have Fun ...
mardi 12 juillet 2005 à 14:49:22 | Re : Modification d'un item dans un listview

aardman

Membre Club
Salut,
relis bien mon message, si tout ce que j'ai dis tu l'a déja fait, c'est que ca marche.
ou montre moi plutot ton code pour ajouter un item.

mardi 12 juillet 2005 à 14:54:44 | Re : Modification d'un item dans un listview

abdoulax

Bon b voici un bou du code, j'espere que tu va comprendre :

Tu peux voir comment j'ai fé pour palier le pb, ms c du bricolage....

    //Insertion des icone dans le listview
    HIMAGELIST  himlSmall;
    HICON       hIconItem;
    himlSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),FALSE,2,1);
    hIconItem = LoadIcon(MY_GET_INSTANCE(tWAIT->Dlg),MAKEINTRESOURCE(IDI_ICON2));
    int IcoWait = ImageList_AddIcon(himlSmall,hIconItem);
    DeleteObject(hIconItem);
    hIconItem = LoadIcon(MY_GET_INSTANCE(tWAIT->Dlg),MAKEINTRESOURCE(IDI_ICON3));
    int IcoOk = ImageList_AddIcon(himlSmall,hIconItem);
    DeleteObject(hIconItem);
    ListView_SetImageList(GetDlgItem(tWAIT->Dlg, IDC_LIST10), himlSmall, LVSIL_SMALL);
    DeleteObject(himlSmall);

    //Initialisation de l'item
    LV_ITEM lvItem;
    lvItem.mask            = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
    lvItem.state        = 0;
    lvItem.stateMask    = 0;
    lvItem.iItem        = 0;
    lvItem.lParam        = 0;
    lvItem.iImage        = IcoOk;

    //Recherche de fichier
    liste = FindFirstFile(TmpDir, &File);
    for (n=0;FindNextFile(liste, &File);)
        if ( strcmp(File.cFileName, "..") )
        {
            //Remplie le listview avec les fichiers trouvés
            strcpy(TmpDir,GetConfig(firstDlg(0),4));
            strcat(TmpDir,"\\");
            strcat(TmpDir,File.cFileName);

            lvItem.iSubItem        = 0;
            lvItem.pszText        = File.cFileName;
            lvItem.cchTextMax    = strlen(lvItem.pszText)+1;
            SendMessage(GetDlgItem(tWAIT->Dlg, IDC_LIST10),LVM_INSERTITEM,0,(LPARAM)&lvItem);

            lvItem.iSubItem        = 1;
            lvItem.pszText        = TmpDir;
            lvItem.cchTextMax    = strlen(lvItem.pszText)+1;
            SendMessage(GetDlgItem(tWAIT->Dlg, IDC_LIST10),LVM_SETITEMTEXT,0,(LPARAM)&lvItem);

            n++;
        }
    FindClose(liste);

    int b;
    char LocalFile[MAX_PATH];
    //Parcours le listview tant que l'on trouve des items
    for (b=n,n=0;SendMessage(GetDlgItem(tWAIT->Dlg, IDC_LIST10),LVM_GETITEMTEXT,n,(LPARAM)&lvItem);)
    {
        //Récupère les paramètre de chaque colonne
        strcpy(LocalFile,TmpDir);
        lvItem.iSubItem        = 0;
        SendMessage(GetDlgItem(tWAIT->Dlg, IDC_LIST10),LVM_GETITEMTEXT,n,(LPARAM)&lvItem);
        SetDlgItemText(tWAIT->Dlg, IDC_STATIC_101,TmpDir); //Affiche l'envoie en cours
        //Envoie du fichier par ftp
        if ( FtpMain(tWAIT->Dlg,1,LocalFile,TmpDir,&tWAIT->waitOK) != -1 )
        {//pas d'erreur
            if ( tWAIT->waitOK == 1 )
            {
                //Enleve l'item de la list
                SendMessage(GetDlgItem(tWAIT->Dlg, IDC_LIST10),LVM_DELETEITEM,n,0);
                //Supprime le fichier
                DeleteFile(LocalFile);
                //Décrémente le nombre de fichier
                b--;
            }
        }
        else //Sinon
        {
            //on modifie l'icone de l'item
            lvItem.iImage        = IcoWait;
            SendMessage(GetDlgItem(tWAIT->Dlg, IDC_LIST10),LVM_DELETEITEM,n,0);
            SendMessage(GetDlgItem(tWAIT->Dlg, IDC_LIST10),LVM_INSERTITEM,n,(LPARAM)&lvItem);
            //Affiche un message d'erreur
            MessageBox(tWAIT->Dlg,"Erreur lors de l'envoie de l'archive, veuillez ressayer ultérieurement.",TmpDir,MB_ICONERROR);
            //Incrémente le nombre d'erreur
            n++;
        }
        //Affiche le nombre de fichier restant ainsi que le nombre d'erreur
        sprintf(TmpDir,"Files : %i Erreur : %i",b-n,n);
        SetDlgItemText(tWAIT->Dlg, IDC_STATIC_100,TmpDir);
        lvItem.iSubItem        = 1;
        if ( tWAIT->waitOK == -1 )
            break;
    }

Have Fun ...
mardi 12 juillet 2005 à 15:05:03 | Re : Modification d'un item dans un listview

aardman

Membre Club
Salut,
Il ne faut pas détruire ton image list juste apres l'avoir associée a ta listview, il faut enlever le DeleteObject(himlSmall);.

Sinon le reste a l'air correct.



mardi 12 juillet 2005 à 15:16:39 | Re : Modification d'un item dans un listview

abdoulax

C'est pas logique puisque ça marche lorsque j'insère les items et lorsque je fais mon pti bricolage. De plus une fois que la liste est envoyé au listview on peut surprimer l'objet.  Nah je pense que c'est mon instruction pour modifier l'item qui n'est poa bonne.

Have Fun ...
mardi 12 juillet 2005 à 16:39:40 | Re : Modification d'un item dans un listview

aardman

Membre Club
Salut,
Pour modifier l'item, je repete ce que j'ai dis plus haut:
il faut mettre le flag LVIF_IMAGE dans le champ mask de la structure LVITEM et remplir correctement le champ iImage.
Il faut evidemment remplir les champs iItem et iSubItem aussi.
Et ensuite au lieu de suprimer/ajouter l'item, tu peux envoyer un LVM_SETITEM.

Sinon pour la liste d'image, d'apres msdn il ne faut pas la suprimer.



Cette discussion est classée dans : listview, item, lvitem, modification


Répondre à ce message

Sujets en rapport avec ce message

Couleur item dans un listview [ par kevinmitnik66 ] Salut à tous,une petite kestion, j'ai un listview et j'aimerais mettre seulment certaines lignes en couleur (rouge par ex) et non pas mettre toutes le recuperer texte d'une ListView [ par glipper ] Lol bonjour, (et vi encore moi, désolé :)Maintenant, j'essaie de récuperer le nom de l'item selectionné dans ma ListView. J'ai récuperé le numero de l listview petit probleme [ par babylone2019 ] Bonjour,voila j'ai creer cette fonction pour inserer du texte dans ma list view, mais bon il me retourne -1 des la fonction ListView_InsertItem();Mais Listview .net [ par DJ_FleX ] Bonjour, excuser mon debutantismeJe suis tombé par hasard sur comment ajouter un item a une listbox simple mais je n'ai pas trouvé comment ajouter d'i Recherche dans listview [ par draluorg ] Salut a tous,J'ai un petit soucis de perf pour tester l'existance d'un SubItem dans une listview.En fait j'ai une fonction AddLvItem a qui j'envoie le Modifier hauteur item Listview [ par gagah1 ] Salut, Est-il possible de modifier la hauteur des items dans un Listview style REPORT comme fait LB_SETITEMHEIGHT en Listbox? listview [ par deck_bsd ] Yop,Voila c'est p-e un bête truc , mais lorsque je rempli une listview,  elle se remplit dans l'ordre décroissant (du nouveau item au plus ancien) hor ListView Item survolé par la souris ? [ par Capa6T ] Bonjour,Comment peut-on récupérer l'item survolé par la souris dans un contrôle ListView ?J'ai vu quelques sources qui font des calculs sur la positio Item de listview limité à 259 caractères ?! [ par yoyo269 ] Bonjour à toutes et à tous.Voilà mon souci. Dans une listview que j'ai créée, j'ajoute un item de cette façon :LVItem.mask = LVIF_TEXT | LVIF_IMAGE | recupere les item d'une colonne de ma listview [ par majestic3 ] Bonjour a tous, comment faire pour recuperer tous les elements d'une colonne d'une listview et les enregistrer dans une variable


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,186 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales