Что нового

[Элементы GUI] Обновление ListView

lxShaDoWxl

Новичок
Сообщения
5
Репутация
0
помогите реализовать обновление ListView, вроде бы написал правильно, но скрипт зависает когда нажимаю "обновить"
Код:
#include <GuiListView.au3>
#include <EditConstants.au3>
#include 'LV_Format_include.au3'


$PriceMon = GUICreate("Form1", 670, 539, -1, -1)
$lv = GUICtrlCreateListView('1|1', 0, 25, 669, 513)
$hLV = GUICtrlGetHandle($lv)
_GUICtrlListView_SetColumnWidth($hLV, 0, 49)
_GUICtrlListView_SetColumnWidth($hLV, 1, 49)
_GUICtrlListView_Formatting_Startup($PriceMon, $hLV)
_GUICtrlListView_AddOrIns_Item($hLV, '1|1')
_GUICtrlListView_FormattingCell($hLV, 0, 0, 0xffff00, -1, -1, -1, -1)

$ButtonRef = GUICtrlCreateButton("Обновить", 264, 0, 145, 25)
GUISetState(@SW_SHOW, $PriceMon)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

While 1
	$msg = GUIGetMsg(1)
	Switch $msg[1]
		Case $PriceMon
			If $msg[0] = -3 Then ExitLoop	
			If $msg[0] = $ButtonRef then _btMonRef()
	EndSwitch
WEnd

Func _btMonRef()
_GUICtrlListView_FormattedDeleteAllItems($hLV)

_GUICtrlListView_SetColumnWidth($hLV, 0, 49)
 _GUICtrlListView_SetColumnWidth($hLV, 1, 49)
 _GUICtrlListView_Formatting_Startup($PriceMon, $hLV)
  _GUICtrlListView_AddOrIns_Item($hLV, '2|2')
_GUICtrlListView_FormattingCell($hLV, 0, 1, 0xffff00, -1, -1, -1, -1)
EndFunc

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iCode, $tNMHDR
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Это же элементарно, функций то нет.
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
lxShaDoWxl
Мне вот интересно, что значит обновить элемент ListView?
 
Автор
L

lxShaDoWxl

Новичок
Сообщения
5
Репутация
0
удаление данных из ListView и вывод новых, без изменения названия столбцов
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
lxShaDoWxl сказал(а):
удаление данных из ListView и вывод новых
Код:
#include <GuiListView.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <Guiconstants.au3>
$PriceMon = GUICreate("Form1", 670, 539, -1, -1)
$lv = GUICtrlCreateListView('1|1', 0, 25, 669, 513)
$hLV = GUICtrlGetHandle($lv)
_GUICtrlListView_SetColumnWidth($hLV, 0, 49)
_GUICtrlListView_SetColumnWidth($hLV, 1, 49)
$ButtonRef = GUICtrlCreateButton("Обновить", 264, 0, 145, 25)
GUISetState(@SW_SHOW, $PriceMon)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1]
        Case $PriceMon
            Switch $msg[0]
				Case $ButtonRef
					__Update()
				Case -3
					Exit
			EndSwitch
    EndSwitch
WEnd
Func __Update()
	_GUICtrlListView_DeleteAllItems($hLV)
;~ 	Sleep(2000)
	Local $item[20][2],$size=UBound($item)
	For $i=0 To $size-1
		$item[$i][0]=Random(0,100,1)
		$item[$i][1]=Random(0,100,1)
	Next
	For $i=0 To $size-1
		_GUICtrlListView_AddItem($hLV,$item[$i][0])
		_GUICtrlListView_AddSubItem($hLV,$i,$item[$i][1],1)
	Next
EndFunc

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iCode, $tNMHDR
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

может не правильно понял, или все же так?
 
Автор
L

lxShaDoWxl

Новичок
Сообщения
5
Репутация
0
MnM
да все правильно, но с помощью библиотеки LV_Format_include.au3 такое не получается =(
зависает на функции _GUICtrlListView_AddOrIns_Item при добавлении новой информации
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Ну если не работает данная библиотека, а с помощью стандартной все же можно сделать то же самое. Зачем тогда использовать LV_Format_include.au3
 
Автор
L

lxShaDoWxl

Новичок
Сообщения
5
Репутация
0
MnM
Из LV_Format_include.au3 нужна возможность изменять цвет необходимой ячейки, поэтому и приходиться изначально создавать с её помощью
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
lxShaDoWxl
Выдаёт ошибку на 3.3.8.1
Код:
$FORMATLV_oPARAM_SEARCH.Add(DllStructGetData($tITEMPARAM, 1), 0)
$FORMATLV_oPARAM_SEARCH.Add(DllStructGetData($tITEMPARAM, 1), 0)^ ERROR

На 3.3.9.19 запускается.
Собственно непонятно, объект "Scripting.Dictionary" не должен выдавать ошибку, если только код неисправный, а ковырять UDF не хочется.

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

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Нашел топик на офф. сайте, там есть примеры для установки цветных пунктов ListView Color Example
 
Верх