1

Тема: AHK: Работа с текстом в поле Edit

Здравствуйте, столкнулся с такой проблемой, мне нужно что бы в поле Edit можно было вводить только буквы и знаки "[" "]".
Делать проверку через...

If vEdit contains !,@,#,$

... не очень удобно. Помогите пожалуйста найти оптимальный вариант. Заранее спасибо.

2

Re: AHK: Работа с текстом в поле Edit


Gui, Add, Edit, vEdit gEdit
Gui, Show
Return

Edit:
    GuiControlGet, tEdit, , Edit
    If tEdit ~= "i)[^А-ЯЁ\[\]A-Z]"
        GuiControl, , Edit, % Edit
    Else
        Edit := tEdit
    Return
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

3 (изменено: tuma4ok, 2014-07-30 13:50:39)

Re: AHK: Работа с текстом в поле Edit

А можно поподробней об этой строчке пожалуйста.

    If tEdit ~= "i)[^А-ЯЁ\[\]A-Z]"

Интересует это...

i)[^А-ЯЁ\[\]A-Z]

... и что означает "~="?
Ах... Да, русские буквы не вводятся.

4 (изменено: serzh82saratov, 2014-07-30 14:00:07)

Re: AHK: Работа с текстом в поле Edit

Сократил пару строк:


Gui, Add, Edit, vEdit gEdit
Gui, Show
Return

Edit:
    GuiControlGet, tEdit, , Edit
    If (tEdit ~= "i)[^А-ЯЁ\[\]A-Z]" || (Edit := tEdit) = "")
        GuiControl, , Edit, % Edit
    Return

i)[^А-ЯЁ\[\]A-Z]

Это просто RegEx шаблон. Что то кроме [^...].

~=

Сокращённая запись RegExMatch.

Ах... Да, русские буквы не вводятся.

Непонял.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

5

Re: AHK: Работа с текстом в поле Edit

Не знаю почему, но при удалении символа мне выбивало значение 1.
Помогло это.

GuiControlGet, tEdit, , AuthLogin
    If (tEdit ~= "i)[^\[\]A-Za-z]" || (AuthLogin := tEdit) = "")
        GuiControl, , AuthLogin, % AuthLogin
    IF (AuthLogin = 1)
        GuiControl, , AuthLogin, 

6

Re: AHK: Работа с текстом в поле Edit

при удалении символа мне выбивало значение 1.

Это как?

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

7

Re: AHK: Работа с текстом в поле Edit

Это как?

Когда вводит запрещенный символ, у меня Edit становится "1". Вот я писал "wdsa", а потом добавил 5, то есть "wdsa5". После этого значение становится просто "1".

8

Re: AHK: Работа с текстом в поле Edit

Gui, Add, Edit, vEdit gEdit
Gui, Show
Return

Edit:
    GuiControlGet, tEdit, , Edit
    If (tEdit ~= "i)[А-ЯЁ\[]A-Z]" || (Edit := tEdit) = "")
        GuiControl, , Edit, % Edit
    Return

Теперь все работает

9

Re: AHK: Работа с текстом в поле Edit

Теперь все работает

Это наверное чудо, или вы как то незаметно модифицировали код.
А может не "теперь работает", а "всё было в порядке, это просто Я сам что то, того...".

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

10 (изменено: Desire, 2014-07-30 14:41:45)

Re: AHK: Работа с текстом в поле Edit

serzh82saratov пишет:

Теперь все работает

Это наверное чудо, или вы как то незаметно модифицировали код.
А может не "теперь работает", а "всё было в порядке, это просто Я сам что то, того...".

Я просто волшебник!

На самом деле я убрал никому не нужный экран закрывающей скобки и убрал "^", а то она вобще не понятно каким боком там, просили же буквы оставить

11

Re: AHK: Работа с текстом в поле Edit

Я глуп, как пробка
Теперь можно вписывать любой символ

12 (изменено: serzh82saratov, 2014-07-30 14:46:50)

Re: AHK: Работа с текстом в поле Edit

Не посмотрел что автор 8 поста не ТС упс...
И не заметил отсутствия "^" в "новом" чудо коде.

На самом деле я убрал никому не нужный экран закрывающей скобки и убрал "^", а то она вобще не понятно каким боком там

Замечательно, теперь можно вводить запрещённые, нужные ввести нельзя.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

13

Re: AHK: Работа с текстом в поле Edit

serzh82saratov пишет:

На самом деле я убрал никому не нужный экран закрывающей скобки и убрал "^", а то она вобще не понятно каким боком там

Замечательно, теперь можно вводить запрещённые, нужные ввести нельзя.

Я просто подумал, что "^" стоит в целях поиска с начала строки

Как вариант могу предложить такой код
Просто AHK не совсем дружит с русским

Gui, Add, Edit, vEdit gEdit
Gui, Show
Return

Edit:
    GuiControlGet, tEdit, , Edit
    If (tEdit ~= "i)[^a-zабвгдеёжзийклмнопрстуфхцчшъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЪЫЬЭЮЯ\[]]" || (Edit := tEdit) = "")
        GuiControl, , Edit, % Edit
    Return

