netegg 发表于 2012-9-1 01:29:09

本帖最后由 netegg 于 2012-9-1 01:44 编辑

回复 16# kk_lee69
合起来写吧

Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
Local $aHit = _GUICtrlListView_HitTest($hListView)
If $aHit Then _GUICtrlListView_ClickItem($hListView, $aHit)
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
Local $Index = DllStructGetData($tInfo, "Index")
_GUICtrlListView_SetItemChecked($hListView, -1, False)
_GUICtrlListView_SetItemChecked($hListView, $Index)

kk_lee69 发表于 2012-9-1 01:48:27

回复 17# netegg

呵呵 果然 點擊順多了 也有想要的效果只差在一個地方 還能修正嗎
就是 點擊到 非項目區域....也就是說 LISTVIEW 有顯示 但是 實際上 沒資料的區域
就會變成 全選了

netegg 发表于 2012-9-1 01:52:01

本帖最后由 netegg 于 2012-9-1 01:56 编辑

回复 18# kk_lee69
什么意思,非资料区不操作?

kk_lee69 发表于 2012-9-1 02:10:58

回复 19# netegg


點到紅色區域範圍會變成checkBox 全選

netegg 发表于 2012-9-1 02:23:29

回复 20# kk_lee69

.....
Case $NM_CLICK
Local $aHit = _GUICtrlListView_HitTest($hListView)
If $aHit Then _GUICtrlListView_ClickItem($hListView, $aHit)
If $aHit <> -1 Then
   $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
   Local $Index = DllStructGetData($tInfo, "Index")
   _GUICtrlListView_SetItemChecked($hListView, -1, False)
   _GUICtrlListView_SetItemChecked($hListView, $Index)
EndIf
.....

kk_lee69 发表于 2012-9-1 02:34:51

回复 21# netegg

OK 了非常感謝 蛋大的 幫忙~~ 您真辛苦這麼晚了 還沒睡...呵呵

我自己多加了 一段程式...處理 當 沒有選中任何東西的時候 把前面的打勾取消....

        If $aHit = -1 Then
        $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
        Local $Index = DllStructGetData($tInfo, "Index")
        _GUICtrlListView_SetItemChecked($hListView, -1, False)
        EndIf

netegg 发表于 2012-9-1 02:39:21

本帖最后由 netegg 于 2012-9-1 02:40 编辑

回复 22# kk_lee69
这个有点累了,功能代码一行就够了

...
Else
_GUICtrlListView_SetItemChecked($hWnd, -1, False)
endif
....

kk_lee69 发表于 2012-9-1 02:41:05

回复 23# netegg

@@ 對ㄟ 我怎麼沒想到用 ELSE ...{:face (394):}

netegg 发表于 2012-9-2 01:19:35

回复 1# kk_lee69
代码换个位置精简下吧

Case $NM_CLICK ; Sent by a list-view control when user clicks an item with left mouse button
    Local $aHit = _GUICtrlListView_HitTest($hListView)
    If $aHit Then _GUICtrlListView_ClickItem($hListView, $aHit)
    _GUICtrlListView_SetItemChecked($hListView, -1, False)
    If $aHit <> -1 Then
      $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
      Local $Index = DllStructGetData($tInfo, "Index")
      _GUICtrlListView_SetItemChecked($hListView, $Index)
    EndIf

kk_lee69 发表于 2012-9-2 01:38:23

回复 25# netegg

蛋大 無法編輯 我按下編輯 出現 沒有定義...好像被歸類到已解決 會出現這樣的問題

netegg 发表于 2012-9-2 01:48:50

回复 26# kk_lee69
无所谓,自己知道就行了,这个问题不大,只是说一下而已,无大碍,不影响效率

hollandmfq 发表于 2014-7-12 09:41:56

正好用到,谢谢分享!

dunphy 发表于 2014-9-27 23:04:29

回复 7# kk_lee69


    点击非选择区域,怎么不会变成全选。还有单你左键点CHECKBOX 成了蓝色高亮并打勾后,再用右键点击一样能勾选,此时能不能设置右键点击无效????

rdctgvf 发表于 2015-1-30 00:10:57

不错~真好需要中~~~
页: 1 [2]
查看完整版本: [已解决] ListView 加上 CheckBox 风格后…CheckBox 如何变成单选的…