FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9268
Вход
Точка-разделитель десятых долей в textbox-ах

В текстовых полях на форме, где есть десятые доли не печатается разделяющая запятая с числовой клавиатуры, если активная раскладка русская. Как бороться ...


 
Прислал: Sergey   Категория: Интерфейс


Точка-разделитель десятых в textboxах

В текстовых полях на форме, где есть десятые доли не печатается разделяющая запятая с числовой клавиатуры, если активная раскладка русская. Если же текущая раскладка английская, то такой проблемы не возникает. В бухгалтерских программам (да и во всех других русскоязычных), где в большинстве своем используется русский язык, постоянно переключаться на английский язык неудобно. Есть несколько решений этой проблемы ...

1) самая простая ... точка есть рядом с правым шифтом, вполне работоспособная ... но ни один бухгалтер на такое не купится ;)
1.1) на WinNT4 такой проблемы нет в принципе, по крайней мере на Server

2) посложнее ;) ... в сетах ставим set point to ',', теперь на русском языке разделитель печатается, но на английском не печатается ... если нет нужды переключаться с русского на английский, то вполне рабочий метод. Но иногда винды сами крутят активную раскладку как хотят, и этот метод не подходит ...

3) можно сделать новый класс на основе textbox, в котором в методе keypress заменять запятую на точку:
if nkeycode=44
keyb'.'
endif

метод годится, если вы только начали делать программу ...

4) если у вас уже есть готовая программа с сотнями текстбоксов и второй способ не подходит, то можно ПОСТОЯННО сделать активной РУССКУЮ раскладку и написать тот же set point to ','. Постоянно сделать активной раскладкой русскую можно с помощью winAPI ... на каждую форму ставим таймер, интервал по выбору, но что-то около .1 сек. в событий timer пишем:
DECLARE INTEGER LoadKeyboardLayout IN win32api STRING, INTEGER
=LOADKEYBOARDLAYOUT("00000419",1) && Ru

5) можно поменять файл kbdru.dll в виндах, но счас версий виндов раных как китайцев, поэтому что стоит у заказчика неизвестно. Да и корежить винды - нехорошо :) и так сами чуть не падают ...

Ну вроде и все, что вспомнил и увидел :) Если кто-нибудь знает как еще, пишите iron@serov.ru
 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (4.953)
Дополнения пользователей
Точка-разделитель десятых долей в textbox-ах
[+][?]
Игорь Викторович
08.05.04 01:12:37

Я делаю проще - работает четко:
подготовил классы с textbox & editbox, где в метод KeyPress ввожу:

LPARAMETERS nKeyCode, nShiftAltCtrl
if nKeyCode = 44
   keyboard chr(46) clear
endif

[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика