powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как ввести апостроф в Texbox при раскладке RU/UA
15 сообщений из 15, страница 1 из 1
Как ввести апостроф в Texbox при раскладке RU/UA
    #35227700
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Собственно возник сабжевый вопрос - в KeyPress это невозможно отловить, т.к. для CTRL+' нет кода, а только для ALT+' и этому код = 40 (проверял INKEY-ем - при любой раскладке клавы дает 40), но
Visual FoxPro 9.0 Language Reference The KeyPress event does not occur for any combination of keys with the ALT key.
Что же делать? Переключаться в англ. раскладку и обратно каждый раз - жутко неудобно!

спасибо

vfp9
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35228377
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему 40 - у меня 39
и не понятно зачем ctrl
Proc Text1.KeyPress
LPARAMETERS nKeyCode, nShiftAltCtrl && * SHIFT 1 , CTRL 2 , ALT 4 ==> CTRL+ALT = 2+4=6 !!!
DO CASE
CASE nKeyCode = 39 AND nShiftAltCtrl = 0
KEYBOARD ['] plain
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35228445
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы невнимательно прочитали вопрос, особенно в части "раскладке RU/UA", что означает раскладку клавиатуры русскую/украинскую, при которой 39 на апострофе исключен. там будет код букв "Э"/"Є" соответственно.
ALT или CTRL необходимы ради непереключения на английскую раскладку клавиатуры для ввода апострофа с, например, русской и затем обратно.
а 39 с апострофа получаем только при анг. раскладке, тогда и танец с бубном нафиг...
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35228830
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отловить нажатие этих клавишь можно с помощью API
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE SHORT GetKeyState in WIN32API INTEGER KEYCODE

IF (GETKEYSTATE( 16 ) <  0 )
    MESSAGEBOX("Shift key pressed")
ENDIF

IF (GETKEYSTATE( 17 ) <  0 )
    MESSAGEBOX("CTRL key pressed")
ENDIF

IF (GETKEYSTATE( 18 ) <  0 )
    MESSAGEBOX("Alt key pressed")
ENDIF
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35229542
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
По Вашей наводке сделал таким образом
1) создал класс таймера
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Init
DECLARE SHORT GetKeyState in user32 INTEGER KEYCODE
this.Interval =  100 

Timer
IF GETKEYSTATE( 222 ) <  0  && код ALT+'
   KEYBOARD "'" PLAIN
ENDIF

Destroy
CLEAR DLLS 'GetKeyState'

2) сей таймер через AddObject() добавляю на LOAD-e форм, где есть текстбоксы...
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35229855
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в событии KeyPress сделать этот анализ нельзя?
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35230502
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению нельзя, почему - я написал в первом посте...
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35230512
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если не умничать :), то это событие (ALT+') не является событием для KeyPress. Если б не этот факт то и вопроса б не возникло.
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35230545
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообщето с таймером тоже не лучший выход... оно то сразу сработает, то не сразу. наверное интервал нада подобрать...
ну а вообще лучше было бы если б какой-то другой способ был...
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35230672
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверь, что горит лампочка над клавишей NumLock, затем нажми клавишу Alt и не отпуская ее набери на альтернативной цифровой клавиатуре 39. Затем отпусти клавишу Alt и посмотри, что окажется введенным в TextBox
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35231248
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот способ знаю со времен ДОСа... Только обучить этому армию юзеров...
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35231367
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CTAC-KOЭтот способ знаю со времен ДОСа... Только обучить этому армию юзеров...

Как мне кажется, даже если найдешь способ заставить работать Ctl+ или Alt+ все равно придется обучать армию юзеров. Так какая разница какому именно способу обучать? Причем, еще неизвестно, какой способ окажется понятнее для юзеров.

Не проще ли тогда сделать дополнительный ToolBar со всеми возможными спец.символами, которых нет ни в руской, ни в украинской раскладке? А в ToolTips для каждого символа написать какой скан-код надо набирать на альтернативной цифровой клавиатуре.
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35233913
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да тут, понимаете, в чем дело - с одной стороны - да, на задуманную комбинацию надо обучить. Только интересно что в ряде виндовых приложений (в т.ч. MSWORD) при таких раскладках срабатывает как раз сочетание ALT+'. Это уже как некий стандарт нарисовалось и многие о нем знают. Правда там дважды нужно нажать.
И самое интересное заключается в том, что я еще не сделав этого сам в своей проге в текстбоксах у одного юзера вводил апостроф через эту комбинацию (именно нажав дважды). Уж не знаю, настроил он это глобально в винде или как, но факт остается фактом.

Теперь по поводу метода тулбара - это неудобно, т.к. требует мышки. Т.е. нужно отвлечься от ввода текста с клавы и навести мыхой куда нада, нажать, фокус свалит, надо опять нажать на текстбокс и тд.

По поводу альт+39 - это уже 3 клавиши, причем цифру 39 еще нада запомнить, а альт после набора цифры 3 не отпустить - Вы же прекрасно знаете Кто такое юзВерЬ! А когда их много?

А в случае с ALT+' - все нагляднее, ведь апостроф именно на той клавише, какую юзер и жмет, единственное что еще альт надо нажать...

и еще интересно, что через winAPI одинаково срабатывает как ALT+' так и CTRL+'
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35234140
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один "кривоватый" вариант.

Вместо TextBox использовать ActiveX-компонент Microsoft Rich TextBox Control. Его события KeyDown и KeyUp отлавливают подобные комбинации.

Но здесь будет "засада" с родными горячими клавишами FoxPro. Их надо будет продублировать в ActiveX.
...
Рейтинг: 0 / 0
Как ввести апостроф в Texbox при раскладке RU/UA
    #35236205
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это уже серьезная альтернатива!
Спасибо, попробую на досуге...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как ввести апостроф в Texbox при раскладке RU/UA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]