找回密码
 加入
搜索
查看: 4716|回复: 8

[GUI管理] ListView关于返回值问题?[已解决]

  [复制链接]
发表于 2012-11-10 00:43:09 | 显示全部楼层 |阅读模式
本帖最后由 blue_dvd 于 2012-11-10 20:15 编辑

今天发现一个问题?
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

GUICreate("ListView Click Item", 400, 300)
$hListView = GUICtrlCreateListView("", 2, 2, 394, 268, "", $LVS_EX_FULLROWSELECT+$LVS_EX_CHECKBOXES)
        _GUICtrlListView_InsertColumn($hListView, 0, "Column 1", 200)
        _GUICtrlListView_InsertColumn($hListView, 0, "Column 2", 150)

GUISetState()

Local $LV_Item[1], $CheckNum = 0

For $i = 1 To 20
        _ArrayAdd($LV_Item, GUICtrlCreateListViewItem("Row "&$i&": Col 1", $hListView))
                MsgBox(0,"读取$LV_Item",$LV_Item[$i])
Next
$LV_Item[0] = UBound($LV_Item)-1

        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
        GUIDelete()
运行值从4开始,为什么呢?

改一下
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

GUICreate("ListView Click Item", 400, 300)
$hListView = GUICtrlCreateListView("", 2, 2, 394, 268, "", $LVS_EX_FULLROWSELECT+$LVS_EX_CHECKBOXES)
        _GUICtrlListView_InsertColumn($hListView, 0, "Column 1", 200)
        _GUICtrlListView_InsertColumn($hListView, 0, "Column 2", 150)

GUISetState()

Local $LV_Item[1], $CheckNum = 0

For $i = 1 To 20
       _ArrayAdd($LV_Item, _GUICtrlListView_AddItem($hListView, "Row "&$i&": Col 1",$i))
      MsgBox(0,"读取$LV_Item",$LV_Item[$i])
Next
$LV_Item[0] = UBound($LV_Item)-1

        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
        GUIDelete()
值却是0开始
GUICtrlCreateListViewItem() 可以返回控件Id,_GUICtrlListView_AddItem()应该返回不了ID,那有没有专门的函数读取其ID呢?
懂的赐教一下!谢谢了!
3楼annybody正解!
发表于 2012-11-10 07:39:50 | 显示全部楼层
没明白什么意思
发表于 2012-11-10 11:01:06 | 显示全部楼层
回复 1# blue_dvd

楼主,代码是你自己写的吗??有运行过吗?
第一段代码运行值不是5!
是4

原因是:用户创建的控件ID是从由正数3开始的正整数表示,前面的代码
$hListView = GUICtrlCreateListView("", 2, 2, 394, 268, "", $LVS_EX_FULLROWSELECT+$LVS_EX_CHECKBOXES)

已经创建了一个控件,所以它的ID号是3(也就是,变量$hListView的值是3),后面的当然是4,5,6,7,8,9.....啦

第二段代码,值是从0开始的,很明显啦,看下
_GUICtrlListView_AddItem()
的帮助文档可以知道,它返回的是索引,第一个项目的索引当然是0!
要操作它也是通过索引,所以不必专门函数读取ID~~
发表于 2012-11-10 13:51:08 | 显示全部楼层
listviewitem本来就是从0开始算的
发表于 2012-11-10 13:51:19 | 显示全部楼层
本帖最后由 netegg 于 2012-11-10 13:54 编辑

另外,基本函数创建的控件是按创建顺序的依次计算的,是所有控件的顺序,不是单独的算listviewitem
udf是在句柄hlistview里单独计算的,从0开始
 楼主| 发表于 2012-11-10 20:00:05 | 显示全部楼层
本帖最后由 blue_dvd 于 2012-11-10 20:03 编辑

回复 3# annybaby
感觉你才是高手,比较重细节,netegg太厉害了,可能很难理解我这种新手的问题!
运行值是4,所以GUICtrlCreateListView() 第一个返回值应该是4,接下来是5,6......!
_GUICtrlListView_AddItem()第一个返回值应该是0,1,2,3......!
我没看到GUICtrlCreateListView()索引时从3开始的,那为什么第一个值不是3呢?
 楼主| 发表于 2012-11-10 20:01:45 | 显示全部楼层
本帖最后由 blue_dvd 于 2012-11-10 20:03 编辑

回复 3# annybaby
刚才又仔细看了你的解释,你说得没错!做一下笔记!再次多谢annybaby!
发表于 2012-11-10 20:12:22 | 显示全部楼层
回复 6# blue_dvd


    哈哈,我也成高手了,第一次听说…

没有帮助文档和专用编辑器,很简单的程序我也写不出来…
 楼主| 发表于 2012-11-10 20:15:01 | 显示全部楼层
回复 3# annybaby
代码是自己写的,在是研究别人代码,想修改时总是不是要的值,所以才改写了一段测试代码,来检查这两个语句的值!我再开个问题!希望指教!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-24 20:32 , Processed in 0.117788 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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