Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] GUICtrlCreateListView - отмена выделения (http://forum.oszone.net/showthread.php?t=337627)

-TRM- 09-11-2018 12:38 2840004

GUICtrlCreateListView - отмена выделения
 
Приветствую, возможно ли сделать так, чтобы при нажатии на пункт элемент и элементы всей строки не выделялись (синим фоном) ?

Creat0R 10-11-2018 19:53 2840205

Возможно.
Нужно отслеживать системные сообщения о выделений (фокус).

-TRM- 12-11-2018 11:48 2840363

Creat0R, Это через WM_COMMAND ? Если ДА-без него никак?

Creat0R 13-11-2018 02:19 2840454

-TRM-,
Код:

#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>

Global $hListView

GUICreate("WM_NOTIFY Demo", 400, 300)
$hListView = GUICtrlCreateListView("", 2, 2, 394, 268)

_GUICtrlListView_SetColumnWidth($hListView, 0, 90)
_GUICtrlListView_AddColumn($hListView, "Items", 100)
_GUICtrlListView_AddItem($hListView, "Item 1")
_GUICtrlListView_AddItem($hListView, "Item 2")
_GUICtrlListView_AddItem($hListView, "Item 3")

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState()

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
        Local $hWndFrom, $iCode, $tNMHDR, $hWndListView
       
        $hWndListView = $hListView
       
        If Not IsHWnd($hListView) Then
                $hWndListView = GUICtrlGetHandle($hListView)
        EndIf
       
        $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
       
        $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        $iCode = DllStructGetData($tNMHDR, "Code")
       
        Switch $hWndFrom
                Case $hWndListView
                        Switch $iCode
                                Case $LVN_ITEMCHANGING; An item is changing
                                        ;Return True; prevent the change
                                        ;Return False; allow the change
                                        Return 1
                                Case $LVN_BEGINDRAG, $LVN_BEGINRDRAG ;A drag-and-drop operation involving the left/right mouse button is being initiated
                                        Return 1
                        EndSwitch
        EndSwitch
       
        Return $GUI_RUNDEFMSG
EndFunc


Creat0R 03-03-2019 04:06 2860968

Цитата:

Цитата -TRM-
без него никак? »

Можно использовать GUICtrlSetState($hListView, $GUI_DISABLE), но тогда будет видно что элемент неактивный.
Или так:

Код:

#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>

Global $hListView

GUICreate("UnSelect", 400, 300)
$hListView = GUICtrlCreateListView("", 2, 2, 394, 268)

_GUICtrlListView_SetColumnWidth($hListView, 0, 90)
_GUICtrlListView_AddColumn($hListView, "Items", 100)
_GUICtrlListView_AddItem($hListView, "Item 1")
_GUICtrlListView_AddItem($hListView, "Item 2")
_GUICtrlListView_AddItem($hListView, "Item 3")

GUISetState()
AdlibRegister('_UnSelect_LV', 10)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func _UnSelect_LV()
    _GUICtrlListView_SetItemSelected($hListView, -1, False, True)
EndFunc

но и тут не всё идеально, будет заметно выделение на долю секунды.


Время: 13:09.

Время: 13:09.
© OSzone.net 2001-