14

Re: AHK: Работа с текстом в поле Edit

serzh82saratov, как изменить Ваш код, если у меня Edit находится во 2 окне?

AutoHotkey - 1.1.29.01

15 (изменено: serzh82saratov, 2018-01-12 22:58:48)

Re: AHK: Работа с текстом в поле Edit

Gui, Add, Text,, Запомнил клавишу:
Gui, Add, Text, vString wp
Gui, Add, Button, gsub1, Изменить ; кнопка, вызывающая окно с вводом переменной
Gui, Show
return

sub1:
 {
Gui, 2:+owner1
Gui, 2:Add, Text,, Изменить на:
Gui, 2:Add, Edit, vBukva
GuiControlGet, Bukva
Gui, 2:Add, Button, gOK, Ок
Gui, 2:Add, Button, gCancel, Отмена
Gui, 2:Add, Text, vString
Gui, 2:Show,

 }
return

2Guiclose:
Gui Destroy

OK:
 {
GuiControlGet, Bukva, 2:
GuiControlGet, String, 1:

(Bukva ~= "i)[^А-ЯЁ\[\]A-Z]" && (Bukva := String))
GuiControl, 1:, String, %Bukva%

Gui, 1:Show,
 }
return
CANCEL:
 {
Gui Destroy
    vBukva:=vBukva
Gui, 1:Show,
 }
return

Guiclose:
ExitApp 
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

16

Re: AHK: Работа с текстом в поле Edit

serzh82saratov, а можно ли сделать, чтобы вводить можно было только цифры и Английские буквы? и также чтобы они вообще не вводились в строку Edit?

AutoHotkey - 1.1.29.01

17

Re: AHK: Работа с текстом в поле Edit

Gui, Add, Edit, vEdit gEdit
Gui, Show
Return

Edit:
    GuiControlGet, tEdit, , Edit
    If (tEdit ~= "i)[^0-9A-Z]" || (Edit := tEdit) = "")
        GuiControl, , Edit, % Edit
    Return
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

18 (изменено: Gutalin, 2018-01-12 23:16:23)

Re: AHK: Работа с текстом в поле Edit

serzh82saratov, но если я  это вставлю во 2 окно, это не работает. Где нужно прописать что это Edit: ... это для 2 окна?
Вот код:


Gui, Add, Text,, Запоминаю:
Gui, Add, Text, vString
Gui, Add, Button, gsub1, Изменить
Gui, Show
return

sub1:
 {
Gui, 2:+owner1
Gui, 2:Add, Text,, Изменить на:
Gui, 2:Add, Edit,vBukva gEdit Limit1 +Uppercase
GuiControlGet, Bukva
Gui, 2:Add, Button, gOK, Ок
Gui, 2:Add, Button, gCancel, Отмена
Gui, 2:Show,

 }
return

2Guiclose:
Gui Destroy

OK:
 {
GuiControlGet, Bukva
GuiControl, 1:, String, %Bukva%
Gui, 1:Show,
Gui Destroy
 }
return
CANCEL:
 {
Gui Destroy
    vBukva:=vBukva
Gui, 1:Show,
 }
return

Edit:
     GuiControlGet, tEdit, , Edit
    If (tEdit ~= "i)[^0-9A-Z]" || (Edit := tEdit) = "")
        GuiControl, , Edit, % Edit
    Return

Guiclose:
ExitApp
AutoHotkey - 1.1.29.01

19

Re: AHK: Работа с текстом в поле Edit


Gui, Add, Text,, Запоминаю:
Gui, Add, Text, vString
Gui, Add, Button, gsub1, Изменить
Gui, Show
return

sub1:
 {
Gui, 2:+owner1
Gui, 2:Add, Text,, Изменить на:
Gui, 2:Add, Edit,vBukva gEdit Limit1 +Uppercase gEdit
GuiControlGet, Bukva
Gui, 2:Add, Button, gOK, Ок
Gui, 2:Add, Button, gCancel, Отмена
Gui, 2:Show,

 }
return

2Guiclose:
Gui Destroy

OK:
 {
GuiControlGet, Bukva
GuiControl, 1:, String, %Bukva%
Gui, 1:Show,
Gui Destroy
 }
return
CANCEL:
 {
Gui Destroy
    vBukva:=vBukva
Gui, 1:Show,
 }
return

Edit:
     GuiControlGet, tBukva, 2:, Bukva  
    If (tBukva ~= "i)[^0-9A-Z]" || (0, Bukva := tBukva))
		GuiControl, 2:, Bukva, % Bukva
    Return

Guiclose:
ExitApp
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

20 (изменено: Gutalin, 2018-01-12 23:40:27)

Re: AHK: Работа с текстом в поле Edit

serzh82saratov,в 11 строке  два gEdit, один явно лишний (Без первого хорошо работает)
Большое спасибо, всё работает!

AutoHotkey - 1.1.29.01