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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.12.2011, 23:08
Аватар для Ranmabaka
Ranmabaka Ranmabaka вне форума
Прохожий
 
Регистрация: 04.12.2011
Сообщения: 5
Репутация: 10
Вопрос Ограничение ввода количества цифр до и после точки

Здравствуйте!
Есть программа которая считывает построчно данные из файла (только цифры) и записывает каждую строку в отдельный memo. Потом данные в каждом memo редактируются и записываются обратно в файл. И возник вопрос, как сделать так чтобы пользователь при редактировании данных в memo не смог ввести больше шести цифр до точки и не более трех цифр после точки, при этом если он ,к примеру, уже ввел шесть цифр, то пока он не поставит точку оставшиеся три цифры он ввести не сможет.
Например, в mmo1 записано число "123456.789" и пользователь изменяет его на "7654321.77789" (7 цифр до точки и 5 после) и это у него не должно получится т.е. он сможет ввести только "765432" (шесть цифр) и пока точку не поставит ввести "77789" он не сможет, но и "77789" он тоже не должет суметь ввести, а как только он введет "777" (три цифры) то дальнейший ввод данных уже будет не возможен.
Я уже сделал так что можно вводить только цифры и только одну точку, а вот как быть с ограничениями на ввод данных не могу разобраться. Может кто уже сталкивался с похожим? Подскажите решение пожалуйста.

P.S. Первое число не обязательно должно быть шесть цифр так же как и второе не обязательно три т.е. может быть "101.54" или даже "0." (точка и хотя бы одно число перед точкой всегда должны быть обязательно).
P.S.S. Вариант "сделать проверку при записи в файл и если что дергать пользователя" не подходит т.к. нужно делать проверку именно в процессе редактирования.

Последний раз редактировалось Ranmabaka, 04.12.2011 в 23:19.
Ответить с цитированием
  #2  
Старый 04.12.2011, 23:27
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Зачем для этого нужен TMemo, TEdit недостаточно?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 05.12.2011, 00:05
Аватар для Ranmabaka
Ranmabaka Ranmabaka вне форума
Прохожий
 
Регистрация: 04.12.2011
Сообщения: 5
Репутация: 10
По умолчанию

Потому что в TMemo есть выравнивание по правому краю, а в TEdit нет. Да и замена TMemo на TEdit проблему мне так кажется не решит

Последний раз редактировалось Ranmabaka, 05.12.2011 в 00:08.
Ответить с цитированием
  #4  
Старый 05.12.2011, 00:10
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

MaskEdit...
Ответить с цитированием
  #5  
Старый 05.12.2011, 00:14
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Ranmabaka
Потому что в TMemo есть выравнивание по правому краю, а в TEdit нет. Да и замена TMemo на TEdit проблему мне так кажется не решит
Такое выравнивание в TEdit имеется, просто оно неявное. А по сути TMemo и TEdit одно и тоже, просто TEdit для этих дел кажется удобнее, и как сказали выше, TMaskEdit ещё удобнее.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #6  
Старый 05.12.2011, 00:40
Аватар для Ranmabaka
Ranmabaka Ranmabaka вне форума
Прохожий
 
Регистрация: 04.12.2011
Сообщения: 5
Репутация: 10
Смех

angvelem
m1sclick
Спасибо большое за помощь! Все теперь как надо вводится
Ответить с цитированием
  #7  
Старый 05.12.2011, 01:47
Аватар для Ranmabaka
Ranmabaka Ranmabaka вне форума
Прохожий
 
Регистрация: 04.12.2011
Сообщения: 5
Репутация: 10
По умолчанию

Хотя нет, я немного поторопился T_T
Сделал шаблон "999999/999;1; " и теперь проблема в том, что если пользователю нужно ввести не шесть цифр, а к примеру три, то эти три цифры остаются слева и потом три " " и получается например "123 .456". Можно как-нибудь сделать так что при вводе цифр перед точкой они вводились от точки, а не слева на право?
Ответить с цитированием
Ответ


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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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