Est-il possible de grouper des icones dans une listview

youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010 - 4 déc. 2004 à 18:46
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010 - 4 déc. 2004 à 23:06
j'aimerai grouper des ico en fonction du type dans une list view, comme dans l'exploreur kan on choisit "afficher par groupe" est-ce possible

merci d'avance
youpi :)

5 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 déc. 2004 à 19:43
Salut,
J'ai jamais essayé mais je suis sûr que c'est faisable. Il suffit de classer les éléments de la listview par ordre alphabétique des extentions. Ansi, tous les fichiers ayant l'extension BMP seront groupés et placés avant ceux ayant l'extension EXE. Ces derniers seront aussi groupés avant ceux ayant l'extension JPG et ainsi de suite...comme ça toutes les icones du même type sont groupées.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 déc. 2004 à 20:54
http://www.cppfrance.com/code.aspx?id=24239
Montre comment on fait les tris différents en fonction de la colonne dans une ListView
0
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
4 déc. 2004 à 21:30
merci les gars mais c po ce ke je veux faire....

ce ke je cherche a faire c com ca "http://www.vsnetfr.com/lien.aspx?ID=4771" ou "http://www.codeproject.com/cs/miscctrl/GroupListView.asp "

mais po en .net

je pense k'il fo utiliser , il fo absolument XP pour faire ça... mais je pense kil fo utiliser LVM_INSERTGROUP et LV_GROUP comme il est énoncé dans msdn mais j'ai un gros probleme,

d'apres msdn c déclarer dans commctrl.h

j'ai déclarer comme ceci
#include <commctrl.h>
#pragma comment(lib,"comctl32.lib")

impossible ke ca marche reconnai pas la variable alors je suis aller voir dans commctrl.h

j'ai trouver ca

LVM_INSERTGROUP existe definie kom ceci
#define LVM_INSERTGROUP (LVM_FIRST + 145)

en revanche pas de signe de LV_GROUP
mais de LVGROUP (tagLVGROUP)

dans tout les cas j'ai po reussi a l'utiliser

une idée???

youpi :)
0
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
4 déc. 2004 à 21:48
j'ai trouver pour ceux ke ca interesse

il fo definir le type de OS ici XP
mettre dans header #define _WIN32_WINNT 0x0501 (ki correspond a XP) se referé a la page lien

youpi :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
4 déc. 2004 à 23:06
j'ai testé ca sans succes la list view s'affiche mais pas dans des groupe
HWND hwndLV = GetDlgItem(hwnd,IDC_LIST1);
LVITEM LvItem;
LvItem.mask=LVIF_TEXT | LVIF_IMAGE | LVIF_STATE | LVIF_GROUPID;
LvItem.iSubItem=0;
LvItem.pszText=IconName;
//LvItem.iItem=ListItem;
LvItem.iItem=ImgList;
LvItem.cchTextMax=(int)strlen(IconName);
LvItem.state = 0;
LvItem.stateMask = 0;
LvItem.iGroupId=groupid;
int varinttmp=IconFile(buff,lpTray,ImgList);
LvItem.iImage=varinttmp;
ImageList_ReplaceIcon(himl2,varinttmp,lpTray[ImgList].hIcon);

SendDlgItemMessage(hwnd,IDC_LIST1,LVM_INSERTITEM,0,(LPARAM)&LvItem);
ListItem++;

LVGROUP group;

group.cbSize = sizeof(LVGROUP);
group.mask = LVGF_ALIGN | LVGF_GROUPID | LVGF_HEADER |LVGF_STATE;
group.pszHeader = L"titre";
group.cchHeader = wcslen(L"titre");
group.iGroupId = groupid;
group.uAlign = LVGA_HEADER_LEFT;
group.state = LVGS_NORMAL;
/*group.pszFooter = L"footer";
group.cchFooter = wcslen(L"footer"); */

//SendMessage(hwndLV,LVM_ENABLEGROUPVIEW,1, 0 );
ListView_EnableGroupView(GetDlgItem(mainHwnd,IDC_LIST1),TRUE);
//SendMessage(hwndLV,LVM_INSERTGROUP,(WPARAM) groupid, (LPARAM) &group );
if(ListView_InsertGroup(GetDlgItem(mainHwnd,IDC_LIST1),-1,&group)==-1)MessageBox(0,"error",0,0);
ListView_EnableGroupView(GetDlgItem(mainHwnd,IDC_LIST1),TRUE);
if(ListView_IsGroupViewEnabled(GetDlgItem(mainHwnd,IDC_LIST1))==TRUE)MessageBox(0,"true",0,0);

si kelk'1 pouvait m'apporter de l'aide merci
youpi :)
0
Rejoignez-nous