找回密码
 加入
搜索
查看: 3287|回复: 7

[AU3基础] 用_GUICtrlListView_InsertGroup插入组名后排序混乱

  [复制链接]
发表于 2010-11-11 11:34:32 | 显示全部楼层 |阅读模式
本帖最后由 styledream 于 2010-11-11 11:40 编辑

创建了一个列表后,从数据文件中读取组名并插入,如图:

第一次加载数据时组名时显示正确


点击Button加载其它数据时组名就有点混乱了


由于对InsertGroup的使用不是很熟悉,看了许久的代码,仍然无法解决此问题
以下是关键源码:
Func CreateListView()     ;创建列表
        ;Local $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)
        Local $exStyles = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER, $LVS_EX_TRACKSELECT, $LVS_EX_SUBITEMIMAGES)
        $hListView = _GUICtrlListView_Create($myGUI, "", 126, 77, 467, 325, -1, -1, True) ; 最后一个选项调用 CoIn
        _GUICtrlListView_SetExtendedListViewStyle($hListView, $exStyles)
        ;Local $hListView = GUICtrlCreateListView("", 154, 40, 510, 406, $LVS_NOSORTHEADER, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER, $LVS_EX_TRACKSELECT))

        ; 加载图像
        $hImage = _GUIImageList_Create(16, 16, 5, 3)
        _GUIImageList_AddBitmap($hImage, '.\ico.bmp')
        _GUICtrlListView_SetImageList($hListView, $hImage, 1)

        ; 添加列
        _GUICtrlListView_InsertColumn($hListView, 0, "菜名", 120)
        _GUICtrlListView_InsertColumn($hListView, 1, "价格", 100)
        _GUICtrlListView_InsertColumn($hListView, 2, "菜名", 105)
        _GUICtrlListView_InsertColumn($hListView, 3, "价格", 125)

        ; 为列表视图控件分配100项目内存
        _GUICtrlListView_SetItemCount($hListView, 100)
        
        ; 添加项目
        LoadListView("咸骨粥")
EndFunc   ;==>CreateListView

Func LoadListView($sj)     ;加载数据到列表中
        ; 清除所有项目
        _GUICtrlListView_DeleteAllItems($hListView)
                        
        ; 添加项目
        Dim $myArray[100][2], $rows = 0
        Dim $count = 0, $line = 0, $nums = 0
        $myArray = IniReadSection(".\Food.dat", $sj)
        _GUICtrlListView_BeginUpdate($hListView)

                
        For $k = $myArray[0][0] To 1 Step -1 ;倒序添加项目,使组名正序

                ; 分离值
                $aItems = StringSplit($myArray[$k][1], "|")
                $line = Int($aItems[0] / 4)
                If (Mod($aItems[0], 4) <> 0) Then $line += 1
                $nums = 1

                ; 添加列表项目
                For $j = 1 To $line
                        _GUICtrlListView_AddItem($hListView, $aItems[$nums])

                        For $p = $nums + 1 To $nums + 3
                                If ($p <= $aItems[0]) Then
                                        _GUICtrlListView_AddSubItem($hListView, $rows, $aItems[$p], $p - $nums)
                                EndIf
                        Next

                        $rows += 1
                        $nums += 4
                Next

                ; 建立组
                _GUICtrlListView_EnableGroupView($hListView)
                _GUICtrlListView_InsertGroup($hListView, 0, $k, $myArray[$k][0])
                ;MsgBox(0,"","$k="&$k &@CRLF& "Name="&$myArray[$k][0])

                ; 添加组项目
                For $i = 0 To $line - 1
                        _GUICtrlListView_SetItemGroupID($hListView, $count, $k)
                        $count = $count + 1
                Next
                
                _GUICtrlListView_EndUpdate($hListView)
        Next
        
EndFunc   ;==>LoadListView
另外,列表头是否有美化的函数

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-11-11 13:40:29 | 显示全部楼层
呵呵,这个界面看似不错的.
发表于 2010-11-11 15:24:31 | 显示全部楼层
代码未看。但只是猜想,可否将不同分组定义不同数组以方便管理。
发表于 2010-11-11 20:46:28 | 显示全部楼层
代码我执行后是报错的!
发表于 2010-11-11 21:06:46 | 显示全部楼层
看起来不错,支持一下。
发表于 2010-11-12 08:07:57 | 显示全部楼层
回复 1# styledream
不知道能否放出完整代码以便于学习,谢谢!
 楼主| 发表于 2010-11-28 11:37:04 | 显示全部楼层
回复 6# newuser

现在就差这个错误没搞定,把它完善了,就放出源码共享~~~
发表于 2010-11-29 13:50:18 | 显示全部楼层
回复 7# styledream
谢谢,祝早日成功!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-21 16:35 , Processed in 0.081029 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表