找回密码
 加入
搜索
查看: 2430|回复: 3

[AU3基础] 请教怎么使用鼠标事件删除列表行[已解决]

[复制链接]
发表于 2010-4-21 19:40:50 | 显示全部楼层 |阅读模式
本帖最后由 cdrobin 于 2010-4-22 01:28 编辑

双击可以显示鼠标所选择的数据,我想右键删除我所选择的那一行怎么可以实现!

论坛某位高手所写的代码!
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GUIListView.au3>

$Form1 = GUICreate("Form1", 410, 310)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

$ListView1 = GUICtrlCreateListView("||", 8, 8, 400, 300)
GUISetState(@SW_SHOW)
For $I = 1 To 10
        GUICtrlCreateListViewItem($I, $ListView1)
Next

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func WM_NOTIFY($hWndGUI, $MsgID, $WParam, $LParam)

        Local $tagNMHDR, $Event, $hWndFrom, $IDFrom
        Local $tagNMHDR = DllStructCreate("int;int;int", $LParam)
        If @error Then Return $GUI_RUNDEFMSG
        $IDFrom = DllStructGetData($tagNMHDR, 2)
        $Event = DllStructGetData($tagNMHDR, 3)
        $tagNMHDR = 0
        Switch $IDFrom;选择产生事件的控件

                Case $ListView1

                        Switch $Event; 选择产生的事件

                                Case $NM_CLICK ; 左击
;~                                         ...

                                Case $NM_DBLCLK ; 双击
                                        $Index = _GUICtrlListView_GetSelectedIndices($ListView1)
                                        If Not StringLen($Index) Then; 这里用以判断是否选定了ListViewItem
                                                MsgBox(0, "", "未选定")
                                                Return
                                        EndIf
                                        MsgBox(0, 0, _GUICtrlListView_GetItemText($ListView1, Number($Index), 0))

                                Case $NM_RCLICK ; 右击
;~                                         ...
                        EndSwitch

        EndSwitch

        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-4-21 21:14:22 | 显示全部楼层
本帖最后由 水木子 于 2010-4-21 21:56 编辑

实现了LZ的要求,随便帮LZ整理了下代码。
#include <GUIListView.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUICreate("ListView", 380, 350)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
$ListView1 = GUICtrlCreateListView("|", 5, 5, 370, 300)
_GUICtrlListView_SetColumnWidth($ListView1, 0, 100)
GUISetState(@SW_SHOW)
For $I = 1 To 10
        GUICtrlCreateListViewItem($I, $ListView1)
Next

Do
Until GUIGetMsg() = -3

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
        Local $tNMTV, $iCode, $hItem
        $tNMTV = DllStructCreate($tagNMTVDISPINFO, $ilParam)
        $iCode = DllStructGetData($tNMTV, "Code")
        $Index = _GUICtrlListView_GetSelectedIndices($ListView1)
        If $iCode = $NM_DBLCLK And StringLen($Index) <> 0 Then MsgBox(0, 0, _GUICtrlListView_GetItemText($ListView1, Number($Index), 0))
        If $iCode = $NM_RCLICK And StringLen($Index) <> 0 Then _GUICtrlListView_DeleteItem($ListView1, Number($Index))
EndFunc   ;==>WM_NOTIFY

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-4-22 01:28:10 | 显示全部楼层
感谢 水木子 今天又学到东西了!!
谢谢了!!!!
发表于 2010-4-22 10:14:39 | 显示全部楼层
学习一下如何注册消息
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-2 10:12 , Processed in 0.079845 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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