Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Edit и десятичные числа !!


Автор: Azur 25.5.2006, 11:49
Как сделать чтобы в компоненте Edit числа записывались не больше двух знаков после запятой?  

Автор: Snowy 25.5.2006, 11:57
Используй MaskEdit 

Автор: Nickel 25.5.2006, 12:23
Или добавь приблизительно такое событие OnChange:
Код

var x:double;
begin
  if (TryStrToFloat(TEdit(Sender).Text,x)) and
     (TEdit(Sender).Text[Length(TEdit(Sender).Text)]<>',') and
     (TEdit(Sender).Text[Length(TEdit(Sender).Text)]<>'0') then
    begin
      TEdit(Sender).Text:=FloatToStr(Round(x*100)/100);
      TEdit(Sender).SelStart:=Length(TEdit(Sender).Text);
    end;
end;
 

Автор: Yanis 25.5.2006, 12:23
Azur
А ты как в Edit записываешь? Или пользователь вводит? 

Автор: Azur 25.5.2006, 17:02
Цитата

А ты как в Edit записываешь? Или пользователь вводит?  

Программа сама выводит числа, из переменной. 

Автор: Yanis 25.5.2006, 17:41
Попробуй использовать RoundTo:
Код
var
  d: Double;
begin
  d := 12312.213;
  Edit1.Text := FloatToStr(RoundTo(d, -2));
end;

или банальное обрезание строки:
Код
var
  d: Double;
  n: byte;
  s: String;
begin
  d := 999.213;
  n := 2; // кол-во символов для обрезания (с конца)
  s := FloatToStr(d);
  Delete(s, LastDelimiter(DecimalSeparator, s) + n + 1, Length(s));
  Edit1.Text := s;
end;


Добавлено @ 17:42 
Различия в том, что первый вариант округляет, а второй обрезает. 

Автор: Nickel 26.5.2006, 18:39
А что будет если в эдит написать не число?  Да и собственно чем мой вариант не нравится?  smile  

Автор: Yanis 26.5.2006, 19:01
Цитата(Nickel @  26.5.2006,  19:39 Найти цитируемый пост)
А что будет если в эдит написать не число?

Цитата(Azur @  25.5.2006,  18:02 Найти цитируемый пост)
Программа сама выводит числа, из переменной. 

Надо учитывать, какая переменная используется, но наверное всё таки real число.


Цитата(Nickel @  26.5.2006,  19:39 Найти цитируемый пост)
Да и собственно чем мой вариант не нравится?

Честно? Мне не нравятся сплошные приведения типов. А так всё замечательно smile

P. S. Nickel, если обидел, то не специально. Просто предложил вариант.  

Автор: Nickel 26.5.2006, 19:14
Цитата(Yanis @ 26.5.2006,  19:01)
Цитата(Nickel @  26.5.2006,  19:39 Найти цитируемый пост)
А что будет если в эдит написать не число?

Цитата(Azur @  25.5.2006,  18:02 Найти цитируемый пост)
Программа сама выводит числа, из переменной. 

Надо учитывать, какая переменная используется, но наверное всё таки real число.

А эдит у нас read-only? Вдруг туда пользователь чего-нибудь сунет? Да и мало ли какая переменная, мож их стринговой? =)
Цитата(Yanis @ 26.5.2006,  19:01)
P. S. Nickel, если обидел, то не специально. Просто предложил вариант.

Просто я подумал, что мой вариант остался без внимания вот решил пробудить к нему интерес  smile   

Автор: Azur 27.5.2006, 16:54
Переменная real!!!
Мне как раз то и надо округлять, поэтому воспользуюсь вариантом RoundTo!!
Всем спасибо ! smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)