Точка-разделитель десятых в 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