Что нового

Чтение из Input и передача значений в Label

A

at

Гость
Здравствуйте!

Покажите, как правильно передать в GUICtrlCreateLabel значение, вводимое в GUICtrlCreateInput.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
at,
В какой момент? Во время ввода или при потере фокуса или когда?
 

madmasles

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

GUICreate('Test', 250, 70)
$nLabel = GUICtrlCreateLabel('', 10, 10, 230, 16)
GUICtrlSetBkColor(-1, 0xDCDCDC)
$nInput = GUICtrlCreateInput('', 10, 40, 230, 20)
GUISetState()
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')

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

Func _WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
	Local $iIDFrom = BitAND($iwParam, 0xFFFF)
	Local $iCode = BitShift($iwParam, 16)
	Switch $iIDFrom
		Case $nInput
			Switch $iCode
				Case $EN_CHANGE
					GUICtrlSetData($nLabel, GUICtrlRead($nInput))
			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_COMMAND
 
Автор
A

at

Гость
madmasles, спасибо. Честно говоря, я думал, проще будет. Мне сложно Ваш пример применить к своему скрипту. Прошу помочь. Нужно, чтоб при вводе данных мы получали в окне $v_Label_3 результат вычисления: $v_Summa_Itog .

Вот здесь я завис:
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$v_Form = GUICreate("Тест ТС", 234, 106, 196, 113)
$v_Group_1 = GUICtrlCreateGroup(" Степень точности ", 8, 8, 217, 89)
$v_Group_2 = GUICtrlCreateGroup("", 144, 48, 49, 33)
$v_Label_1 = GUICtrlCreateLabel("Размер выборки", 32, 32, 90, 17)
$v_Label_2 = GUICtrlCreateLabel("=", 128, 56, 10, 17)
$v_Label_3 = GUICtrlCreateLabel("", 152, 56, 39, 20)
$v_Label_4 = GUICtrlCreateLabel("%", 200, 56, 12, 17)
$v_Input_1 = GUICtrlCreateInput("", 32, 56, 89, 21)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		    $v_Summa_1 = Sqrt($v_Input_1 + 1)
			$v_Summa_Itog = 100/$v_Summa_1
			If $v_Input_1 <> 0 Then
			 GUICtrlSetData($v_Label_3,GUICtrlRead($v_Input_1))
		    EndIf
		
	EndSwitch
WEnd
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Так ?:
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$v_Form = GUICreate("Тест ТС", 234, 106, 196, 113)
$v_Group_1 = GUICtrlCreateGroup(" Степень точности ", 8, 8, 217, 89)
$v_Group_2 = GUICtrlCreateGroup("", 144, 48, 49, 33)
$v_Label_1 = GUICtrlCreateLabel("Размер выборки", 32, 32, 90, 17)
$v_Label_2 = GUICtrlCreateLabel("=", 128, 56, 10, 17)
$v_Label_3 = GUICtrlCreateLabel("", 152, 56, 39, 20)
$v_Label_4 = GUICtrlCreateLabel("%", 200, 56, 12, 17)
$v_Input_1 = GUICtrlCreateInput("", 32, 56, 89, 21)
GUISetState(@SW_SHOW)

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 $iIDFrom = BitAND($iwParam, 0xFFFF)
    Local $iCode = BitShift($iwParam, 16)
    Switch $iIDFrom
        Case $v_Input_1
            Switch $iCode
                Case $EN_CHANGE
                    $v_Summa_1 = Sqrt($v_Input_1 + 1)
					$v_Summa_Itog = 100/$v_Summa_1
					If $v_Input_1 <> 0 Then
						GUICtrlSetData($v_Label_3,GUICtrlRead($v_Input_1))
					EndIf
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_COMMAND
 
Автор
A

at

Гость
В общем, вот так у меня получилось. Прошу коллег проверить, все ли корректно в моем коде.

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

$h_Form = GUICreate("Тест ТС", 234, 106, 196, 113)
$v_Group_1 = GUICtrlCreateGroup(" Степень точности ", 8, 8, 217, 89)
$v_Group_2 = GUICtrlCreateGroup("", 144, 48, 49, 32)
$v_Label_1 = GUICtrlCreateLabel("Размер выборки", 32, 32, 90, 17)
$v_Label_2 = GUICtrlCreateLabel("=", 128, 58, 10, 17)
$v_Label_3 = GUICtrlCreateLabel('', 152, 58, 39, 20)
$v_Label_4 = GUICtrlCreateLabel("%", 200, 58, 12, 17)
$v_Input_1 = GUICtrlCreateInput('', 32, 56, 89, 21)
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
GUISetState()

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

Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    Local $ID = BitAND($wParam, 0xFFFF)
    Switch $hWnd
        Case $h_Form
            Switch BitShift($wParam, 16)
                Case $EN_CHANGE
                    Switch $ID
						Case $v_Input_1
						$v_Summa_1 = Sqrt(GUICtrlRead($v_Input_1)+ 1)
						$v_Summa_Itog = Execute(100/$v_Summa_1)
						$v_Label_3 = GUICtrlCreateLabel(Round($v_Summa_Itog, 2), 152, 58, 39, 20)
                    EndSwitch
            EndSwitch
    EndSwitch
EndFunc

Здесь нашел понятное разъяснение: http://autoit-script.ru/index.php/topic,3699.0.html

P.S. При пустой ячейке выдает значение "100", с этим я разберусь попозже.
 
Верх