列表视图控件中的分组 [英] Grouping in List View Controls

查看:117
本文介绍了列表视图控件中的分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在显示在平铺视图"中的ListView控件中对项目进行分组,但是当我这样做时,所有子项目文本都消失了(使用报表视图"时也会发生同样的情况).

这是我正在使用的代码,有什么想法吗?

I am trying to group the items in a ListView Control that displays in Tile View but when I do all the sub item text disappears (the same happens in when using Report View).

Here is the code I''m using, any ideas?

//temporary use Report View 
//SetTileView();

//Create 2 Groups
{
LVGROUP lvg;
lvg.mask      = LVGF_HEADER | LVGF_ALIGN | LVGF_GROUPID | LVGF_STATE;
lvg.pszHeader = _T("Group 1");
lvg.iGroupId  = 0;
lvg.uAlign    = LVGA_FOOTER_LEFT;
lvg.state     = LVGS_NORMAL;
SendMessage(hList, LVM_INSERTGROUP, -1, (LPARAM)&lvg );
lvg.pszHeader = _T("Group 2");
lvg.iGroupId  = 1;
SendMessage(hList, LVM_INSERTGROUP, -1, (LPARAM)&lvg );
}

//Set number, style and size of Columns
{
LVCOLUMN lvc; 
int iCol; 

lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; 
lvc.fmt = LVCFMT_LEFT;
lvc.pszText =_T("Col");
lvc.cx = COLWIDTH;

// Add the columns. 
for (iCol = 0; iCol < VIEWCOLS; iCol++) 
 	{ 
 	lvc.iSubItem = iCol;
 	ListView_InsertColumn(hList, iCol, &lvc);
 	}	
}

//Set item amd sub item text and number of displayed items
{
UINT uCols[3] = {1,2,3};
LVTILEINFO lvti;
lvti.cbSize = sizeof(LVTILEINFO);
lvti.cColumns = VIEWCOLS;
lvti.puColumns = uCols;

LVITEM lvi;
memset(&lvi, 0, sizeof(LV_ITEM));
lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_GROUPID;
lvi.iGroupId = 0;

for(int n = 0; n < iNumLibs; n++)
 	{
 	lvi.iItem = n;
 	lvi.pszText = pszItemText[n];
 	lvi.iImage = n;
 	lvi.iSubItem = 0;
	ListView_InsertItem(hList, &lvi);
 	lvi.iSubItem = 1;
 	ListView_SetItem(hList, &lvi);
 	lvi.iSubItem = 2;
 	ListView_SetItem(hList, &lvi);
 	lvi.iSubItem = 3;
 	ListView_SetItem(hList, &lvi);
 	lvti.iItem = n;
 	ListView_SetTileInfo(hList, &lvti);
 	}
}

{
UINT uCols[3] = {1,2,3};
LVTILEINFO lvti;
lvti.cbSize = sizeof(LVTILEINFO);
lvti.cColumns = VIEWCOLS;
lvti.puColumns = uCols;

LVITEM lvi;
memset(&lvi, 0, sizeof(LV_ITEM));
lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_GROUPID;
lvi.iGroupId = 1;

for(int n = 0; n < 1; n++)
        {
        lvi.iItem = n;
        lvi.pszText = _T("Cert01");
        lvi.iImage = n;
        lvi.iSubItem = 0;
        ListView_InsertItem(hList, &lvi);
        }
}

ListView_EnableGroupView(hList, TRUE);
}

推荐答案

感谢enhzflep的链接,并对照我自己的代码检查了示例,我得到了答案:-

在"for(int n = 0; n< iNumLibs; n ++)"循环中设置三个子项目时,我应该使用:-

SendMessage(hList,LVM_SETITEMTEXT,n,(LPARAM)&lvi);

不:-

ListView_SetItem(hList,&lvi);
Thanks to enhzflep for the link, having checked the sample against my own code I have the answer:-

When setting the three sub-items in the "for(int n = 0; n < iNumLibs; n++)" loop I should have used:-

SendMessage(hList, LVM_SETITEMTEXT, n, (LPARAM)&lvi);

Not:-

ListView_SetItem(hList, &lvi);


这篇关于列表视图控件中的分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