Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

Decimal Separator   Найти похожие ветки 

 
kaif ©   (2004-05-26 03:33) [0]

Справа на клавиатуре есть точка. Когда текущий язык клавиатуры  русский, эта точка понимается как DecimalSeparator (как запятая). Если текущий язык английский, то понимается, как точка.
 Точка в качестве "точки" для ввода текста из этой части клавиатуры обычно не юзается. То есть я так понимаю, что что-то здесь глупо как-то изначально... Хочется, чтобы точка среди цифр всегда воспринималась, как DecimalSeparator. То есть как запятая при русских региональных настройках, если в них DecimalSeparator - запятая...
 Может я сумбурно выражаюсь, но смысл вопроса, я думаю понятен...
 Кто как с этим боролся?
 Существует ли общепринятое нормальное решение?


 
Fay ©   (2004-05-26 04:31) [1]

С этим не надо бороться - это нормально.
Что именно тебе мешает?


 
REP   (2004-05-26 06:43) [2]

If key="." Then Key=Decimalseparator


 
Reindeer Moss Eater ©   (2004-05-26 08:50) [3]

if ((key = ".") or (key = ",")) and (key <> DecimalSeparator) then key := DecimalSeparator;


 
Sandman25+1   (2004-05-26 08:58) [4]

if Key in [".",","] then
 Key := DecimalDeparator


 
Mim1 ©   (2004-05-26 09:03) [5]

Можно эту проблемму попытаться побороть глобально? путем замены, одного из пареметров сообщений wm_key???. Где нибудь в application.onmessage.


 
Sandman25+1   (2004-05-26 09:09) [6]

[5] Mim1 ©   (26.05.04 09:03)

Не стоит использовать Application.OnMessage без особой нужды ИМХО. Для "глобального" решения пишется наследник TCustomEdit, который перекрывает DoKeyPress


 
kaif ©   (2004-05-26 19:06) [7]

Мне нужно глобально. Я не могу везде обработчики вешать. Видимо, придется это все пихать в предков каждого контрола... Не нравится мне это.
А через скан-коды клавиатуры или virtual keys отличить точку в правой части (среди цифр) от "законной" точки можно? Или это то же самое в сообщениях Windows?


 
Vlad ©   (2004-05-26 19:12) [8]


> Мне нужно глобально.

Application.OnMessage не поможет ?


 
Vlad ©   (2004-05-26 19:14) [9]

Хотя, это было бы не совсем правильно...


 
Тимохов ©   (2004-05-26 19:16) [10]

я в итоге сделать проверкой и заменой на decimalseparator.
но у меня все предки свои - т.е. мне было проще.


 
kaif ©   (2004-05-26 23:42) [11]

Всем спасибо. По крайней мере джентльменский набор решений ясен. Странно, почему вообще так сделана это точка справа... видимо проблема в том, что все раскладки клавиатуры независимы друг от друга и системе все равно, какое множество раскладок в данный момент имеется. А какой-то очень умный товарисч с самого начала заложил в русские региональные настройки запятую в качестве DecimalSeparator по умолчанию... Видимо тот же товарищ, что поставил букву Ё особняком. Умный шибко был чел.


 
Игорь Шевченко ©   (2004-05-27 12:48) [12]


> Странно, почему вообще так сделана это точка справа.


У наших заказчиков операторы этой кнопкой очень активно пользуются, потому как вводят суммы пользуясь правой частью клавиатуры, одной рукой.


 
Danilka ©   (2004-05-27 13:00) [13]

[12] Игорь Шевченко ©   (27.05.04 12:48)
Имеется ввиду другое. То, что, е едиторе будет точка либо запятая зависит от текущей раскладки клавиатуры, а не от выбранных региональных настроек в системе.

Впрочем, о таком поведении серой точки я только из этой ветки узнал. Операторши, как правило, языки не переключают, у них всегда русский.
Так что, не думаю, что имеет смысл тратить на "лечение" этого время.


 
Anatoly Podgoretsky ©   (2004-05-27 13:33) [14]

kaif ©   (26.05.04 23:42) [11]
Этому товарищу уже много сотен лет


 
kaif ©   (2004-05-27 20:57) [15]

Вот Danilka ©   (27.05.04 13:00) [13]

сумел сформулировать то, что я хотел сказать так сумбурно:

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

 Если это побороть на уровне обработки оконных сообщений конкретного приложения - было бы неплохо. Я еще туда не лез, но сдается мне, что все будет печально и у обих точек один и тот же виртуальный код...
 Если кто-то знает, что это не так - буду очень благодарен за этот бит информации. Это сэкономило бы мне время...
 К тому же не только мне одному может быть это интересно.


 
Anatoly Podgoretsky ©   (2004-05-27 22:37) [16]

VK_DECIMAL кажется относится только в цифровой клавиатуре, а вот что по нему будет затем получаться будет зависеть от раскладки, текущую раскладку всегда можно узнать.


 
kaif ©   (2004-05-28 01:20) [17]

2 Anatoly Podgoretsky
Спасибо! Я посмотрю.

Вот, нашел в Help!!!
Действительно,
Virtual Keys:

VK_NUMPAD0 0 key (numeric keypad)
VK_NUMPAD1 1 key (numeric keypad)
VK_NUMPAD2 2 key (numeric keypad)
VK_NUMPAD3 3 key (numeric keypad)
VK_NUMPAD4 4 key (numeric keypad)
VK_NUMPAD5 5 key (numeric keypad)
VK_NUMPAD6 6 key (numeric keypad)
VK_NUMPAD7 7 key (numeric keypad)
VK_NUMPAD8 8 key (numeric keypad)
VK_NUMPAD9 9 key (numeric keypad)

VK_MULTIPLY Multiply key (numeric keypad)
VK_ADD Add key (numeric keypad)
VK_SEPARATOR Separator key (numeric keypad)
VK_SUBTRACT Subtract key (numeric keypad)
VK_DECIMAL Decimal key (numeric keypad)
VK_DIVIDE Divide key (numeric keypad)

Действительно коды с "цифровой клавиатуры" - особенные и наверно что-то можно предпринять. Надо подумать.


 
kaif ©   (2004-05-31 19:24) [18]

Перехватить нажатие точки на цифровой клавиатуре я смог при помощи события Application.OnMessage (WM_KEYDOWN, VK_DECIMAL).
 Но сымитировать нажатие клавиши "," никак не смог.
 Вот сымитировать в обоих случаях (при русской и английской раскладке) нажатие клавиши "." смог, а "," - нет.
 Дурдом какой-то...
 :(



Страницы: 1 вся ветка

Текущий архив: 2004.06.13;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.03 c
14-1085735054
basic
2004-05-28 13:04
2004.06.13
а почему дайджет не обновляется


3-1083214133
kvit
2004-04-29 08:48
2004.06.13
Чем ADO лучше BDE и как с этим бороться?! :(((


9-1076665683
ZAROLF
2004-02-13 12:48
2004.06.13
TEdit в Delphix


14-1085420205
Мазут Береговой
2004-05-24 21:36
2004.06.13
Новые вирусы... может я отстаю от жизни...


14-1085239725
Ilya__
2004-05-22 19:28
2004.06.13
Windows