Что нового

[Элементы GUI] как отловить изменение размера столбца в ListView

XpycT

Скриптер
Сообщения
380
Репутация
133
Всем Привет

Есть GUI c элементом ListView
Код:
#include <GUIConstantsEx.au3>
#include <GUIListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 623, 449, 322, 142)
$ListView1 = GUICtrlCreateListView("Col 1|Col 2", 10, 10, 580, 405)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100)
_GUICtrlListView_JustifyColumn(GUICtrlGetHandle($ListView1), 1, 2)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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


Собственно вопрос: Как отловить изменение размера столбца, что бы потом его (размер) можно было записать допустим в ini файл
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
_GUICtrlListView_GetColumnWidth()
_GUICtrlListView_SetColumnWidth()
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
XpycT
Подробнее:
Код:
#include <GUIConstantsEx.au3>
#include <GUIListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 623, 449, 322, 142)
$Button1 = GUICtrlCreateButton("Button1", 8, 350, 100, 33)
$ListView1 = GUICtrlCreateListView("Col 1|Col 2", 10, 10, 580, 305)
_GUICtrlListView_SetColumnWidth($ListView1, 0, 150)
_GUICtrlListView_SetColumnWidth($ListView1, 1, 100)

GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			MsgBox(4160, "Information", "Col 1 Width: " & _GUICtrlListView_GetColumnWidth($ListView1, 0))
			MsgBox(4160, "Information", "Col 2 Width: " & _GUICtrlListView_GetColumnWidth($ListView1, 1))
			_GUICtrlListView_SetColumnWidth($ListView1, 0, 100)
			_GUICtrlListView_SetColumnWidth($ListView1, 1, 150)
			MsgBox(4160, "Information", "Col 1 Width: " & _GUICtrlListView_GetColumnWidth($ListView1, 0))
			MsgBox(4160, "Information", "Col 2 Width: " & _GUICtrlListView_GetColumnWidth($ListView1, 1))
	EndSwitch
WEnd
 

kzru_hunter

Осваивающий
Сообщения
144
Репутация
49
Отлов изменения размера столбца с помощью GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY"):
Код:
#include <GUIConstantsEx.au3>
#include <GUIListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 623, 449, 322, 142)
$ListView1 = GUICtrlCreateListView("Col 1|Col 2", 10, 10, 580, 405)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100)
_GUICtrlListView_JustifyColumn(GUICtrlGetHandle($ListView1), 1, 2)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
	$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
	$iCode = DllStructGetData($tNMHDR, "Code")

	$nID = BitAND($wParam, 0x0000FFFF)

	If $nID = $ListView1 Then
		Switch $iCode
			Case -12
				For $i = 0 to _GUICtrlListView_GetColumnCount($nID) -1
					ConsoleWrite("column " & $i & " width = " & _GUICtrlListView_GetColumnWidth($nID, $i) & @CRLF)
				Next
		EndSwitch
	EndIf
EndFunc
 
Автор
X

XpycT

Скриптер
Сообщения
380
Репутация
133
kzru_hunter
Спасибо то что доктор прописал
 
Верх