|
本帖最后由 xkjy3000 于 2013-7-13 13:59 编辑
在炫彩库源码listView.cpp中查找函数:void ListView_CalculateView(HELE hEle),将代码替换如下:
- //计算视图大小
- void ListView_CalculateView(HELE hEle)
- {
- listView_ *pListView=(listView_*)hEle;
- RECT rect;
- XEle_GetClientRect(hEle,&rect);
- int right=rect.right-XSView_GetSpacingRight(hEle);
- right=right-XSView_GetScrollBarWidth(hEle);
- int t1=XSView_GetSpacingLeft(hEle);
- int t2=XSView_GetSpacingTop(hEle);
- //计算分组项
- int leftSpace=t1+pListView->leftAlign; //边框左间隔
- int topSpace=t2+pListView->topAlign; //边框上间隔
- int x=leftSpace; //X叠加
- int y=topSpace; //Y叠加
- int y2=topSpace; //计算每行最大的bottom值
- int count=XArray_GetCount(pListView->hArrayList);
- int countGroup=XArray_GetCount(pListView->hArrayGroupList);
- int itemCX=pListView->iconSize.cx+pListView->left+pListView->right; //项宽度
- //计算视图//////////////////////////////////////////////////
- for(int g=0;g<countGroup;g++)
- {
- listView_group_ *pGroup=(listView_group_*)XArray_GetAt(pListView->hArrayGroupList,g);
- y+=pListView->groupHeight;
- int countItem=XArray_GetCount(pGroup->hArrayList);
- if(pGroup->bExpand)
- {
- if(countItem<1)
- {
- y+=pListView->groupHeight; //空行高度
- }
- else
- {
- for(int i=0;i<countItem;i++)
- {
- listView_item_ *pItem=(listView_item_*)XArray_GetAt(pGroup->hArrayList,i);
- x+=itemCX+pListView->columnSpace;
- int bottpm=y+pListView->top+pListView->bottom+pListView->iconSize.cy+pListView->iconTextSpace+(pItem->rcText.bottom-pItem->rcText.top);
- if(bottpm>y2)
- {
- y2=bottpm;
- }
- if( (x+itemCX+pListView->columnSpace)>right) //换行
- {
- x=leftSpace+itemCX+pListView->columnSpace;
- if ( i == countItem-1 )
- {
- y2 += pListView->top + pListView->bottom + pListView->iconSize.cy + pListView->iconTextSpace + (pItem->rcText.bottom-pItem->rcText.top);
- }
- y=y2+pListView->rowSpace; //行间隔
- }
- }
- y=y2+pListView->rowSpace; //行间隔
- x=leftSpace;
- }
- }
- }
- y2=y;
- //计算未分组项
- for(int i=0;i<count;i++)
- {
- listView_item_ *pItem=(listView_item_*)XArray_GetAt(pListView->hArrayList,i);
- x=x+itemCX+pListView->columnSpace;
- int bottom=y+pListView->top+pListView->bottom+pListView->iconSize.cy+pListView->iconTextSpace+(pItem->rcText.bottom-pItem->rcText.top);
- if(bottom>y2)
- {
- y2=bottom;
- }
- if((x+itemCX+pListView->columnSpace)>right) //换行
- {
- x=leftSpace+itemCX+pListView->columnSpace;
- if ( i == count-1 )
- {
- y2 += pListView->top + pListView->bottom + pListView->iconSize.cy + pListView->iconTextSpace + (pItem->rcText.bottom-pItem->rcText.top);;
- }
- y=y2+pListView->rowSpace; //行间隔
- }
- }
- y=y2+pListView->rowSpace; //列间隔
- XSView_SetSize(hEle,10,y);
- XTRACE("y2= %d \n",y2);
- }
复制代码 重新编译后就OK了
|
|