powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разделитель десятых долей
10 сообщений из 10, страница 1 из 1
Разделитель десятых долей
    #34455070
OrenAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При заполнении ячейки в гриде типа 9999.99 приходится менять раскладку клавиатыры с "RUS"на ENG чтобы "." (разделитель десятых) был на клавишах NumLok вместо "," . Можно ли одновременно использовать "." и "," в качестве разделителя.
...
Рейтинг: 0 / 0
Разделитель десятых долей
    #34455218
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Разделитель десятых долей
    #34458552
OrenAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В гриде неработает как там :(
...
Рейтинг: 0 / 0
Разделитель десятых долей
    #34458588
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно программно переключать раскладку RUS/ENG при входе в числовой контрол.
Для этого лучше написать свой класс.
...
Рейтинг: 0 / 0
Разделитель десятых долей
    #34459334
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OrenAlexВ гриде неработает как там :(
Если вы в GRID-е примените свой класс TextBox c описанным KeyPress, то все будет заботь и в GRID
С уважением, Алексей.
...
Рейтинг: 0 / 0
Разделитель десятых долей
    #34460398
Dinozavr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В сообщении:
http://forum.foxclub.ru/read.php?32,177185,177215#msg-177215

FAQ - Владимир МаксимовКак заставить клавишу с "точкой" всегда вводить точку?
приведено абсолютно правильное решение для случая ввода разделителя десятичной части числа.

Однако это решение влияет на работу не только клавиши "Точка" цифровой клавиатуры, но и на работу клавиши "Точка и Запятая" текстовой клавиатуры. Повторюсь - для текстового поля, предназначенного для ввода десятичных чисел, это абсолютно правильно.

В то же время, мне приходится работать с задачами обработки конструкторской документации, где обозначения изделий (как отечественных, так и зарубежных) могут иметь самый причудливый вид, но очень часто в соответствующее текстовое поле вводятся данные, состоящие из групп букв и цифр, разделенных точками, например "ТПВЦ78.134.4788.376-16", либо "IRC127.12". Не исключается и появление запятых. Язык ввода также меняется от случая к случаю.
Пользователю удобно всю цифровую часть такой строки вводить именно с цифровой клавиатуры. Но при этом текстовая клавиатура должна работать так, как и полагается для заданного в этот момент языка.

Поэтому, в дополнение к решению уважаемого В. Максимова, предлагаю еще одно решение задачи, поставленной следующим образом:

Если при русской раскладке клавиатуры на цифровой клавиатуре в режиме NumLock нажата клавиша с точкой, то должен быть введен именно символ "Точка", а не "Запятая".
Решение основано на том, что нажатие указанной клавиши при русской раскладке выдает код символа "запятая", но на нижнем регистре, в то время как запятая с текстовой клавиатуры выдается на верхнем регистре.

Итак, код события KeyPress класса Other_TextBox:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
LPARAMETERS nKeyCode, nShiftAltCtrl

IF nKeyCode =  44  .AND. nShiftAltCtrl =  0     && Если запятая на нижнем регистре 
     LOCAL lcBuffer 
     lcBuffer = REPLICATE(Chr( 0 ),  250 ) 
     =GetKeyboardLayoutName(@lcBuffer)	&& Получить имя раскладки клавиатуры
     IF lcBuffer = "00000419"		&& Если включен русский язык
          NODEFAULT
          KEYBOARD "." PLAIN CLEAR
     ENDIF
ENDIF

Конечно, функция GetKeyboardLayoutName() должна быть предварительно определена. Где? Ну хотя бы в Init этого класса:
Код: plaintext
1.
DECLARE INTEGER GetKeyboardLayoutName IN user32 STRING @pwszKLID 

Извините за многословие, но может быть это решение будет кому-нибудь интересно.

С уважением, Dinozavr.

P.S. Хотелось бы узнать мнение корифеев по этому поводу.
...
Рейтинг: 0 / 0
Разделитель десятых долей
    #34460438
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Статья находится в разделе, который называется FAQ. Т.е. ЧАСТО задаваемые вопросы. Кроме того, сама постановка вопроса, что в данной теме, что в FAQ предполагает ввод ЧИСЕЛ.

Описанная Вами ситуация, разумеется, возможна. Но позиционировать ее как ЧАСТО втречающуюся я бы не стал. Это ЧАСТНОЕ решение для ЧАСТНОЙ задачи. Причем очень специфической задачи. Решение, "заточенное" под конкретного пользователя.
...
Рейтинг: 0 / 0
Разделитель десятых долей
    #34460530
Dinozavr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМСтатья находится в разделе, который называется FAQ. Т.е. ЧАСТО задаваемые вопросы. Кроме того, сама постановка вопроса, что в данной теме, что в FAQ предполагает ввод ЧИСЕЛ.

Описанная Вами ситуация, разумеется, возможна. Но позиционировать ее как ЧАСТО втречающуюся я бы не стал. Это ЧАСТНОЕ решение для ЧАСТНОЙ задачи. Причем очень специфической задачи. Решение, "заточенное" под конкретного пользователя.
Уважаемый Владимир!

Спасибо большое за внимание.
Я и не позиционирую предлагаемое решение как решение ЧАСТО втречающейся задачи. Конечно, задачи АСУ подготовки производства на приборостроительном предприятии довольно редко решаются на FoxPro.

Что же касается того, ЧАСТНОЕ ли это решение для ЧАСТНОЙ задачи, то здесь я, как абсолютный зануда, могу не согласиться. Это просто решение ДРУГОЙ задачи.

Предлагаемое Вами решение наилучшим образом отвечает на вопрос: "Каким образом ввести десятичный разделитель с помощью клавиш "Точка" и "Запятая", независимо от выбранного языка?"

Предлагаемое мной решение отвечает на вопрос: "Как заставить клавишу с "точкой" на цифровой клавиатуре вводить точку при установке русского языка?". Кстати, это решение применимо и для ввода чисел.

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

С уверениями в совершеннейшем почтении, Dinozavr.
...
Рейтинг: 0 / 0
Разделитель десятых долей
    #34460595
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однако это решение влияет на работу не только клавиши "Точка" цифровой клавиатуры, но и на работу клавиши "Точка и Запятая" текстовой клавиатуры. Повторюсь - для текстового поля, предназначенного для ввода десятичных чисел, это абсолютно правильно
Ну так заведи два класса один для чисел, другой для текстов. Или проверяй маску - если она типа "999.99" то включай режим замены. Если нет то не меняй. Вариантов масса
...
Рейтинг: 0 / 0
Разделитель десятых долей
    #34460695
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, если уж совсем все делать "по правилам", то надо отлавливать, так называемый, скан-код нажатой клавиши. Т.е. различать какую именно физически клавишу нажимали.

Поднимался подобный вопрос здесь

Получение сканкода клавиши

Не знаю, чем дело кончилось...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разделитель десятых долей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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