Что нового

[Элементы GUI] Удалить все элементы в combobox

erlik

Продвинутый
Сообщения
317
Репутация
84
Не знаю как правильно удалить все строки из комбобокса - нужно для обновления содержания форм, но без удаления самих форм.
Код:
GUICtrlSetData ($aIdCombo[$iIndex],"")
удаляет все строки, но когда я туда добавляю заново (обновленную строку), то она оказывается второй по счету - первая пустая - а этого мне совсем не нужно. Пытался использовать
Код:
_GUICtrlComboBox_DeleteString
- но поштучное удаление (в цикле по каждому combo и по всем строках в каждом combo) тоже не дало нужного эффекта - удаляется не все(индексы строк в процессе удаления удаления меняются и цикл пропускает часть строк). Может быть есть для combo что то подобное
Код:
_GUICtrlListView_DeleteAllItems
?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
erlik,
Код:
_GUICtrlComboBox_ResetContent($hCombo)
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
madmasles
Спасибо за наводку на новый метод, но я наверно чего то не понимаю - после этого метода новая строка (добавленная после удаления имевшихся) также становится только второй. Первая - пустая. Как от нее избавиться? И почему она вообще появляется? Ведь при первом заполнении combobox' а все нормально. - никаких пустых строк.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
erlik,
Код:
#include <GUIConstantsEx.au3>

GUICreate('Test', 200, 150)
$nCombo = GUICtrlCreateCombo('', 50, 10, 100, 20)
$nButton = GUICtrlCreateButton('Click me', 50, 100, 100, 30)
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nButton
			Dim $aCombo[6] = [5, Random(1000, 9999, 1), Random(10000, 99999, 1), Random(1, 9, 1), Random(10, 99, 1), Random(100, 999, 1)]
			$sString = ''
			For $i = 1 To $aCombo[0]
				$sString &= $aCombo[$i] & '|'
			Next
			GUICtrlSetData($nCombo, '')
			GUICtrlSetData($nCombo, StringTrimRight($sString, 1), $aCombo[$aCombo[0]])
	EndSwitch
WEnd
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
В общем решил свою проблему пустых строк комбинацией вот этих методов:

Код:
_GUICtrlComboBox_ResetContent($aIdCombo[$iIndex]); убираем все из ComboBox
_GUICtrlComboBox_AddString($aIdCombo[$iIndex], $aRegPath[$iIndex]) ; добавляем новый контент
_GUICtrlComboBox_SetCurSel($aIdCombo[$iIndex], 0); делаем строку с индексом 0 текущей - то есть видимой в боксе.
 
Верх