Страница: 1 | 2 |
|
Вопрос: Замена символов при вводе
|
Добавлено: 17.06.08 18:02
|
|
Автор вопроса: Александр
|
Есть TextBox, в него вводится инфа. Нужно при вводе определенного символа заменять этот символ на другой не прерывая набора. Типа автозамены в ворде. Еще хотелось бы это реализовать в виде функции, которая в качестве аргумента принимает тот объект, в котором набирается техт. чтобы не писать обработчик события KeyPress для каждого компонента.
Ответить
|
Номер ответа: 2 Автор ответа: Александр
Вопросов: 4 Ответов: 12
|
Профиль | | #2
|
Добавлено: 18.06.08 16:25
|
Хорошо, а как писать обработчик. Как определить вводимый символ? Какое событие использовать KeyPress, KeyUp или KeyDown?
Ответить
|
Номер ответа: 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
Ответить
|
Номер ответа: 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
Ответить
|
Номер ответа: 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
Так ведь и форум по ‏VBA.
Ответить
|
Номер ответа: 14 Автор ответа: Александр
Вопросов: 4 Ответов: 12
|
Профиль | | #14
|
Добавлено: 19.06.08 18:44
|
Не работает. Печатает ту букву, которую нажимаю. Попутно еще вопрос. В справке написано, что ASCII символы это только 127 символов. А как быть с остальными? Например, угловые кавычки «»
Ответить
|
Номер ответа: 15 Автор ответа: Александр
Вопросов: 4 Ответов: 12
|
Профиль | | #15
|
Добавлено: 19.06.08 19:40
|
Не работает. Печатает ту букву, которую нажимаю
Дико извиняюсь. Все работает. Вводил не в то поле &.
Но вопрос про остальные символы остался.
Ответить
|
Страница: 1 | 2 |
Поиск по форуму