Страница 1 из 4

Формат ввода чисел

Добавлено: 28 Июль 2023, 10:11
Игорь Столяров
Привет всем !

Есть старый вопрос по форматированию числа в поле ввода. :(

Предположим, нужно ввести значения порядка: 123456789 без каких-либо разделителей.
Задаём маску поля @_N9 и получаем выделение пространства для отсутствующих цифр:

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

2.jpg
Вроде бы этот вопрос решает маска поля @N9_ - но большие числа получаются с разделителем "123 456 789" :(
Для целых чисел все требования выполняются если закостылить маску числел как @s9.

Вопрос: Можно ли как-то подобрать маску без быделения незначащих разрядов и разделителей для дробных чисел ?
Спасибо ! :)

Формат ввода чисел

Добавлено: 28 Июль 2023, 13:22
Ravenous
@N_9B не подойдёт?

Формат ввода чисел

Добавлено: 28 Июль 2023, 14:07
kreator
Ещё можно вот так вые-ться - @N_9_B.

Формат ввода чисел

Добавлено: 28 Июль 2023, 14:13
Игорь Столяров
kreator писал(а): 28 Июль 2023, 14:07@N_9_B.
Это первое, что приходит в голову всем у кого я спрашиваю. :)
К сожалению нет. Формат экстремально допустимый (как и например @S9b) -
но результат как на первом рисунке. Увы ! :(

Формат ввода чисел

Добавлено: 28 Июль 2023, 15:15
finsoftrz
Можно попробовать отследить событие event:selected.

Код: Выделить всё

!===================================================================================
! Обработка позиционирования в цифровых полях 
!
FsFix_C11.EventSelectNums PROCEDURE 
   CODE
      if event()<>event:selected
         return
      end 
        
      SELF.Contr = field()
      if SELF.Contr = 0
         return
      end      
        
      case SELF.Contr{prop:type}
         of CREATE:entry
      orof CREATE:spin          
      else
           return
      end      
        
      SELF.ContrFormat = SELF.Contr{prop:text}
      case sub(SELF.ContrFormat,1,1)
         of 'N'
       orof 'n'
         select(SELF.Contr,1) 
         select(SELF.Contr)       
         return   
      end      
        
      case sub(SELF.ContrFormat,1,2)
         of '@N'
       orof '@n'
         select(SELF.Contr,1) 
         select(SELF.Contr)       
      end             

Формат ввода чисел

Добавлено: 28 Июль 2023, 15:25
kreator
Игорь Столяров писал(а): 28 Июль 2023, 14:13
kreator писал(а): 28 Июль 2023, 14:07@N_9_B.
Это первое, что приходит в голову всем у кого я спрашиваю. :)
К сожалению нет. Формат экстремально допустимый (как и например @S9b) -
но результат как на первом рисунке. Увы ! :(
Это я перебрал. Формат Ravenous работает как надо. Пробуйте. Пустышку не получается выбрать.

Формат ввода чисел

Добавлено: 28 Июль 2023, 15:35
Игорь Столяров
kreator писал(а): 28 Июль 2023, 15:25 Пустышку не получается выбрать
Ну этот формат тупо подавляет незначащий ноль и не более того.
Если в поле с форматом "@n_9b" введено число 123 то будет выбрано "_____123" как и с "@n_9" :(

Формат ввода чисел

Добавлено: 28 Июль 2023, 16:25
kreator
У меня не получается выбрать пустышку. Какой Кларион для начала? Превьюер и программа одинаковый результат даёт?

Формат ввода чисел

Добавлено: 28 Июль 2023, 16:45
Игорь Столяров
finsoftrz писал(а): 28 Июль 2023, 15:15 событие event:selected.
Это бы сработало, если делать Select(?,1,[длина поля]) ...
Но нужно либо прописывать для каждого поля, либо разбирать на лету формат ...
И это убирает проблему с выбором, но всё равно незначащие пробелы перед цифрой остаются. :(

Формат ввода чисел

Добавлено: 28 Июль 2023, 17:37
finsoftrz
Игорь Столяров писал(а): 28 Июль 2023, 16:45
finsoftrz писал(а): 28 Июль 2023, 15:15 событие event:selected.
Это бы сработало, если делать Select(?,1,[длина поля]) ...
Но нужно либо прописывать для каждого поля, либо разбирать на лету формат ...
И это убирает проблему с выбором, но всё равно незначащие пробелы перед цифрой остаются. :(
Делалось для числовые полей с включенным mask. Без него, возможно, select как написали, не проверял за ненадобностью. Метод класса вызывается сразу после accept и отрабатывает для всех полей, у которых числовой формат.

Формат ввода чисел

Добавлено: 28 Июль 2023, 17:42
finsoftrz
Должно решать проблему со второго скриншота.

Формат ввода чисел

Добавлено: 29 Июль 2023, 17:43
kreator
В топку! Пусть SV лечит. Собирались новые форматы добавить. Заодно не мешало бы и это починить.

Формат ввода чисел

Добавлено: 29 Июль 2023, 18:49
finsoftrz
kreator писал(а): 29 Июль 2023, 17:43 В топку! Пусть SV лечит. Собирались новые форматы добавить. Заодно не мешало бы и это починить.
Не поминайте всуе. А то опять свалимся в бессмысленные рассуждения, а есть ли мальчик. :nono:

Формат ввода чисел

Добавлено: 30 Июль 2023, 5:57
Игорь Столяров
Я так понимаю, что система ввода чисел заточена под американский форматы "123,456.78" или "123 456,78".
С ними проблем-то нет - всё работает чётко и правильно. Остальное для них - это непонятный и надуманный бред,
вроде второй раскладки на клавиатуре. Поэтому здесь никто не будет что-либо исправлять - они этого не видят. ;)

Я помню сколько, в своё время, убил времени и сил, что бы объяснить Роберту Пареси, что в его iqXML есть глюк
с русской буквой "р". И то, он на меня смотрел с любопытством, как на бесплатный секс ежиков. :)

Формат ввода чисел

Добавлено: 30 Июль 2023, 14:41
kreator
Игорь Столяров писал(а): 30 Июль 2023, 5:57 Я так понимаю, что система ввода чисел заточена под американский форматы "123,456.78" или "123 456,78".
С каким форматом проблем нет? Без десятичных.