Что нового

[Элементы GUI] Чтение значения из Input "на лету"

Pavel

Новичок
Сообщения
125
Репутация
3
Доброго времени суток!
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
GUICreate('Тест', 350, 180, -1, -1, -1, $WS_CLIPCHILDREN)
$nInput1 = GUICtrlCreateInput('', 10, 10, 150, 20)
GUICtrlSetColor(-1, 0x505050)
$nInput2 = GUICtrlCreateInput('', 10, 40, 150, 20)
GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
	EndSwitch
WEnd

Как сделать, чтобы вводя в $Input1 что-либо, значение $Input2 меняло, например, на "Тратата"?
 

madmasles

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

$hGui = GUICreate('Тест', 350, 180, -1, -1, -1, $WS_CLIPCHILDREN)
$nInput1 = GUICtrlCreateInput('', 10, 10, 150, 20)
GUICtrlSetColor(-1, 0x505050)
$nInput2 = GUICtrlCreateInput('', 10, 40, 150, 20)
GUISetState()
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func WM_COMMAND($hWnd, $imsg, $iwParam, $ilParam)
	Local $nNotifyCode, $nID, $sText
	$nNotifyCode = BitShift($iwParam, 16)
	$nID = BitAND($iwParam, 0xFFFF)
	Switch $hWnd
		Case $hGui
			Switch $nID
				Case $nInput1
					Switch $nNotifyCode
						Case $EN_CHANGE
							$sText = GUICtrlRead($nInput1)
							$sText &= '-' & $sText
							GUICtrlSetData($nInput2, $sText)
					EndSwitch
			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Pavel
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
GUICreate('Тест', 350, 180, -1, -1, -1, $WS_CLIPCHILDREN)
$nInput1 = GUICtrlCreateInput('', 10, 10, 150, 20)
GUICtrlSetColor(-1, 0x505050)
$nInput2 = GUICtrlCreateInput('', 10, 40, 150, 20)
GUISetState()

While 1
	If GUICtrlRead($nInput1) <> '' Then GUICtrlSetData($nInput2, 'Тратата')
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
 
Автор
P

Pavel

Новичок
Сообщения
125
Репутация
3
Zaramot, в этом случае "чтение" поля произойдёт только при переключении на другой гуи-элемент, а не "на лету"!
 

rusreg79

Продвинутый
Сообщения
159
Репутация
57
Код:
Global $iInput1

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
GUICreate('Тест', 350, 180, -1, -1, -1, $WS_CLIPCHILDREN)
$nInput1 = GUICtrlCreateInput('', 10, 10, 150, 20)
GUICtrlSetColor(-1, 0x505050)
$nInput2 = GUICtrlCreateInput('', 10, 40, 150, 20)
GUISetState()


While 1
	Select
		Case GUICtrlRead($nInput1) <> $iInput1
		GUICtrlSetData($nInput2, GUICtrlRead($nInput1))
		$iInput1 = GUICtrlRead($nInput1)
	EndSelect

    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
 
Верх