找回密码
 加入
搜索
查看: 2212|回复: 12

[AU3基础] LISTVIEW 处于 DISABLE状态后 则滚动条无法拉动,有办法 可以拉动吗??

 火.. [复制链接]
发表于 2016-10-16 19:06:37 | 显示全部楼层 |阅读模式
LISTVIEW 处于 DISABLE状态后 则滚动条无法拉动,有办法 可以拉动吗??
或者 改变处于 READONLY 状态 可以吗??

简单的说就是想要 LISTVIEW 处于  只读  的状态 ,只想让USER 可以拉动
看内容而已…………

有办法做到吗???


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-10-17 19:46:24 | 显示全部楼层
是否可以发送按键下来实现拖动?
发表于 2016-10-18 18:49:17 | 显示全部楼层
本帖最后由 tubaba 于 2016-10-18 18:55 编辑

回复 1# kk_lee69


    不知道你想要什么效果,被禁用了应该就不能动了吧.     listview本来就是只读的啊?或者你想要保持列宽不变?也就是列表头不能被拖动?


如果是这样,表头的句柄获取$hTab1_ListView2_Header = _GUICtrlListView_GetHeader($hTab1_ListView2)
注册WM_NOTIFY消息.然后只要在拖动表头的消息$HDN_BEGINTRACK, $HDN_BEGINTRACKW, $HDN_ITEMCHANGING, $HDN_ITEMCHANGINGW 发生后返回 0 就成了
 楼主| 发表于 2016-10-18 19:10:05 | 显示全部楼层
回复 3# tubaba

呵呵 因為我使用了太多 左擊 雙左擊 右擊 的功能

所以 想說  DISABLE 這樣我就不用再特別處理 這些問題了

目的是 讓 USER 只能看 不能使用其他功能
发表于 2016-10-18 19:35:22 | 显示全部楼层
本帖最后由 tubaba 于 2016-10-18 19:39 编辑

回复 4# kk_lee69
    那也行的,消息过滤,除了滚动条消息之外,其它一律return false


在列表更新完成以后注册WM_NOTIFY,或者设置一个全局标志.然后消息过滤
 楼主| 发表于 2016-10-18 19:42:48 | 显示全部楼层
回复 5# tubaba

可是有個缺憾  你知道 ENABLE 跟 DISABLE 顏色不一樣   USER 會知道有分別

但是 我 鎖掉 消息後 顏色是不會變的  因此  不會有 啟用 跟不啟用的差別  

所以後來就在想辦法 看看能不能變成半透明  沒想到這條路也是不通....
发表于 2016-10-18 20:33:55 | 显示全部楼层
禁用控件后,另作按钮滚动吧.
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>

$GUI = GUICreate("Listview Custom Draw", 400, 300)

$ListView = GUICtrlCreateListView( "Column 1|Column 2|Column 3", 2, 2, 394, 268)
$hListView = GUICtrlGetHandle(-1)
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_NOSCROLL))

For $i = 1 To 35
        _GUICtrlListView_AddItem($hListView, "Row" & $i & ": Col 1", $i - 1)
        For $j = 1 To 2
                _GUICtrlListView_AddSubItem($hListView, $i - 1, "Row" & $i & ": Col " & $j + 1, $j)
        Next
Next
GUICtrlSetState($ListView, $gui_disable)

$button1 = GUICtrlCreateButton('向上', 290, 280, 50, 18)
$button2 = GUICtrlCreateButton('向下', 340, 280, 50, 18)
GUISetState()
While 1
        $msg =  GUIGetMsg()
    Switch $msg
                Case  $GUI_EVENT_CLOSE
                        GUIDelete()
                        Exit
                Case $button2
                        _GUICtrlListView_Scroll($hListView, 0, 150)
                Case $button1
                        _GUICtrlListView_Scroll($hListView, 0, -150)
        EndSwitch
WEnd

评分

参与人数 1金钱 +40 贡献 +8 收起 理由
kk_lee69 + 40 + 8 感謝 回復 這也是個辦法!!

查看全部评分

 楼主| 发表于 2016-10-19 09:06:11 | 显示全部楼层
回复 7# Alam

這個想法不錯了  也是個解決辦法!!  感謝
发表于 2016-10-21 10:13:34 | 显示全部楼层
回复 7# Alam

横的滑块如何拉动?
发表于 2016-10-21 18:03:47 | 显示全部楼层
_GUICtrlListView_Scroll($hListView, 100, 0)
回复 9# chzj589
发表于 2016-10-21 18:13:41 | 显示全部楼层
回复 10# Alam
横的滑块向右这样可以。
_GUICtrlListView_Scroll($hListView, 5, -10)
向左呢?
发表于 2016-10-21 19:38:14 | 显示全部楼层
回复 11# chzj589
_GUICtrlListView_Scroll($hListView, -100, 0)
发表于 2016-10-21 21:33:14 | 显示全部楼层
回复 12# Alam

谢谢!
横的滑块向右:
_GUICtrlListView_Scroll($hListView, 100, 0)
横的滑块向左:
_GUICtrlListView_Scroll($hListView, -100, 0)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-25 17:04 , Processed in 0.092241 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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