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

Собственно возник сабжевый вопрос - в 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
01.04.2008, 19:36
    #35228377
Гулин Федор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ввести апостроф в Texbox при раскладке RU/UA
почему 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
01.04.2008, 20:23
    #35228445
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ввести апостроф в Texbox при раскладке RU/UA
Вы невнимательно прочитали вопрос, особенно в части "раскладке RU/UA", что означает раскладку клавиатуры русскую/украинскую, при которой 39 на апострофе исключен. там будет код букв "Э"/"Є" соответственно.
ALT или CTRL необходимы ради непереключения на английскую раскладку клавиатуры для ввода апострофа с, например, русской и затем обратно.
а 39 с апострофа получаем только при анг. раскладке, тогда и танец с бубном нафиг...
...
Рейтинг: 0 / 0
02.04.2008, 09:10
    #35228830
MiklS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ввести апостроф в Texbox при раскладке RU/UA
Отловить нажатие этих клавишь можно с помощью 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
02.04.2008, 12:39
    #35229542
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ввести апостроф в Texbox при раскладке RU/UA
Спасибо!
По Вашей наводке сделал таким образом
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
02.04.2008, 14:02
    #35229855
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ввести апостроф в Texbox при раскладке RU/UA
А в событии KeyPress сделать этот анализ нельзя?
...
Рейтинг: 0 / 0
02.04.2008, 16:35
    #35230502
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ввести апостроф в Texbox при раскладке RU/UA
К сожалению нельзя, почему - я написал в первом посте...
...
Рейтинг: 0 / 0
02.04.2008, 16:38
    #35230512
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ввести апостроф в Texbox при раскладке RU/UA
а если не умничать :), то это событие (ALT+') не является событием для KeyPress. Если б не этот факт то и вопроса б не возникло.
...
Рейтинг: 0 / 0
02.04.2008, 16:47
    #35230545
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ввести апостроф в Texbox при раскладке RU/UA
вообщето с таймером тоже не лучший выход... оно то сразу сработает, то не сразу. наверное интервал нада подобрать...
ну а вообще лучше было бы если б какой-то другой способ был...
...
Рейтинг: 0 / 0
02.04.2008, 17:11
    #35230672
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ввести апостроф в Texbox при раскладке RU/UA
Проверь, что горит лампочка над клавишей NumLock, затем нажми клавишу Alt и не отпуская ее набери на альтернативной цифровой клавиатуре 39. Затем отпусти клавишу Alt и посмотри, что окажется введенным в TextBox
...
Рейтинг: 0 / 0
02.04.2008, 20:52
    #35231248
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ввести апостроф в Texbox при раскладке RU/UA
Этот способ знаю со времен ДОСа... Только обучить этому армию юзеров...
...
Рейтинг: 0 / 0
02.04.2008, 22:40
    #35231367
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ввести апостроф в Texbox при раскладке RU/UA
CTAC-KOЭтот способ знаю со времен ДОСа... Только обучить этому армию юзеров...

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

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

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

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

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

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

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

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


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