Что нового

[Элементы GUI] Связать GUI-окно и код

volaxus

Новичок
Сообщения
5
Репутация
0
Привет!

Есть рабочий код:
Код:
$sText = '2C-39-96-5A-16-0E'

$sTextOld = '0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ'
$sTextNew = '0123456789:abcdifghijklmopqrsstuvwxyz'

for $i = 1 to StringLen($sText)
    $s = StringInStr($sTextOld, StringMid($sText, $i, 1), 1)
   if $s then $sText = StringReplace($sText, $i, StringMid($sTextNew, $s, 1))
Next
MsgBox(0, 'Сообщение', $sText)


так же, есть простая GUI -форма:
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 266, 130, 334, 368)
$Button1 = GUICtrlCreateButton("Button1", 24, 72, 217, 33)
$Input1 = GUICtrlCreateInput("", 24, 32, 217, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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

	EndSwitch
WEnd


Не могу их вместе связать, чтобы по вводу любого текста в окно из
Код:
$sText = '2C-39-96-5A-16-0E'
(тот что там сейчас указан — это просто пример, можно записать все что угодно, но вид самого выражения должен быть именно таким) и нажатию клавиши Button1, выдавался уже итоговый результат после обработки скриптом.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Const $sTextOld = '0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ'
Const $sTextNew = '0123456789:abcdifghijklmopqrsstuvwxyz'

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 266, 130, 334, 368)
$Button1 = GUICtrlCreateButton("Button1", 24, 72, 217, 33)
$Input1 = GUICtrlCreateInput("", 24, 32, 217, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
		Case $Button1
			$sText = GUICtrlRead( $Input1 )
			If $sText Then
				for $i = 1 to StringLen($sText)
					$s = StringInStr($sTextOld, StringMid($sText, $i, 1), 1)
					if $s then $sText = StringReplace($sText, $i, StringMid($sTextNew, $s, 1))
				Next
				GUICtrlSetData( $Input1, $sText )
			EndIf
    EndSwitch
WEnd


Обновил под новое условие.
 
Автор
V

volaxus

Новичок
Сообщения
5
Репутация
0
Все ок, но можно сделать так, чтобы вывод шел сразу в строку ввода. Т.е. сперва я пишу изначально большими буквами и с "-", жму Button1, выполняется скипт, и результат показывается в том же окне, где были изначальные данные (заменяется нижним регистром и ":").


add: ааа, так легко, что проще некуда. :laugh:
 

madmasles

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

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
volaxus
Так проще всего, ИМХО.
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $hGui, $iInput
$hGui = GUICreate('Form1', 300, 60)
$iInput = GUICtrlCreateInput('', 10, 20, 280, 20)
GUISetState()
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')

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

Func _WM_COMMAND($h_Wnd, $_iMsg, $i_wParam, $i_lParam)
	Local $i_ID, $i_Code
	$i_ID = BitAND($i_wParam, 0xFFFF)
	$i_Code = BitShift($i_wParam, 16)
	Switch $h_Wnd
		Case $hGui
			Switch $i_ID
				Case $iInput
					Switch $i_Code
						Case $EN_CHANGE
							GUICtrlSetData($iInput, StringLower(GUICtrlRead($iInput)))
					EndSwitch
			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_COMMAND
 
Верх