Что нового

Обнуление идентификатор элемента в GUICtrlSetData

maxd2007

Новичок
Сообщения
89
Репутация
0
Здравствуйте, подскажите пожалуйста никак не могу понять, в справке GUICtrlSetData есть примечание в котором сказано: "Если data начинаются с разделителя (GUIDataSeparatorChar) или пустой строки ("") то предыдущий список удаляется.", все что мне пришло в голову это сделать так
Код:
GUICtrlSetData ("" & $category_second, _ArrayToString ($Name_all_device_page, "|"),$Name_all_device_page[0])

но это не сработало, дело в том что когда пользователь ходит по категориям (т.е. выбирает категорию нажимает "ОК" во втором окне появляется список товара из этой категории) список пополняется (т.е. при выборе следующей категории во второй колонке товар не вместо предыдущего ставится а дополняется, тем самым увеличивая список), а не обнуляется, а в моем случае это есть проблема, может кто то сможет привести пример?
Вот рабочий код (часть вырезано, что бы не захломлять):
Код:
GUICreate("Garmin", 362, 200, (@DesktopWidth - 191) / 2, (@DesktopHeight - 157) / 2)    
GUICtrlCreateLabel("Категория:", 30, 40, 131, 21, 0x1000)                              
GUICtrlCreateLabel("Подкатегория:", 200, 40, 131, 21, 0x1000)                       
$category_second = GUICtrlCreateCombo("", 200, 60, 130, 21)                         
$category_general = GUICtrlCreateCombo("", 30, 60, 130, 21)                                     
GUICtrlSetData ($category_general, "1|2|3|4|5|6|7|8|9|10|11", "1" )
$Ok_category_general = GUICtrlCreateButton("Ok", 30, 90, 131, 21) 
$Ok_category_second = GUICtrlCreateButton("Ok", 200, 90, 131, 21) 
GUISetState()
While 1
    $iMsg = GUIGetMsg()
     Select
        Case $iMsg = $GUI_EVENT_CLOSE
            ExitLoop
         Case $iMsg = $Ok_category_general
                 $Name_all_device_page = _All_Device_This_Page ($IEcategory)
                 $Link = FileOpen ( @ScriptDir & "/Temp.dat", 0)
                 $LinkRead = FileRead ( $Link )
                 $LinkOpen = _StringBetween ($LinkRead, '/', '">')
                 GUICtrlSetData ($category_second, _ArrayToString ($Name_all_device_page, "|"),$Name_all_device_page[0]); вот тут список все время пополняется вместо того что бы обновлятся
     EndSelect
WEnd


PS
В справке такого примера нет (в смысле с использованием разделителя или пустой строки)
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Подойдите иначе к заполнению значений в "$category_second" , например используя в цикле функцию "_GUICtrlComboBox_AddString" из UDF "GuiComboBox.au3", например так :
Код:
#include <GuiComboBox.au3>

For $i=0 to Ubound($Name_all_device_page)-1
 _GUICtrlComboBox_AddString($category_second,$Name_all_device_page[$i])
Next

Только нужно ещё дописать контроль выбранных значений из "$category_general" что-бы более одного раза не добавлять значения в случае повторного выбора одной из категорий.
 
A

Alofa

Гость
Попробуйте (у меня нет возможности):
Код:
GUICtrlSetData ($category_second, "|" & _ArrayToString ($Name_all_device_page, "|"),$Name_all_device_page[0])


Или может так:
Код:
GUICtrlSetData ($category_second, "")
GUICtrlSetData ($category_second, _ArrayToString ($Name_all_device_page, "|"),$Name_all_device_page[0])



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

Можете также изучить функцию:
Код:
_GUICtrlComboBox_ResetContent()


И читайте внимательней справку, это я про параметр "data" и то что вы указали в своем коде.
 
Верх