Что нового

[Элементы GUI] Удаление значений из GUICtrlCreateCombo

konokrad666

Новичок
Сообщения
22
Репутация
0
Есть несколько GUICtrlCreateCombo, заполненные одинаковыми значениями.

Код:
$Cat_2 = GUICtrlCreateCombo("Cat_2", 320, 128, 121, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "номер 1|номер 2|номер 3|номер 4|номер 5|номер 6", "")
$Cat_3 = GUICtrlCreateCombo("Cat_3", 320, 192, 121, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "номер 1|номер 2|номер 3|номер 4|номер 5|номер 6", "")
$Cat_4 = GUICtrlCreateCombo("Cat_4", 320, 256, 121, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "номер 1|номер 2|номер 3|номер 4|номер 5|номер 6", "")
$Cat_5 = GUICtrlCreateCombo("Cat_5", 320, 320, 121, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "номер 1|номер 2|номер 3|номер 4|номер 5|номер 6", "")


Как сделать, чтобы при выборе одного значения, выбранное значение удалялось из остальных комбо?

Спасибо.
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Например вот так можно, пример предполагает наличие одного и того же сод-мого в Combo
Код:
#include <GUIComboBox.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
Local $sText="номер 1|номер 2|номер 3|номер 4|номер 5|номер 6"
$gui = GUICreate("", 433, 118)
$Combo1 = GUICtrlCreateCombo("Combo1", 0, 0, 145, 25, BitOR($CBS_DROPDOWN,$WS_VSCROLL))
GUICtrlSetData(-1, $sText, "")
$Combo2 = GUICtrlCreateCombo("Combo2", 0, 40, 145, 25, BitOR($CBS_DROPDOWN,$WS_VSCROLL))
GUICtrlSetData(-1, $sText, "")
$Combo3 = GUICtrlCreateCombo("Combo3", 176, 0, 145, 25, BitOR($CBS_DROPDOWN,$WS_VSCROLL))
GUICtrlSetData(-1, $sText, "")
$Combo4 = GUICtrlCreateCombo("Combo4", 176, 40, 145, 25, BitOR($CBS_DROPDOWN,$WS_VSCROLL))
GUICtrlSetData(-1, $sText, "")
$Exit = GUICtrlCreateButton("Exit", 336, 16, 75, 21)
GUISetState(@SW_SHOW)
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $Combo1 To $Combo4
			__DelSelect($nMsg)
		Case $GUI_EVENT_CLOSE,$Exit
			Exit
	EndSwitch
WEnd
Func __DelSelect($sSel)
	Local $rText=GUICtrlRead($sSel),$aCtrl[4]=[$Combo1,$Combo2,$Combo3,$Combo4]
	Local $tT=_GUICtrlComboBox_GetListArray(GUICtrlGetHandle($sSel))
	For $i=0 To $tT[0]
		If $tT[$i]=$rText Then
			_ArrayDelete($tT,$i);удаляет ячейку которую выбрали
			ExitLoop
		EndIf
	Next
	_ArrayDelete($tT,0);удаляет кол-во ячеек из первой
	For $i=0 To 3;Проход удаления по всем ComboBox'ам
		GUICtrlSetData($aCtrl[$i],"")
		GUICtrlSetData($aCtrl[$i],_ArrayToString($tT,"|"))
	Next
EndFunc
 
Верх