Что нового

Как изменять переменные в комбо списке?

agikon

Знающий
Сообщения
789
Репутация
17
задача получит возможность изменять в комбо списке переменные.

вот написал скрипт как я это понимаю но почемуто не работает так как хотелось.
помогите пожалуйста разобраться что не так делаю?
Код:
#include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>

$GUI  = GUICreate('', 300, 250)
$Button1 = GUICtrlCreateButton('изменить на числа', 10, 100, 130, 30)
$Button2 = GUICtrlCreateButton('изменить на буквы', 150, 100, 130, 30)

$1 = 1
$2 = 2
$3 = 3

$a = 'a'
$b = 'b'
$c = 'c'

$Combo = GUICtrlCreateCombo('', 20,20,50,20) ; create first item
GUICtrlSetData(-1, ''&Round($1)&'|'&Round($2)&'|'&Round($3)&'')

GUISetState()

While 1
	$nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
		Case $Button1
            _digital()
		Case $Button2
            _word()
	EndSwitch
wend


Func _digital()
$Combo = GUICtrlCreateCombo('', 20,20,50,20)
GUICtrlSetData(-1, ''&Round($1)&'|'&Round($2)&'|'&Round($3)&'')
Endfunc

Func _word()
$1 = 'a'
$2 = 'b'
$3 = 'c'
$Combo = GUICtrlCreateCombo('', 20,20,50,20)
GUICtrlSetData(-1, ''&Round($1)&'|'&Round($2)&'|'&Round($3)&'')
Endfunc
 

shakur

Осваивающий
Сообщения
76
Репутация
24
так попробуй
Код:
#include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>

$GUI  = GUICreate('', 300, 250)
$Button1 = GUICtrlCreateButton('изменить на числа', 10, 100, 130, 30)
$Button2 = GUICtrlCreateButton('изменить на буквы', 150, 100, 130, 30)

$1 = 1
$2 = 2
$3 = 3

$a = 'a'
$b = 'b'
$c = 'c'

$Combo = GUICtrlCreateCombo('', 20,20,50,20) ; create first item
GUICtrlSetData(-1, ''&Round($1)&'|'&Round($2)&'|'&Round($3)&'')

GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            _digital()
        Case $Button2
            _word()
    EndSwitch
wend


Func _digital()
GUICtrlSetData(-1, '')
GUICtrlSetData(-1, ''&Round($1)&'|'&Round($2)&'|'&Round($3)&'')
Endfunc

Func _word()
GUICtrlSetData(-1, '')
GUICtrlSetData(-1, ''&$a&'|'&$b&'|'&$c&'')
Endfunc
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
да заработало, спасибо.

а сделайте пожалуйста чтобы вот этот вариант работал. он почти такой же только имена переменных не меняются, только значения переменных меняется.

Код:
#include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>

$GUI  = GUICreate('', 300, 250)
$Button1 = GUICtrlCreateButton('изменить на числа', 10, 100, 130, 30)
$Button2 = GUICtrlCreateButton('изменить на буквы', 150, 100, 130, 30)

$1 = 1
$2 = 2
$3 = 3

$Combo = GUICtrlCreateCombo('', 20,20,50,20) ; create first item
GUICtrlSetData(-1, ''&Round($1)&'|'&Round($2)&'|'&Round($3)&'')

GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            _digital()
        Case $Button2
            _word()
    EndSwitch
wend


Func _digital()
$1 = 1
$2 = 2
$3 = 3
$Combo = GUICtrlCreateCombo('', 20,20,50,20)
GUICtrlSetData(-1, ''&Round($1)&'|'&Round($2)&'|'&Round($3)&'')
Endfunc

Func _word()
$1 = 'a'
$2 = 'b'
$3 = 'c'
$Combo = GUICtrlCreateCombo('', 20,20,50,20)
GUICtrlSetData(-1, ''&Round($1)&'|'&Round($2)&'|'&Round($3)&'')
Endfunc
 

shakur

Осваивающий
Сообщения
76
Репутация
24
вот
Код:
#include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>

$GUI  = GUICreate('', 300, 250)
$Button1 = GUICtrlCreateButton('изменить на числа', 10, 100, 130, 30)
$Button2 = GUICtrlCreateButton('изменить на буквы', 150, 100, 130, 30)

$1 = 1
$2 = 2
$3 = 3

