![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 У меня в БД Firebird в таблице есть поле с типом «NUMERIC(9,1)».  
		
	
		
		
			Мне нужно, чтоб в приложении пользователь не мог ввести больше двух цифр в целой части и 1 в дробной. Для этого я использую компонент «TDBEditEh», т.к. в нем есть свойство «EditMask», которое я поставил в значение «99,9;_» Все бы ничего, но при установки курсора в окошко «TDBEditEh», выглядет не очень красиво, отображается значение см. рис. внизу введите сюда описание изображения Может можно как-нибудь поправить? Т.е. чтоб "8" не съезжала влево и не выглядела как "8_". Честно говоря думал что свойство http://www.ehlib.com/online-help/fra...ile=index.html может поправить ситуацию – но не помогло.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Да в принципе правильно шаблон маски отображается, - два начальных разряда и завершающий один после запятой,просто видимо подставляемое туда значение (из поля таблицы?) отличается от заданного как 99,9 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Ну конечно в поле БД, стоит значение "8,9", ну это же не повод, после "8" вставлять "_".  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Как раз повод,маска ведь на два разряда, либо ноль принудительно подставлять (10,;20,;80,etc.) или пользовать без шаблона маски 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Так что получается, выходит мне нужно убирать маску, и событие "KeyPress" писать, все время анализируя в DBEdit уже введенные значения? т.е. - число - число - разделительный знак - число и все...... (чтобы такого непонятного отображения не было)  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Проще смириться, все маски так работают, 8_,9 визуально подсказывает пользователю правила набора, а вот автоматом непонятно, что будет введено дальше, - 08,9 или 80,9,сразу не угадаешь, просто в таблице хранить 08,9 можно только текстом 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Еще вариант: можно при нажатии кнопки "Enter" анализировать значение, и менять маску на "9.9", но потом ее опять нужно менять на "99.9" - но это будет еще то... 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 В смысле, нужно следить за поступившими из поля значениями и если до запятой только один разряд принудительно добавлять перед ним нулевой начальный 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Ну где-то так, просто вид портится, только при наличии курсора "|" в DBEdit, а так все нормально  | 
| 
		 
			 
			#10  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 и вообще на то пошло, то "_", нужно было ставить не после "8", а ПЕРЕД ней ( 
		
	
		
		
		
		
		
		
			Последний раз редактировалось Konstantin-78, 17.06.2018 в 21:12.  | 
| 
		 
			 
			#11  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 нашел компонент "TDBNumberEditEh" (с возможностью контроля при вводе за количеством цифр после запятой).  
		
	
		
		
		
		
		
	
		
		
	
	
	Но только один небольшой минус, придется доделать контроль при вводе количества цифр перед запятой (но то такое)  |