Что нового

[Элементы GUI] Получение данных из GUICtrlCreateInput по нажатию Button

sky_nso

Новичок
Сообщения
2
Репутация
0
Вообщем, я прям новичок и нубло. Нужна помощь в объяснение как сделать функцию, что бы при нажатие созданной кнопки вводимая информация из GUICtrlCreateInput передавалась в переменную.
Сама суть: генерируется простой пример, в поле ввода надо вписать ответ и если ответ верный то скрипт прекращает свою работу, а если нет, то на экран выдает сообщение с текстом(типа Вы ввели не верный ответ).


Сам код(на стиль написание можете не смотреть, можете сразу смело отправлять на "говонокод" :smile:)
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>

dim $array[4] =[Random(1,20,1),Random(1,20,1),Random(1,50,1),Random(1,20,1)]
dim $operation[3] = ["+","-","*"]

Global $a = $array[0] ;первая переменная 
Global $b = $array[1] ;второая переменная 
Global $c = $array[2] ;третья переменная 
Global $d = $array[3] ;четвертая  переменная 
	   $s_z_n = ""	  ; математическая операция в first_part()
	   $s_z_n2 = ""   ; математическая операция в second_part()
	   $summa = 0     ; сумма first_part()
	   $summb = 0     ; сумма second_part()
	  $quote_l = "("
	  $quote_r = ")"
$s_znak = space_znak() ;математическая операция в space_znak()

first_part($s_z_n, $summa) ; присваевание знака first_part()
second_part($s_z_n2, $summb) ;присваевание знака second_part()

$input = $quote_l&$a&$s_z_n&$b&$quote_r&$s_znak&$quote_l&$c&$s_z_n2&$d&$quote_r;вывод на экран самого примера




GUICreate("TRZVST", 260, 230)
$CTRL_btn0 = GUICtrlCreateButton("Ответ", 54, 171, 50, 29)
$nCheck = GUICtrlCreateLabel($input, 12, 39, 100, 50)
$nInput = GUICtrlCreateInput ("", -1,  90, 260, 25)

GUISetState()

Do
	$msg = GUIGetMsg()
	  
Until $msg = $GUI_EVENT_CLOSE



;ФУНКУЦИИ

Func oper_inv() 
   $oper = Random(0,2,1)
   $alert = $operation[$oper]
   Return $alert
EndFunc

Func first_part(ByRef $z_f, ByRef $summ)
	local $operations = oper_inv()
	$z_f = $operations
    if $operations == "+" Then	
	   $aa = $a+$b
	elseif $operations == "-" Then	
	   $aa = $a-$b
	else
	   $aa = $a*$b
 EndIf 
    $summ = $aa
	Return  $aa
EndFunc

Func second_part(ByRef $z_f2, ByRef $summ)
Local $operations = oper_inv()
	$z_f2 = $operations
   if $operation == "+" Then	
	   $bb = $c+$d
	elseif $operations == "-" Then	
	   $bb = $c-$d
	else
	   $bb = $c*$d
 EndIf 
     $summ = $bb
	Return  $bb
EndFunc

Func space_znak()
   local $znak = oper_inv() 
 If $znak == "+" Then
	$s_z_f = "+"
 ElseIf  $znak == "-" Then
	$s_z_f = "-"
 Else
	$s_z_f = "*"
 EndIf	
   Return $s_z_f
EndFunc   


Func global_primer()
	$global = $summa+$summb
    Return $global
EndFunc
 

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
Возьмите код в тег AutoIt


Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>

dim $array[4] =[Random(1,20,1),Random(1,20,1),Random(1,50,1),Random(1,20,1)]
dim $operation[3] = ["+","-","*"]

Global $a = $array[0] ;первая переменная
Global $b = $array[1] ;второая переменная
Global $c = $array[2] ;третья переменная
Global $d = $array[3] ;четвертая  переменная
	   $s_z_n = ""	  ; математическая операция в first_part()
	   $s_z_n2 = ""   ; математическая операция в second_part()
	   $summa = 0     ; сумма first_part()
	   $summb = 0     ; сумма second_part()
	  $quote_l = "("
	  $quote_r = ")"
$s_znak = space_znak() ;математическая операция в space_znak()

first_part($s_z_n, $summa) ; присваевание знака first_part()
second_part($s_z_n2, $summb) ;присваевание знака second_part()

$input = $quote_l&$a&$s_z_n&$b&$quote_r&$s_znak&$quote_l&$c&$s_z_n2&$d&$quote_r;вывод на экран самого примера




GUICreate("TRZVST", 260, 230)
$CTRL_btn0 = GUICtrlCreateButton("Ответ", 54, 171, 50, 29)
$nCheck = GUICtrlCreateLabel($input, 12, 39, 100, 50)
$nInput = GUICtrlCreateInput ("", -1,  90, 260, 25)

GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $CTRL_btn0
            If (GUICtrlRead($nInput) <> Execute($input)) Then
                MsgBox(0, '', 'Вы ввели не верный результат')
			Else
                ExitLoop
            EndIf
    EndSwitch
Wend



;ФУНКУЦИИ

Func oper_inv()
   $oper = Random(0,2,1)
   $alert = $operation[$oper]
   Return $alert
EndFunc

Func first_part(ByRef $z_f, ByRef $summ)
	local $operations = oper_inv()
	$z_f = $operations
    if $operations == "+" Then
	   $aa = $a+$b
	elseif $operations == "-" Then
	   $aa = $a-$b
	else
	   $aa = $a*$b
 EndIf
    $summ = $aa
	Return  $aa
EndFunc

Func second_part(ByRef $z_f2, ByRef $summ)
Local $operations = oper_inv()
	$z_f2 = $operations
   if $operation == "+" Then
	   $bb = $c+$d
	elseif $operations == "-" Then
	   $bb = $c-$d
	else
	   $bb = $c*$d
 EndIf
     $summ = $bb
	Return  $bb
EndFunc

Func space_znak()
   local $znak = oper_inv()
 If $znak == "+" Then
	$s_z_f = "+"
 ElseIf  $znak == "-" Then
	$s_z_f = "-"
 Else
	$s_z_f = "*"
 EndIf
   Return $s_z_f
EndFunc


Func global_primer()
	$global = $summa+$summb
    Return $global
EndFunc
 
Автор
S

sky_nso

Новичок
Сообщения
2
Репутация
0
Огромное спасибо :smile:
 
Верх