Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: Замена символов при вводе Добавлено: 17.06.08 18:02  

Автор вопроса:  Александр
Есть TextBox, в него вводится инфа. Нужно при вводе определенного символа заменять этот символ на другой не прерывая набора. Типа автозамены в ворде. Еще хотелось бы это реализовать в виде функции, которая в качестве аргумента принимает тот объект, в котором набирается техт. чтобы не писать обработчик события KeyPress для каждого компонента.

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 18.06.08 01:27
тогда придется юзать хуки =) лучше уж обработчики писать

Ответить

Номер ответа: 2
Автор ответа:
 Александр



Вопросов: 4
Ответов: 12
 Профиль | | #2 Добавлено: 18.06.08 16:25
Хорошо, а как писать обработчик. Как определить вводимый символ? Какое событие использовать KeyPress, KeyUp или KeyDown?

Ответить

Номер ответа: 3
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #3
Добавлено: 18.06.08 20:44
KeyPress

Ответить

Номер ответа: 4
Автор ответа:
 Александр



Вопросов: 4
Ответов: 12
 Профиль | | #4 Добавлено: 19.06.08 00:52
Алгоритм я представляю себе так:
1. Определяем вводимый символ
2. Удаляем его.
3. Печатаем то, что нужно.
Что при этом будет с вводом текста? Ведь юзер продолжает его вбивать. Может нужен временный буфер для вводимого текста, чтобы вставить его после замененного текста. Или времени хватит на обработку события?

Ответить

Номер ответа: 5
Автор ответа:
 Holsten



Вопросов: 5
Ответов: 100
 Профиль | | #5 Добавлено: 19.06.08 02:01
вместо "а" печатает "б"

Private Sub Text1_KeyPress(KeyAscii As Integer)
    If Chr(KeyAscii) = "а" Then KeyAscii = Asc("б";)
   ' If KeyAscii = 224 Then KeyAscii = 225
End Sub

Ответить

Номер ответа: 6
Автор ответа:
 Александр



Вопросов: 4
Ответов: 12
 Профиль | | #6 Добавлено: 19.06.08 11:59
Не работает. Пишет

Run-time error '5':
Invalid procedure call or argument

Ответить

Номер ответа: 7
Автор ответа:
 Holsten



Вопросов: 5
Ответов: 100
 Профиль | | #7 Добавлено: 19.06.08 14:05
У кого еще не работает? :)

Ответить

Номер ответа: 8
Автор ответа:
 Александр



Вопросов: 4
Ответов: 12
 Профиль | | #8 Добавлено: 19.06.08 14:41
Не знаю в этом ли дело, но у меня вызов события выглядит по-другому:

Private Sub Certificate_Number_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Работаю в Microsoft Visual Basic 6.5, Version 1020, VBA:Retail 6.5.1020, Forms3: 12.0.4518.101

Ответить

Номер ответа: 9
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #9 Добавлено: 19.06.08 16:17
Не знаю в этом ли дело, но у меня вызов события выглядит по-другому:
:) Код для VB , а ты в VBA

Ответить

Номер ответа: 10
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #10 Добавлено: 19.06.08 16:41
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  If KeyAscii = 1072 Then KeyAscii = 1073
End Sub
Странные какие то ascii. Работает?

Ответить

Номер ответа: 11
Автор ответа:
 SyavX



Вопросов: 25
Ответов: 149
 Профиль | | #11 Добавлено: 19.06.08 16:43
оболочка у события другая, но код то рабочий
Private Sub Certificate_Number_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Chr(KeyAscii) = "а" Then KeyAscii = Asc("б";)
End Sub

Ответить

Номер ответа: 12
Автор ответа:
 SyavX



Вопросов: 25
Ответов: 149
 Профиль | | #12 Добавлено: 19.06.08 17:10
хм, действительно для кириллицы в VBA ascii коды сдвинуты на 848...

тогда можно так сделать:
Private Sub Certificate_Number_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii > 1039 And KeyAscii < 1104 Then 'А-я
    If Chr(KeyAscii - 848) = "а" Then KeyAscii = Asc("я";) + 848
Else
    If Chr(KeyAscii) = "q" Then KeyAscii = Asc("z";)
End If
End Sub

Ответить

Номер ответа: 13
Автор ответа:
 Александр



Вопросов: 4
Ответов: 12
 Профиль | | #13 Добавлено: 19.06.08 18:37
Код для VB , а ты в VBA

Так ведь и форум по &#8207;VBA.

Ответить

Номер ответа: 14
Автор ответа:
 Александр



Вопросов: 4
Ответов: 12
 Профиль | | #14 Добавлено: 19.06.08 18:44
Не работает. Печатает ту букву, которую нажимаю. Попутно еще вопрос. В справке написано, что ASCII символы это только 127 символов. А как быть с остальными? Например, угловые кавычки «»

Ответить

Номер ответа: 15
Автор ответа:
 Александр



Вопросов: 4
Ответов: 12
 Профиль | | #15 Добавлено: 19.06.08 19:40
Не работает. Печатает ту букву, которую нажимаю

Дико извиняюсь. Все работает. Вводил не в то поле &;).
Но вопрос про остальные символы остался.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам