Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.06.2018, 17:09
Konstantin-78 Konstantin-78 вне форума
Новичок
 
Регистрация: 27.04.2015
Сообщения: 76
Версия Delphi: Delphi7
Репутация: 10
По умолчанию Некрасивое отображение значения в TDBEditEh при использовании маски

У меня в БД Firebird в таблице есть поле с типом «NUMERIC(9,1)».
Мне нужно, чтоб в приложении пользователь не мог ввести больше двух цифр в целой части и 1 в дробной.
Для этого я использую компонент «TDBEditEh», т.к. в нем есть свойство «EditMask», которое я поставил в значение «99,9;_»

Все бы ничего, но при установки курсора в окошко «TDBEditEh», выглядет не очень красиво, отображается значение см. рис. внизу введите сюда описание изображения

Может можно как-нибудь поправить? Т.е. чтоб "8" не съезжала влево и не выглядела как "8_".
Честно говоря думал что свойство http://www.ehlib.com/online-help/fra...ile=index.html может поправить ситуацию – но не помогло.
Изображения
Тип файла: png Untitled.png (1.1 Кбайт, 9 просмотров)
Ответить с цитированием
  #2  
Старый 17.06.2018, 17:57
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Да в принципе правильно шаблон маски отображается, - два начальных разряда и завершающий один после запятой,просто видимо подставляемое туда значение (из поля таблицы?) отличается от заданного как 99,9
Ответить с цитированием
  #3  
Старый 17.06.2018, 18:07
Konstantin-78 Konstantin-78 вне форума
Новичок
 
Регистрация: 27.04.2015
Сообщения: 76
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Да в принципе правильно шаблон маски отображается, - два начальных разряда и завершающий один после запятой,просто видимо подставляемое туда значение (из поля таблицы?) отличается от заданного как 99,9

Ну конечно в поле БД, стоит значение "8,9", ну это же не повод, после "8" вставлять "_".
Ответить с цитированием
  #4  
Старый 17.06.2018, 18:13
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Как раз повод,маска ведь на два разряда, либо ноль принудительно подставлять (10,;20,;80,etc.) или пользовать без шаблона маски
Ответить с цитированием
  #5  
Старый 17.06.2018, 18:20
Konstantin-78 Konstantin-78 вне форума
Новичок
 
Регистрация: 27.04.2015
Сообщения: 76
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Как раз повод,маска ведь на два разряда, либо ноль принудительно подставлять (10,;20,;80,etc.) или пользовать без шаблона маски

Так что получается, выходит мне нужно убирать маску, и событие "KeyPress" писать, все время анализируя в DBEdit уже введенные значения?
т.е.
- число
- число
- разделительный знак
- число
и все......
(чтобы такого непонятного отображения не было)
Ответить с цитированием
  #6  
Старый 17.06.2018, 18:31
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Проще смириться, все маски так работают, 8_,9 визуально подсказывает пользователю правила набора, а вот автоматом непонятно, что будет введено дальше, - 08,9 или 80,9,сразу не угадаешь, просто в таблице хранить 08,9 можно только текстом
Ответить с цитированием
  #7  
Старый 17.06.2018, 18:35
Konstantin-78 Konstantin-78 вне форума
Новичок
 
Регистрация: 27.04.2015
Сообщения: 76
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Еще вариант: можно при нажатии кнопки "Enter" анализировать значение, и менять маску на "9.9", но потом ее опять нужно менять на "99.9" - но это будет еще то...
Ответить с цитированием
  #8  
Старый 17.06.2018, 18:37
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

В смысле, нужно следить за поступившими из поля значениями и если до запятой только один разряд принудительно добавлять перед ним нулевой начальный
Ответить с цитированием
  #9  
Старый 17.06.2018, 18:40
Konstantin-78 Konstantin-78 вне форума
Новичок
 
Регистрация: 27.04.2015
Сообщения: 76
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
В смысле, нужно следить за поступившими из поля значениями и если до запятой только один разряд принудительно добавлять перед ним нулевой начальный

Ну где-то так, просто вид портится, только при наличии курсора "|" в DBEdit, а так все нормально
Ответить с цитированием
  #10  
Старый 17.06.2018, 19:01
Konstantin-78 Konstantin-78 вне форума
Новичок
 
Регистрация: 27.04.2015
Сообщения: 76
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

и вообще на то пошло, то "_", нужно было ставить не после "8", а ПЕРЕД ней (

Последний раз редактировалось Konstantin-78, 17.06.2018 в 21:12.
Ответить с цитированием
  #11  
Старый 22.06.2018, 14:07
Konstantin-78 Konstantin-78 вне форума
Новичок
 
Регистрация: 27.04.2015
Сообщения: 76
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

нашел компонент "TDBNumberEditEh" (с возможностью контроля при вводе за количеством цифр после запятой).
Но только один небольшой минус, придется доделать контроль при вводе количества цифр перед запятой (но то такое)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:19.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter