Что нового

Как нарисовать CheckBox на заголовке ListView

pvnn

Осваивающий
Сообщения
289
Репутация
31
Доброго времени суток
Есть ListView с несколькими checkbox, которые берутся из ImageList.
Необходимо в заголовок ListView (колонка 0 и 2) добавить checkbox, при клике на который выделялась бы вся колонка. Смотрю в сторону функции:
Код:
_GUICtrlHeader_SetItemFormat ( $hWnd, $iIndex,BitOR($HDF_IMAGE,$HDF_STRING))

Но не пойму как выбрать из ImageList 2 рисунок


Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>

$Form1 = GUICreate("ListView с несколькими колонками CheckBox", 482, 407, -1, -1)

$hListView =  GUICtrlCreateListView ("Поле1|Поле2|Поле3",  8, 8, 457, 329,BitOR($LVS_REPORT,$LVS_SHOWSELALWAYS))
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
; Создать ImageList
$hImage = _GUIImageList_Create(16, 16, 5, 3)
_GUIImageList_AddIcon($hImage, @SystemDir & "\hnetcfg.dll", 2) ; UnCheck
_GUIImageList_AddIcon($hImage, @SystemDir & "\hnetcfg.dll", 1) ; Check
_GUICtrlListView_SetImageList($hListView, $hImage, 1)

For $i = 0 To 5
    _GUICtrlListView_AddItem($hListView, "Test", 0)
    _GUICtrlListView_AddSubItem($hListView, $i, "Test",0)
	_GUICtrlListView_AddSubItem($hListView, $i, "Test",2,0)
Next


 $hHdr = _GUICtrlListView_GetHeader($hListView)   ; Получить идентификатор залоловка ListView
 _GUICtrlHeader_SetItemFormat($hHdr, 0, BitOR($HDF_IMAGE,$HDF_STRING) )
 _GUICtrlHeader_SetItemFormat($hHdr, 2, BitOR($HDF_IMAGE,$HDF_STRING) )

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

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom,  $iCode, $tNMHDR, $hWndListView, $tInfo

    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")

    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    $iIndex = DllStructGetData($tInfo, "Index")

    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode

                Case $NM_CLICK
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
                    $itemindex = DllStructGetData($tInfo, "Index")
                    $subitemindex = DllStructGetData($tInfo, "SubItem")
                    $currentitemimage = _GUICtrlListView_GetItemImage($hWndListView, $itemindex, $subitemindex)
					ConsoleWrite(@SystemDir)
                        If $currentitemimage = 0 Then
                            _GUICtrlListView_SetItemImage($hWndListView, $itemindex, 1, $subitemindex)
                        ElseIf $currentitemimage = 1 Then
                            _GUICtrlListView_SetItemImage($hWndListView, $itemindex, 0, $subitemindex)
                        EndIf

                Case $LVN_COLUMNCLICK ; A column was clicked
                    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
					$ListViewColumn=DllStructGetData($tInfo, "SubItem") ; Возвращает индекс выделенной колонки
					_GUICtrlHeader_SetItemFormat($hHdr, $ListViewColumn, BitOR($HDF_IMAGE,$HDF_STRING))
            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,712
Репутация
1,348
pvnn [?]
как выбрать из ImageList 2 рисунок
Так же, как и для пунктов... там даже названия функций похожи
Код:
...
 $hHdr = _GUICtrlListView_GetHeader($hListView)   ; Получить идентификатор залоловка ListView
;~  _GUICtrlHeader_SetItemFormat($hHdr, 0, BitOR($HDF_IMAGE,$HDF_STRING) )
;~  _GUICtrlHeader_SetItemFormat($hHdr, 2, BitOR($HDF_IMAGE,$HDF_STRING) )
 _GUICtrlHeader_SetItemImage($hHdr, 0, 0)
 _GUICtrlHeader_SetItemImage($hHdr, 2, 0)
...
...
...
                Case $LVN_COLUMNCLICK ; A column was clicked
                    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
                    $ListViewColumn=DllStructGetData($tInfo, "SubItem") ; Возвращает индекс выделенной колонки
;~                     _GUICtrlHeader_SetItemFormat($hHdr, $ListViewColumn, BitOR($HDF_IMAGE,$HDF_STRING))
                    If $ListViewColumn <> 1 Then
                        $currentitemimage = _GUICtrlHeader_GetItemImage($hHdr, $ListViewColumn)
                        If $currentitemimage = 0 Then
                            _GUICtrlHeader_SetItemImage($hHdr, $ListViewColumn, 1)
                        ElseIf $currentitemimage = 1 Then
                            _GUICtrlHeader_SetItemImage($hHdr, $ListViewColumn, 0)
                        EndIf
                    EndIf
...
 
A

Alofa

Гость
Я сделал так:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>

Local $hGUI, $iListView, $hListView, $hImage, $hHdr

$hGUI = GUICreate("ListView с несколькими колонками CheckBox", 300, 200)

$iListView = GUICtrlCreateListView("Поле1|Поле2|Поле3", 10, 10, 280, 180, BitOR($LVS_REPORT, $LVS_SHOWSELALWAYS))
$hListView = GUICtrlGetHandle($iListView)
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
; Создать ImageList
$hImage = _GUIImageList_Create(16, 16, 5, 3)
_GUIImageList_AddIcon($hImage, @SystemDir & "\hnetcfg.dll", 2) ; UnCheck
_GUIImageList_AddIcon($hImage, @SystemDir & "\hnetcfg.dll", 1) ; Check
_GUICtrlListView_SetImageList($hListView, $hImage, 1)

For $i = 0 To 5
	_GUICtrlListView_AddItem($hListView, "Test", 0)
	_GUICtrlListView_AddSubItem($hListView, $i, "Test", 0)
	_GUICtrlListView_AddSubItem($hListView, $i, "Test", 2, 0)
Next

Local $hHdr = _GUICtrlListView_GetHeader($hListView) ; Получить идентификатор залоловка ListView
_GUICtrlHeader_SetItemImage($hHdr, 0, 0)
_GUICtrlHeader_SetItemImage($hHdr, 2, 0)

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

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
	#forceref $hWnd, $iMsg, $wParam
	Local $hWndFrom, $tNMHDR, $tInfo, $iSubItem, $iImage
	$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
	$hWndFrom = HWnd($tNMHDR.hWndFrom)
	If $hWndFrom = $hListView Then
		$tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
		$iSubItem = $tInfo.SubItem
		If $iSubItem <> 2 And $iSubItem <> 0 Then Return
		Switch $tNMHDR.Code
			Case $LVN_COLUMNCLICK
				$iImage = (_GUICtrlHeader_GetItemImage($hHdr, $iSubItem)) ? 0 : 1
				For $i = 0 To 5
					_GUICtrlListView_SetItemImage($hListView, $i, $iImage, $iSubItem)
				Next
				_GUICtrlHeader_SetItemImage($hHdr, $iSubItem, $iImage)
			Case $NM_CLICK
				$iIndex = $tInfo.Index
				$iImage = (_GUICtrlListView_GetItemImage($hListView, $iIndex, $iSubItem)) ? 0 : 1
				_GUICtrlListView_SetItemImage($hListView, $iIndex, $iImage, $iSubItem)
				Local $iCount
				For $i = 0 To 5
					$iCount += _GUICtrlListView_GetItemImage($hListView, $i, $iSubItem)
				Next
				_GUICtrlHeader_SetItemImage($hHdr, $iSubItem, (($iCount = 6) ? 1 : 0))
		EndSwitch
	EndIf
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
 

joiner

Модератор
Локальный модератор
Сообщения
3,460
Репутация
609
остается добавить
Код:
Case $NM_CLICK
;...........................
If Not $iImage Then _GUICtrlHeader_SetItemImage($hHdr, $iSubItem, $iImage);последней строчкой

то есть, если сняли хотя бы одну отметку в колонке, то с заголовка колонки тоже была снята отметка. хотя, тут вариант был бы лучше иконка с черным квадратом внутри чекбокса. как бы неполный выбор пунктов.
ну и проследить, если на всех пунктах поставлены отметки то и в заголовке появляется отметка чекбокса.
я это к тому, что тут уже не одна задача, а несколько. это чтобы все логично смотрелось

ну и все переменные нужно объявлять. локальные или глобальные. чтобы уж все до кучи было логично
 
A

Alofa

Гость
joiner сказал(а):
остается добавить
Код:
...;последней строчкой
Дак добавил же, только не последней строкой.

joiner сказал(а):
... иконка с черным квадратом внутри чекбокса.
Хочу себе в копилку все это.
Не подскажите .dll с такой иконкой?


Добавлено:
Сообщение автоматически объединено:

Переписал скрипт, но нужна иконка квадратика.
 

joiner

Модератор
Локальный модератор
Сообщения
3,460
Репутация
609
OffTopic:
Alofa [?]
Дак добавил же, только не последней строкой.
нет, не было. видимо, когда ты редактировал сообщение, я как раз копировал твой код. сейчас он не такой :smile:

насчет библиотеки не подскажу. просто мысль возникла.
если писать программу, то лучше свою библиотеку иконок иметь.
 
Автор
P

pvnn

Осваивающий
Сообщения
289
Репутация
31
InnI, Alofa, joiner спасибо большое за помощь! Тема решена.

Сделал так:
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>


Global $ChecHeaderkColumn=-1

$Form1 = GUICreate("ListView с несколькими колонками CheckBox", 482, 407, -1, -1)

$hListView =  GUICtrlCreateListView ("Поле1|Поле2|Поле3",  8, 8, 457, 329,BitOR($LVS_REPORT,$LVS_SHOWSELALWAYS))
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
; Создать ImageList
$hImage = _GUIImageList_Create(16, 16, 5, 3)
_GUIImageList_AddIcon($hImage, @SystemDir & "\hnetcfg.dll", 2) ; UnCheck
_GUIImageList_AddIcon($hImage, @SystemDir & "\hnetcfg.dll", 1) ; Check
_GUICtrlListView_SetImageList($hListView, $hImage, 1)

For $i = 0 To 5
    _GUICtrlListView_AddItem($hListView, "Test", 0)
    _GUICtrlListView_AddSubItem($hListView, $i, "Test2",1)
    _GUICtrlListView_AddSubItem($hListView, $i, "Test3",2,0)
Next
_GUICtrlListView_SetColumnWidth($hListView,0,100)
_GUICtrlListView_SetColumnWidth($hListView,1,$LVSCW_AUTOSIZE_USEHEADER)
_GUICtrlListView_SetColumnWidth($hListView,2,100)


; Создать UnCheck в заголовке ListView
 $hHdr = _GUICtrlListView_GetHeader($hListView)   ; Получить идентификатор залоловка ListView
 _GUICtrlHeader_SetItemImage($hHdr, 0, 0)  ; UnCheck в заголовке column=0 ListView
 _GUICtrlHeader_SetItemImage($hHdr, 2, 0)  ; UnCheck в заголовке column=2 ListView

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

While 1
	If $ChecHeaderkColumn<>-1 Then
		If _GUICtrlHeader_GetItemImage($hHdr,$ChecHeaderkColumn)=0 Then
			CheckUnCheckAll($hListView,$ChecHeaderkColumn,0)
		Else
			CheckUnCheckAll($hListView,$ChecHeaderkColumn,1)
		EndIf
		$ChecHeaderkColumn=-1
	EndIf

    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd


; Выделить/Снять выделение у всех записей в данной колонке
; $hListView - хендл
; $iColumn - индекс колонки с нуля
; $Check - 1- Пометить все, 0-снеть отметку у всех
Func CheckUnCheckAll($hListView,$iColumn,$Check=0)
	; Удалить предыдущий выбор
	For $i=0 To _GUICtrlListView_GetItemCount($hListView)-1  ; Бег по ListView
		If $Check=0 Then ; UnCheck
			If _GUICtrlListView_GetItemImage($hListView,$i,$iColumn)=1 Then _GUICtrlListView_SetItemImage($hListView, $i,0,$iColumn)
		Else
			If _GUICtrlListView_GetItemImage($hListView,$i,$iColumn)=0 Then _GUICtrlListView_SetItemImage($hListView, $i,1,$iColumn)
		EndIf
	Next
EndFunc


Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom,  $iCode, $tNMHDR, $hWndListView, $tInfo

    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")

    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    $iIndex = DllStructGetData($tInfo, "Index")

    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode

                Case $NM_CLICK
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
                    $itemindex = DllStructGetData($tInfo, "Index")
                    $subitemindex = DllStructGetData($tInfo, "SubItem")
                    $currentitemimage = _GUICtrlListView_GetItemImage($hWndListView, $itemindex, $subitemindex)
                    ConsoleWrite(@SystemDir)
                        If $currentitemimage = 0 Then
                            _GUICtrlListView_SetItemImage($hWndListView, $itemindex, 1, $subitemindex)
                        ElseIf $currentitemimage = 1 Then
                            _GUICtrlListView_SetItemImage($hWndListView, $itemindex, 0, $subitemindex)
                        EndIf

                Case $LVN_COLUMNCLICK ; A column was clicked
                    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
                    $ListViewColumn=DllStructGetData($tInfo, "SubItem") ; Возвращает индекс выделенной колонки
					If $ListViewColumn<>1 Then
						If _GUICtrlHeader_GetItemImage($hHdr,$ListViewColumn)=0 Then
							_GUICtrlHeader_SetItemImage($hHdr, $ListViewColumn, 1)  ; Check в заголовке column=0 ListView
						Else
							_GUICtrlHeader_SetItemImage($hHdr, $ListViewColumn, 0)  ; UnCheck в заголовке column=0 ListView
						EndIf
						$ChecHeaderkColumn=$ListViewColumn ; Индекс кликнутого заголовка ListView
					EndIf

            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc

Вариант, который предложил joiner, когда в кликнутой колонке есть строки Check и UnCheck, в заголовке ListView назначить иконку с черным квадратом внутри чекбокса, как бы неполный выбор пунктов.

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>


Global $ChecHeaderkColumn=-1, $ChecColumn=-1

$Form1 = GUICreate("ListView с несколькими колонками CheckBox", 482, 407, -1, -1)

$hListView =  GUICtrlCreateListView ("Поле1|Поле2|Поле3",  8, 8, 457, 329,BitOR($LVS_REPORT,$LVS_SHOWSELALWAYS))
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
; Создать ImageList
$hImage = _GUIImageList_Create(16, 16, 5, 3)
_GUIImageList_AddIcon($hImage, @SystemDir & "\hnetcfg.dll", 2) ; UnCheck
_GUIImageList_AddIcon($hImage, @SystemDir & "\hnetcfg.dll", 1) ; Check
_GUIImageList_AddIcon($hImage, @SystemDir & "\hnetcfg.dll", 4) ; CheckFill
_GUICtrlListView_SetImageList($hListView, $hImage, 1)

For $i = 0 To 5
    _GUICtrlListView_AddItem($hListView, "Test", 0)
    _GUICtrlListView_AddSubItem($hListView, $i, "Test2",1)
    _GUICtrlListView_AddSubItem($hListView, $i, "Test3",2,0)
Next
_GUICtrlListView_SetColumnWidth($hListView,0,100)
_GUICtrlListView_SetColumnWidth($hListView,1,$LVSCW_AUTOSIZE_USEHEADER)
_GUICtrlListView_SetColumnWidth($hListView,2,100)


; Создать UnCheck в заголовке ListView
 $hHdr = _GUICtrlListView_GetHeader($hListView)   ; Получить идентификатор залоловка ListView
 _GUICtrlHeader_SetItemImage($hHdr, 0, 0)  ; UnCheck в заголовке column=0 ListView
 _GUICtrlHeader_SetItemImage($hHdr, 2, 0)  ; UnCheck в заголовке column=2 ListView

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

While 1
	; Событие при клике на заголовок ListView
	If $ChecHeaderkColumn<>-1 Then
		If _GUICtrlHeader_GetItemImage($hHdr,$ChecHeaderkColumn)=0 Then
			CheckUnCheckAll($hListView,$ChecHeaderkColumn,0)
		Else
			CheckUnCheckAll($hListView,$ChecHeaderkColumn,1)
		EndIf
		$ChecHeaderkColumn=-1
	EndIf
	; Событие при клике на колонку ListView
	If $ChecColumn<>-1 Then
		If StatusCheck($hListView,$ChecColumn)=2 Then 			; Если в кликнутой колонке есть строки Check и UnCheck
			_GUICtrlHeader_SetItemImage($hHdr, $ChecColumn,2)	; В заголовке ListView назначить иконку с черным квадратом внутри чекбокса, как бы неполный выбор пунктов.
		ElseIf StatusCheck($hListView,$ChecColumn)=1 Then		; Если в кликнутой колонке все строки Check
			_GUICtrlHeader_SetItemImage($hHdr, $ChecColumn,1)
		Else
			_GUICtrlHeader_SetItemImage($hHdr, $ChecColumn,0)	; Если в кликнутой колонке все строки UnCheck
		EndIf
		$ChecColumn=-1
	EndIf


    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd


; Выделить/Снять выделение у всех записей в данной колонке
; $hListView - хендл
; $iColumn - индекс колонки с нуля
; $Check - 1- Пометить все, 0-снеть отметку у всех
Func CheckUnCheckAll($hListView,$iColumn,$Check=0)
	; Удалить предыдущий выбор
	For $i=0 To _GUICtrlListView_GetItemCount($hListView)-1  ; Бег по ListView
		If $Check=0 Then ; UnCheck
			If _GUICtrlListView_GetItemImage($hListView,$i,$iColumn)=1 Then _GUICtrlListView_SetItemImage($hListView, $i,0,$iColumn)
		Else
			If _GUICtrlListView_GetItemImage($hListView,$i,$iColumn)=0 Then _GUICtrlListView_SetItemImage($hListView, $i,1,$iColumn)
		EndIf
	Next
EndFunc

; Узнать статус кликнутой колонки
; 0 - в кликнутой колонке все строки UnCheck
; 1 - в кликнутой колонке все строки Check
; 2 - в кликнутой колонке есть строки Check и UnCheck
Func StatusCheck($hListView,$iColumn)
	Local $StatusOld, $Status
	For $i=0 To _GUICtrlListView_GetItemCount($hListView)-1  ; Бег по ListView
		If $i=0 Then
			$Status=_GUICtrlListView_GetItemImage($hListView,$i,$iColumn)
			$StatusOld=$Status
		Else
			$StatusOld=$Status
			$Status=_GUICtrlListView_GetItemImage($hListView,$i,$iColumn)
		EndIf
		If $Status<>$StatusOld Then Return 2
	Next
	If $Status=0 Then Return 0
	If $Status=1 Then Return 1
EndFunc



Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom,  $iCode, $tNMHDR, $hWndListView, $tInfo

    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")

    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    $iIndex = DllStructGetData($tInfo, "Index")

    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode

                Case $NM_CLICK
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
                    $itemindex = DllStructGetData($tInfo, "Index")
                    $SubItemIndex = DllStructGetData($tInfo, "SubItem")
                    $currentitemimage = _GUICtrlListView_GetItemImage($hWndListView, $itemindex, $SubItemIndex)
                    If $currentitemimage = 0 Then
                       _GUICtrlListView_SetItemImage($hWndListView, $itemindex, 1, $SubItemIndex)
                    ElseIf $currentitemimage = 1 Then
                       _GUICtrlListView_SetItemImage($hWndListView, $itemindex, 0, $SubItemIndex)
					EndIf
					$ChecColumn=$SubItemIndex ; Индекс кликнутой колонки ListView

                Case $LVN_COLUMNCLICK ; A column was clicked
                    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
                    $ListViewColumn=DllStructGetData($tInfo, "SubItem") ; Возвращает индекс выделенной колонки
					If $ListViewColumn<>1 Then
						If _GUICtrlHeader_GetItemImage($hHdr,$ListViewColumn)=0 Then
							_GUICtrlHeader_SetItemImage($hHdr, $ListViewColumn, 1)  ; Check в заголовке column=0 ListView
						Else
							_GUICtrlHeader_SetItemImage($hHdr, $ListViewColumn, 0)  ; UnCheck в заголовке column=0 ListView
						EndIf
						$ChecHeaderkColumn=$ListViewColumn ; Индекс кликнутого заголовка ListView
					EndIf

            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc
 
Верх