$Combo = GUICtrlCreateCombo('', 20,20,50,20) ; create first item
GUICtrlSetData(-1, ''&Round($1)&'|'&Round($2)&'|'&Round($3)&'')

GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            _digital()
        Case $Button2
            _word()
    EndSwitch
wend


Func _digital()
$1 = 1
$2 = 2
$3 = 3
GUICtrlSetData(-1, '')
GUICtrlSetData(-1, ''&$1&'|'&$2&'|'&$3&'')
Endfunc

Func _word()
$1 = 'a'
$2 = 'b'
$3 = 'c'
GUICtrlSetData(-1, '')
GUICtrlSetData(-1, ''&$1&'|'&$2&'|'&$3&'')
Endfunc
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Используйте GUIComboBox UDF, тот, что входит в AutoIt, и не насилуйте мозг.

:smile:
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
а тут у меня ещё вопросик созрел по этой иеме.
подскажите пожалуйста как сделать так чтобы при изменении на числа или на буквы. так вот чтобы в окошке combo сразу высвечивалась единичка если это выбраны числа, или буква "а" если выбраны буквы.
а то при переключении постоянно окно пустое и не видно что там буквы или числа.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
#Include <ComboConstants.au3>
#Include <GUIComboBox.au3>
#Include <GUIConstantsEx.au3>

Global $Data[2][3] = [['1', '2', '3'], ['A', 'B', 'C']]
Global $Index = 0

$hForm = GUICreate('MyGUI', 300, 250)
$Button1 = GUICtrlCreateButton('Изменить на числа', 10, 100, 130, 30)
$Button2 = GUICtrlCreateButton('Изменить на буквы', 150, 100, 130, 30)
$Combo = GUICtrlCreateCombo('', 20, 20, 50, 20, $CBS_DROPDOWNLIST)
_Update()
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			If $Index = 1 Then
				$Index = 0
				_Update()
			EndIf
		Case $Button2
			If $Index = 0 Then
				$Index = 1
				_Update()
			EndIf
	EndSwitch
WEnd

Func _Update()

	Local $Sel = _GUICtrlComboBox_GetCurSel($Combo)

	_GUICtrlComboBox_ResetContent($Combo)
	For $i = 0 To UBound($Data, 2) - 1
		_GUICtrlComboBox_AddString($Combo, $Data[$Index][$i])
	Next
	If $Sel = -1 Then
		$Sel = 0
	EndIf
	_GUICtrlComboBox_SetCurSel($Combo, $Sel)
EndFunc   ;==>_Update
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
Yashied
работает то ваш скрипт так как мне и надо!
НО

это очень сложно.
не не я совсем не пойму и через месяц.

а можно без комбобокса?
на основе отого последнего кода от shakur.
бо это что вы написали я вообще не пойму.
или ваш вариант, это единственный возможный вариант?
 

madmasles

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

Global $iIndex, $aData[3][5] = [['1', '2', '3', '4', '5'],['A', 'B', 'C', 'D', 'E'], _
		['Изменить на буквы', 'Изменить на числа']]

$hForm = GUICreate('MyGUI', 200, 150)
$nButton = GUICtrlCreateButton('', 35, 100, 130, 30)
$nCombo = GUICtrlCreateCombo('', 75, 20, 50, 20, $CBS_DROPDOWNLIST)
_Update_Combo($iIndex)
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nButton
			$iIndex = Not $iIndex
			_Update_Combo($iIndex)
	EndSwitch
WEnd

Func _Update_Combo($i_Index)
	Local $s_Date, $s_Date_Now, $i_Not_Index = Not $iIndex
	$s_Date_Now = GUICtrlRead($nCombo)
	GUICtrlSetData($nCombo, '')
	For $i = 0 To UBound($aData, 2) - 1
		$s_Date &= $aData[$i_Index][$i] & '|'
		If $s_Date_Now = $aData[$i_Not_Index][$i] Then $s_Date_Now = $aData[$i_Index][$i]
	Next
	If Not $s_Date_Now Then $s_Date_Now = $aData[$i_Index][0]
	GUICtrlSetData($nCombo, $s_Date, $s_Date_Now)
	GUICtrlSetData($nButton, $aData[2][$i_Index])
EndFunc   ;==>_Update_Combo
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
теперь уже точно ясно что лёгкого пути в этом вопросе нет.
но попытаюсь, может пойму.
Спасибо.
 
Верх