Что нового

[Элементы GUI] Изменения значения INPUT от значения другого INPUT в реальном времени

coolman

Новичок
Сообщения
9
Репутация
2
Доброго времени суток.
Интересует как осуществить следующую задачу:
есть два INPUT: в первом вводятся числовое значение, во втором отображается 50% от этого значения, или наоборот, если во втором вводим числовое значение, то в первом отображается значение в два раза больше. Т.е. первый INPUT отображает 100% значение числового значения, второе - 50%.
Благодарю за помощь
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
coolman
http://autoit-script.ru/index.php/topic,9004.msg60473.html#msg60473
Поиск по форуму работает
 
Автор
C

coolman

Новичок
Сообщения
9
Репутация
2
Вообще то я искал по форуму. Но тут вопрос в другом. Как отследить что данные введены в тот или иной INPUT, и уже в зависимости от этого поменять значение в другом. Причем, значение должно меняться уже в момент ввода.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
coolman
Я задачу понял, у меня в коллекции скрипт от madmasles с двумя Input и при поиске вариантов просто более десятка. Ну если вы совсем не хотите ничего сами делать, то держите готовый:

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

$hGui = GUICreate('Умножение на 2', 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)
							If StringIsDigit($sText) Then
								GUICtrlSetData($nInput2, $sText * 2)
							Else
								GUICtrlSetData($nInput2, StringLeft($sText, Int(StringLen($sText) / 2)))
							EndIf
					EndSwitch
			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
На оба input
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>

$hGui = GUICreate('Умножение на 2', 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)
							If StringIsDigit($sText) Then
								GUICtrlSetData($nInput2, $sText * 2)
							Else
								GUICtrlSetData($nInput2, StringLeft($sText, Int(StringLen($sText) / 2)))
							EndIf
					EndSwitch
				Case $nInput2
					Switch $nNotifyCode
						Case $EN_CHANGE
							$sText = GUICtrlRead($nInput2)
							If StringIsDigit($sText) Then
								GUICtrlSetData($nInput1, $sText * 2)
							Else
								GUICtrlSetData($nInput1, StringLeft($sText, Int(StringLen($sText) / 2)))
							EndIf
					EndSwitch
			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc
 
Автор
C

coolman

Новичок
Сообщения
9
Репутация
2
огромное спасибо. последний скрипт помог! Тема закрыта
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
coolman [?]

[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
 
Верх