ViSiToR

Silver Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Kauffman Цитата: где найти справочник по WinAPI для AutoIt с описаниями функций и сообщений | В шапке Добавлено: А вот похожий скрипт для предотвращения ввода не цифр в Input-поле: Код: #include <GuiConstants.au3> Global Const $WM_COMMAND = 0x0111 Global $GUIOldPos[2] $GUI = GUICreate("<Only Numbers> in Input Demo GUI", 300, 100) $Input = GUICtrlCreateInput("", 20, 40, 260, 20) $Exit = GUICtrlCreateButton("Exit", 20, 70, 60, 20) GUISetState() GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $Exit ExitLoop Case Else CheckToolTip() EndSwitch WEnd Func CheckToolTip() Local $GetCurInfo = GUIGetCursorInfo($GUI) Local $GuiGetPos = WinGetPos($GUI) If $GetCurInfo[2] = 1 Or $GUIOldPos[0] <> $GuiGetPos[0] Or $GUIOldPos[1] <> $GuiGetPos[1] Then ToolTip("") $GUIOldPos = $GuiGetPos EndIf EndFunc Func _Input_Changed() ToolTip("") Local $ReadInput = GUICtrlRead($Input) If StringRegExp($ReadInput, '[^0-9]') Then GUICtrlSetData($Input, StringRegExpReplace($ReadInput, '[^0-9]', '')) Local $GuiGetPos = WinGetPos($GUI) Local $XPos = $GuiGetPos[0] + 280 Local $YPos = $GuiGetPos[1] + 80 ToolTip("Here only numbers are allowed", $XPos, $YPos, "Not allowed symbol", 3, 1) DllCall("user32.dll", "int", "MessageBeep", "int", 0x0) EndIf EndFunc ;==>_Input_Changed Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam) Local $nNotifyCode = BitShift($wParam, 16) Local $nID = BitAND($wParam, 0xFFFF) Local Const $EN_CHANGE = 0x300 Local Const $EN_SETFOCUS = 0x100 Switch $nID Case $Input Switch $nNotifyCode Case $EN_CHANGE _Input_Changed() Case $EN_SETFOCUS ToolTip("") EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>MY_WM_COMMAND | Многие для этого используют стиль $ES_NUMBER, но он не перестраховывает от вставки текста по Ctrl V или с контексного меню.
---------- ViSiToR a.k.a CreatoR CreatoR это не ник, CreatoR это стиль жизни! |
| Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 17:04 09-10-2007 | Исправлено: ViSiToR, 17:16 09-10-2007 |
|