Текущий архив: 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.49 MB
Время: 0.037 c