分享

[已解决]listview中怎样随键盘光标改变而读取相数据 http://www.autoitx.com/viewthread.php?tid=15087&highlight=listview

 mintecgame 2014-06-03
 本帖最后由 jycel 于 2010-4-30 18:38 编辑

解决方法:7楼
listview中我们可以通过鼠标点击一行,并获取相应数据,不知道通过键盘的光标来移动位置从而获取数据呢?
1.jpg
代码如下:
  1. #include <EditConstants.au3>
  2. #include <GUIConstantsEx.au3>
  3. #include <ListViewConstants.au3>
  4. #include <WindowsConstants.au3>
  5. #Include <GuiListView.au3>
  6. GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
  7. #Region ### START Koda GUI section ### Form=
  8. $Form1 = GUICreate("listview测试", 288, 243, 401, 193)
  9. $ListView1 = GUICtrlCreateListView("1|2|3|4", 8, 0, 273, 153)
  10. GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
  11. GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 50)
  12. GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 50)
  13. GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 50)
  14. GUICtrlCreateListViewItem("1|2|3|4", $ListView1)
  15. GUICtrlCreateListViewItem("21|22|23|24", $ListView1)
  16. GUICtrlCreateListViewItem("31|32|33|34", $ListView1)
  17. GUICtrlCreateListViewItem("41|42|43|44", $ListView1)
  18. GUICtrlCreateListViewItem("51|52|53|54", $ListView1)
  19. $Input1 = GUICtrlCreateInput("", 8, 168, 121, 21)
  20. $Input2 = GUICtrlCreateInput("", 160, 168, 121, 21)
  21. $Input3 = GUICtrlCreateInput("", 8, 200, 121, 21)
  22. $Input4 = GUICtrlCreateInput("", 160, 200, 121, 21)
  23. GUISetState(@SW_SHOW)
  24. #EndRegion ### END Koda GUI section ###

  25. While 1
  26.         $nMsg = GUIGetMsg()
  27.         Switch $nMsg
  28.                 Case $GUI_EVENT_CLOSE
  29.                         Exit

  30.         EndSwitch
  31. WEnd
  32. Func WM_NOTIFY($hWndGUI, $MsgID, $WParam, $LParam)
  33. Dim $lyListView1
  34.         Local $tagNMHDR, $Event, $hWndFrom, $IDFrom
  35.         Local $tagNMHDR = DllStructCreate("int;int;int", $LParam)
  36.         If @error Then Return $GUI_RUNDEFMSG
  37.         $IDFrom = DllStructGetData($tagNMHDR, 2)
  38.         $Event = DllStructGetData($tagNMHDR, 3)
  39.         $tagNMHDR = 0
  40.         Switch $IDFrom;选择产生事件的控件

  41.                 Case $ListView1

  42.                         Switch $Event; 选择产生的事件

  43.                                                                 Case $NM_CLICK ; 左击
  44.                                                                         $Index = _GUICtrlListView_GetSelectedIndices($ListView1)
  45.                                         If Not StringLen($Index) Then; 这里用以判断是否选定了ListViewItem
  46.                                                                                                 Return
  47.                                                                                 Else
  48.                                                                                         GUICtrlSetData($Input1,_GUICtrlListView_GetItemText($ListView1, Number($Index),0))
  49.                                                                                         GUICtrlSetData($Input2,_GUICtrlListView_GetItemText($ListView1, Number($Index),1))
  50.                                                                                         GUICtrlSetData($Input3,_GUICtrlListView_GetItemText($ListView1, Number($Index),2))
  51.                                                                                         GUICtrlSetData($Input4,_GUICtrlListView_GetItemText($ListView1, Number($Index),3))

  52.                                                                                 EndIf
  53.                                                                 Case $NM_DBLCLK ; 双击
  54.                                                        
  55.                                 Case $NM_RCLICK ; 右击

  56.                         EndSwitch
  57.         EndSwitch

  58.         Return $GUI_RUNDEFMSG
  59. EndFunc   ;==>WM_NOTIFY
复制代码

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多