找回密码
 加入
搜索
查看: 3832|回复: 19

关于_GUICtrlListview_CopyItems,高手来帮忙看看这个函数为什么没效果?

[复制链接]
发表于 2009-1-31 02:22:10 | 显示全部楼层 |阅读模式
本帖最后由 ceoguang 于 2010-2-2 22:32 编辑

RT
Func _MoreCopyRight()
        $n = InputBox ( "", "请输入数量" , "")
        If $n <> "" Then
                Do
                        $n -= 1
                        _GUICtrlListview_CopyItems($Listview1, $Listview2)
                        MsgBox(0,"",$n)
                Until $n = 0
        EndIf
EndFunc

有什么方法可以让_GUICtrlListview_CopyItems执行$n次?
 楼主| 发表于 2009-1-31 17:04:58 | 显示全部楼层
再顶,希望有高人前来打救
发表于 2009-1-31 18:08:44 | 显示全部楼层
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#include <GuiListview.au3>
#Region ### START Koda GUI section ### Form=
Local $iExListviewStyle = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES, $LVS_EX_GRIDLINES, $LVS_EX_CHECKBOXES, $LVS_EX_DOUBLEBUFFER)
$Form1 = GUICreate("Form1", 634, 454, 192, 114)
$List1 = GuiCtrlCreateListview("数值1|数值2|数值3", 0, 0, 300, 331)
$List2 = GuiCtrlCreateListview("数值1|数值2|数值3",310,0, 300, 331)
_GuiCtrlListview_SetColumnWidth($List1, 0,450)
GUICtrlSendMsg($List1, $LVM_SETEXTENDEDListviewSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)

$item1 = GUICtrlCreateListviewItem("数据内容1|100|1", $List1)
$item2 = GUICtrlCreateListviewItem("数据内容2|100|2", $List1)
$item3 = GUICtrlCreateListviewItem("数据内容2|100|3", $List1)
$item4 = GUICtrlCreateListviewItem("数据内容2|100|4", $List1)
$item5 = GUICtrlCreateListviewItem("数据内容2|100|5", $List1)
$item6 = GUICtrlCreateListviewItem("数据内容2|100|6", $List1)

$hj1=GUICtrlCreateInput("",400,350,100,20)
$hj2=GUICtrlCreateInput("",520,350,100,20)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$cont=_GUICtrlListView_GetItemCount ($List1)
$h1=0
$h2=0
for $i=0 to $cont-1
        $S=_GUICtrlListView_GetItemTextArray($List1, $i)
        $h1=$h1+$S[2]
        $h2=$h2+$S[3]
Next
GUICtrlSetData($hj1,$H1)
GUICtrlSetData($hj2,$H2)

_MoreCopyRight()

Func _MoreCopyRight()
        $n = InputBox ( "", "请输入数量" , "")
        $m=$n
        If $n <> "" Then
                Do
                        _GUICtrlListView_ClickItem ($List1,$m-$n)
                        _GUICtrlListview_CopyItems($List1, $List2)
                        MsgBox(0,"",$n)
                        $n -= 1
                Until $n = 0
        EndIf
EndFunc
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Form1
                Case $List1
        EndSwitch
WEnd
 楼主| 发表于 2009-1-31 19:04:05 | 显示全部楼层
大叔你会错意了,我的意思是copy所选行,而不是全部。
发表于 2009-1-31 20:04:16 | 显示全部楼层
Func _MoreCopyRight()
        $n = InputBox ( "", "请输入数量" , "")
        $m=2
        If $n <> "" Then
                Do
                        _GUICtrlListView_ClickItem ($List1,$m)
                        _GUICtrlListview_CopyItems($List1, $List2)
                        MsgBox(0,"",$n)
                        $n -= 1
                Until $n = 0
        EndIf
EndFunc
发表于 2009-1-31 20:05:24 | 显示全部楼层
举一反三吗,笨~~~~~
 楼主| 发表于 2009-1-31 21:26:58 | 显示全部楼层
都不是.
我是用GuiRegisterMsg注册了$NM_RCLICK事件,要的是右键所选行,也就是用户所选行,_GUICtrlListView_ClickItem选出来的没有意义.
一楼的代码怪在不是执行不了,而是只执行一次.
btw:大叔真是大好人一个!!! lol
发表于 2009-1-31 23:41:50 | 显示全部楼层
判断用户所选的$n,ClickItem  N次就行了,当你拷贝一次后所选字段会失去焦点的,所以要ClickItem一下,达到重选目的。

[ 本帖最后由 顽固不化 于 2009-1-31 23:43 编辑 ]
 楼主| 发表于 2009-2-1 08:18:00 | 显示全部楼层
如果是那样的话直接读$List2的最后一行就OK了。
发表于 2009-2-1 14:40:33 | 显示全部楼层
不知你是啥意思。
 楼主| 发表于 2009-2-1 20:59:46 | 显示全部楼层
那就是直接复制列表2的最后一个
 楼主| 发表于 2009-2-1 23:36:48 | 显示全部楼层
ls的
For $j=1 to 10
这里的10是什么意思?为什么是10
btw:这个也不能copy指定的次数
发表于 2009-2-2 12:05:13 | 显示全部楼层
你说出你的原意来,大家分析。拷贝list1的,就必须在其段上再点一次。当然,复制完成第一次后你也可以在list2里找到最后一行,再次复制。

复制list1的不点不行,不点就失去焦点。同时也应该注意,在“点”(选择段)与“复制”动作之间要有足够的时间。否则“复制”的动作还没完成,“点选”动作就开始了,造成丢失,这样还是复制不到任何的。“复制”的动作太长,这也许是原函数存在的不足。

[ 本帖最后由 顽固不化 于 2009-2-2 12:25 编辑 ]
 楼主| 发表于 2009-2-2 20:18:29 | 显示全部楼层
原帖由 顽固不化 于 2009-2-2 12:05 发表
你说出你的原意来,大家分析。拷贝list1的,就必须在其段上再点一次。当然,复制完成第一次后你也可以在list2里找到最后一行,再次复制。

11#就正是这个意思
 楼主| 发表于 2009-2-2 20:19:00 | 显示全部楼层
原帖由 coolvirus 于 2009-2-2 17:44 发表
我晕,自问自答,10就是要copy的次数啊,你可以改成其他数字,也可以用变量代替,再你的例子里不是用了$n了吗?把10改成$n就行啦!

你测试过没有,是不能复制10次的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-1 01:20 , Processed in 0.112009 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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