Что нового

[Элементы GUI] GUICtrlCreateCombo Исключение повтора значений

Viktor217

Осваивающий
Сообщения
233
Репутация
31
Есть несколько комбо, как исключить возможность ввода одинаковых значений?
Покажу пример:
Код:
$K = GUICtrlCreateCombo("F1", 24, 184, 145, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_SIMPLE))
GUICtrlSetData($K, "F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12")

$K1 = GUICtrlCreateCombo("F2", 24, 184, 145, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_SIMPLE))
GUICtrlSetData($K1, "F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12")

Дело в том, что пользователь может назначить на обоих комбо одинаковую клавишу, как это исправить?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
Viktor217
Имхо, самое простое:
Код:
;...
$Combo1 = GUICtrlCreateCombo('', 40, 20, 100, 20, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE))
GUICtrlSetData(-1, 'F1|F2|F3|F4|F5|F6', 'F1')
$Combo2 = GUICtrlCreateCombo('', 160, 20, 100, 20, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE))
GUICtrlSetData(-1, 'F7|F8|F9|F10|F11|F12', 'F7')
;...
 
Автор
V

Viktor217

Осваивающий
Сообщения
233
Репутация
31
Не то...
Не известно какая клавиша будет выбрана пользователем, да и этих комбо больше двух(=
 

madmasles

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

#region ### START Koda GUI section ### Form=
$hGui = GUICreate('Test Combo', 300, 150, -1, -1)
$Combo1 = GUICtrlCreateCombo('', 40, 20, 100, 20, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE, $ES_READONLY))
$hCombo1 = GUICtrlGetHandle($Combo1)
GUICtrlSetData(-1, 'F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12', 'F1')
$Combo2 = GUICtrlCreateCombo('', 160, 20, 100, 20, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE, $ES_READONLY))
$hCombo2 = GUICtrlGetHandle($Combo2)
GUICtrlSetData(-1, 'F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12', 'F2')
GUICtrlSetState(-1, $GUI_DISABLE)
$Label1 = GUICtrlCreateLabel('', 40, 60, 100, 20)
$Label2 = GUICtrlCreateLabel('', 160, 60, 100, 20)
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Combo1
			$sText1 = GUICtrlRead($Combo1)
			GUICtrlSetData($Label1, $sText1)
			$iIndex = _GUICtrlComboBox_FindString($hCombo2, $sText1)
			_GUICtrlComboBox_DeleteString($hCombo2, $iIndex)
			GUICtrlSetState($Combo2, $GUI_ENABLE)
			GUICtrlSetState($Combo1, $GUI_DISABLE)
			GUICtrlSetData($Label2, '')
		Case $Combo2
			$sText2 = GUICtrlRead($Combo2)
			GUICtrlSetData($Label2, $sText2)
			GUICtrlSetState($Combo1, $GUI_ENABLE)
			GUICtrlSetState($Combo2, $GUI_DISABLE)
	EndSwitch
WEnd
 
Верх