Приветствую всех!
Ребята такая проблемка:
Создаю TreeView который заполняется списком оборудования,
при выборе устройства, в ListView показываются его свойства.
Есть кнопка "Обновить" при нажатии на которую, происходит:
Очиска ListView
Очиска TreeView
Повторное заполнение списка устройств.
проблема в том, что:
если выделена любая (кроме последней) позиция в TreeView, после нажатия на кнопку
"Обновить" текст из ListView остаётся, точнее сказать он появляется опять.
Выглядит так, как будто, после очистки TreeView происходит автовыделение первой позиции в этом списке и срабатывает функция которая опять заполняет ListView.
Последующие нажатия на эту кнопку очищают список...
Не могу понять в чём проблема: глюки функции UDF или я где накосячил...
Help Please!
Код:
Ребята такая проблемка:
Создаю TreeView который заполняется списком оборудования,
при выборе устройства, в ListView показываются его свойства.
Есть кнопка "Обновить" при нажатии на которую, происходит:
Очиска ListView
Очиска TreeView
Повторное заполнение списка устройств.
проблема в том, что:
если выделена любая (кроме последней) позиция в TreeView, после нажатия на кнопку
"Обновить" текст из ListView остаётся, точнее сказать он появляется опять.
Выглядит так, как будто, после очистки TreeView происходит автовыделение первой позиции в этом списке и срабатывает функция которая опять заполняет ListView.
Последующие нажатия на эту кнопку очищают список...
Не могу понять в чём проблема: глюки функции UDF или я где накосячил...
Help Please!
Код:
Код:
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <TreeViewConstants.au3>
#include <GuiTreeView.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <WINAPI.au3>
Opt("GUIOnEventMode", 1)
Global $MainForm_1 = GUICreate("USB Info", 628, 261, -1, -1)
Global $btn_exit = GUICtrlCreateButton("Exit", 550, 230, 76, 26, $WS_GROUP)
GUICtrlSetOnEvent(-1, "btn_exitClick")
Global $btn_refresh = GUICtrlCreateButton("Refresh", 290, 230, 75, 26, $WS_GROUP)
GUICtrlSetOnEvent(-1, "btn_refreshClick")
Global $dev_tree = GUICtrlCreateTreeView(5, 5, 281, 251, BitOR($TVS_HASLINES,$TVS_LINESATROOT,$TVS_SHOWSELALWAYS,$WS_GROUP,$WS_TABSTOP,$WS_VSCROLL,$WS_BORDER))
Global $lst_info = GUICtrlCreateListView("Param|Value", 290, 40, 336, 186, BitOR($LVS_REPORT,$LVS_SINGLESEL,$LVS_SHOWSELALWAYS,$LVS_AUTOARRANGE,$WS_VSCROLL,$WS_BORDER), BitOR($WS_EX_CLIENTEDGE,$LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT))
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 75)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 250)
GUISetState(@SW_SHOW)
$lst_info = GUICtrlGetHandle($lst_info);
Global $dev_tree_item[128];
Global $lst_info_[1024];
Global $lst_infoItem[1024];
Global $dev_name[25];
Global $dev_caption[25];
Global $dev_description[25];
Main()
Func Main()
_get_devices()
While 1
Sleep(100)
WEnd
EndFunc
Func _get_devices()
Local $USB_ObjCol;
Local $USB_ColItems;
; Clear device list.
_GUICtrlTreeView_DeleteAll($dev_tree);
_clear_info();
$USB_ObjCol = ObjGet("winmgmts:")
$USB_ColItems = $USB_ObjCol.instancesof("CIM_USBDevice");
if @error Then
Msgbox (0,"","Error at getting object. Error code: " & @error)
Return
EndIf
$i=0
for $USB_objItem in $USB_ColItems
$dev_tree_item[$i] = GUICtrlCreateTreeViewItem($USB_objItem.Caption, $dev_tree);
GUICtrlSetOnEvent($dev_tree_item[$i], 'dev_tree_itemClick');
$dev_name[$i] = $USB_objItem.Name
$dev_caption[$i] = $USB_objItem.Caption
$dev_description[$i] = $USB_objItem.Description
$i+=1
Next
EndFunc
Func _select_device()
_clear_info();
$cur_item = _GUICtrlTreeView_GetSelection($dev_tree)
$cur_dev_index = _GUICtrlTreeView_Index($dev_tree, $cur_item)
_GUICtrlListView_AddItem($lst_info, 'Device name:',0)
_GUICtrlListView_AddSubItem($lst_info, 0,$dev_name[$cur_dev_index],1);
_GUICtrlListView_AddItem($lst_info, 'Caption:',0)
_GUICtrlListView_AddSubItem($lst_info, 1,$dev_caption[$cur_dev_index],1);
_GUICtrlListView_AddItem($lst_info, 'Description:',0)
_GUICtrlListView_AddSubItem($lst_info, 2,$dev_description[$cur_dev_index],1);
; Autosize column width.
_GUICtrlListView_SetColumnWidth($lst_info,0,$LVSCW_AUTOSIZE);
_GUICtrlListView_SetColumnWidth($lst_info,1,$LVSCW_AUTOSIZE);
_GUICtrlListView_EndUpdate($lst_info);
EndFunc
Func _clear_info()
; Delete all items fron info list.
_GUICtrlListView_DeleteAllItems($lst_info);
EndFunc
Func btn_exitClick()
_exit()
EndFunc
Func btn_refreshClick()
$a = _GUICtrlTreeView_SetState($dev_tree,_GUICtrlTreeView_GetSelection($dev_tree),$TVIS_SELECTED,TRUE)
ConsoleWrite($a & ':::' & _GUICtrlTreeView_GetSelection($dev_tree) & @crlf)
_get_devices();
_clear_info();
EndFunc
Func dev_tree_itemClick()
ConsoleWrite("Item click! Selected:" & _GUICtrlTreeView_Index($dev_tree, _GUICtrlTreeView_GetSelection($dev_tree)) & @CRLF)
_select_device()
EndFunc
Func MainFormClose()
_exit()
EndFunc
Func _exit()
Exit
EndFunc