Что нового

как сделать вывод окна для ввода с маской только цифры?

iamOmg

Новичок
Сообщения
97
Репутация
2
:scratch: то есть он меня спрашивал какойнить число)) и можно было вводить только цифры.. как это сделать? :scratch: :-\
 

Khaibit

Знающий
Сообщения
81
Репутация
18
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("test", 409, 246, 296, 145)
$Input1 = GUICtrlCreateInput("", 8, 24, 385, 21, $ES_NUMBER)
GUISetState(@SW_SHOW)


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


Обратите внимание, на стиль $ES_NUMBER
 

madmasles

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

$hGui = GUICreate('test', 300, 100)
$nInput = GUICtrlCreateInput('', 10, 30, 280, 20, $ES_NUMBER)
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 $hWnd
	;Case $hGui
	Switch $iIDFrom
		Case $nInput
			Switch $iCode
				Case $EN_UPDATE
					GUICtrlSetData($nInput, StringRegExpReplace(GUICtrlRead($nInput), '[^\d]', ''))
			EndSwitch
	EndSwitch
	;EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Имхо лучше использовать библиотеку Creator'a http://autoit-script.ru/index.php/topic,4857.0.html
Код будет выглядеть как то так:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include "GUICtrlRegExpRestrict.au3"

_GUICtrlRegExpRestrict_Startup()
$hGui = GUICreate('test', 300, 100)
$nInput = GUICtrlCreateInput('', 10, 30, 280, 20)
_GUICtrlRegExpRestrict_SetPattern(-1, "^[0-9]$")
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
 
Автор
iamOmg

iamOmg

Новичок
Сообщения
97
Репутация
2
Khaibit, madmasles, Medic84
пасибо, а как сделать теперь чтоб введенные данные записывались как $
чтоб их потом использовать!?? :scratch:
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include "GUICtrlRegExpRestrict.au3"

_GUICtrlRegExpRestrict_Startup()
$hGui = GUICreate('test', 300, 100)
$nInput = GUICtrlCreateInput('', 10, 30, 280, 20)
_GUICtrlRegExpRestrict_SetPattern(-1, "^[0-9]$")
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            MsgBox(0,"Test",GUICtrlRead($nInput))
            Exit
    EndSwitch
WEnd


При выходе покажет значение поля.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
iamOmg

Предупреждение За нарушение общих правил (пункт В.8):
Так как эта конференция называется "Русское сообщество AutoIt", язык общения на ней - Русский. Названия фирм или программных продуктов, аббревиатуры и т.д. должны быть написаны так, как они пишутся в оригинале, например не следует писать УСБ вместо USB. На форуме крайне не рекомендуется намеренно искажать русский язык и использовать "сетевой жаргон" на подобии "Аффтар выпей йадау!".


С уважением, ваш Глобальный модератор.
 
Автор
iamOmg

iamOmg

Новичок
Сообщения
97
Репутация
2
Kaster и как надо было? :-X
 
Верх