Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.09;
Скачать: CL | DM;

Вниз

ввод в Edit только дробных чисел   Найти похожие ветки 

 
liver   (2004-12-20 10:15) [0]

вобщем надо сделать так, чтоб пользователь мог ввести только дробное число:
например 123,34 или 12345,00
обработчик OnKeyPress не очень хочется писать.
как можно выйти из положения ???


 
begin...end ©   (2004-12-20 10:16) [1]

> liver   (20.12.04 10:15)

Может быть, TMaskEdit использовать?


 
liver   (2004-12-20 10:26) [2]

возможно. хотя на форме уже понатыкано куча Edit-ов
ну а какую маску тогда использовать.
чтоб наверняка пользователь ввел верное значение ?


 
ocean   (2004-12-20 10:29) [3]

А если обработать OnExit:
if Pos(",", Edit1.Text) = 0 then Edit1.SetFocus;


 
Sergey_Masloff   (2004-12-20 10:32) [4]

а 12345 вместо 12345.00 не пойдет? Если да то в консерватории проблема


 
liver   (2004-12-20 10:38) [5]

подойдет.
только причем тут консерватория ?


 
begin...end ©   (2004-12-20 14:41) [6]

> [2] liver   (20.12.04 10:26)

> ну а какую маску тогда использовать

Например, такую:

MaskEdit.EditMask := "#999990\,99"

> хотя на форме уже понатыкано куча Edit-ов

Может быть, всё же лучше назначить каждому из этих Edit"ов один и тот же обработчик OnChange или OnExit, в котором и производить необходимые проверки?


 
KapitanSerg ©   (2004-12-20 14:59) [7]


> обработчик OnKeyPress не очень хочется писать.

А почему не написать обработчик?
Например

Begin
 if not (Key in [",", "0".."9"]) then Key := #0;
end;

Вот и весь обработчик!!!!


 
KSergey ©   (2004-12-20 15:09) [8]

> [7] KapitanSerg ©   (20.12.04 14:59)
> А почему не написать обработчик?

2.3.4,5,6


 
KapitanSerg ©   (2004-12-20 15:14) [9]


> KSergey ©   (20.12.04 15:09) [8]

Точки точно вводится не будут!
А проверить наличие запятой в уже введенном тексте, например, в поле Text как два пальца...


 
begin...end ©   (2004-12-20 15:29) [10]

И всё же OnChange и OnExit лучше, чем OnKeyPress, ведь текст может вставляться из буфера.

{$J+}

procedure TForm1.Edit1Change(Sender: TObject);
const
 Old: String = "";
begin
 with Sender as TEdit do
   try
     StrToFloat(Text);
     Old := Text
   except
     Text := Old
   end
end.


 
KapitanSerg ©   (2004-12-20 15:33) [11]


> begin...end ©   (20.12.04 15:29) [10]
> И всё же OnChange и OnExit лучше, чем OnKeyPress, ведь текст
> может вставляться из буфера.

Да чем же лучше? Событие OnKeyPress как раз и предназначено для проверки корректности ввода!


 
liver   (2004-12-20 15:36) [12]

не ну вариант нормальный...
но мне надо, чтоб только десятые были после запятой, или сотые, на разных эдитах по-разному...


 
begin...end ©   (2004-12-20 15:39) [13]

> [11] KapitanSerg ©   (20.12.04 15:33)

> Да чем же лучше? Событие OnKeyPress как раз и предназначено
> для проверки корректности ввода!

А лучше тем, что обработчик OnKeyPress не сработает, если текст в edit вставится из буфера. А предназначен обработчик OnKeyPress для обработки нажатия алфавитно-цифровых клавиш.


 
KapitanSerg ©   (2004-12-20 15:46) [14]


> liver   (20.12.04 15:36) [12]


> но мне надо, чтоб только десятые были после запятой, или
> сотые, на разных эдитах по-разному...

Тогда в событии OnExit используй Edit1.Text := FloatToStrF(r, ffFifed, 15, 2), если надо два знака или Edit1.Text := FloatToStrF(r, ffFifed, 15, 15), если - 15,
где ессесно типа real (double, extended);



Страницы: 1 вся ветка

Текущий архив: 2005.01.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.051 c
14-1103455952
Cerberus
2004-12-19 14:32
2005.01.09
Самарцам


1-1103723310
Argentum
2004-12-22 16:48
2005.01.09
многоязычность


14-1103399463
Nous Mellon_
2004-12-18 22:51
2005.01.09
Страсти по МПх


1-1103801736
Кирилл
2004-12-23 14:35
2005.01.09
Конвертация


3-1102585906
ocean
2004-12-09 12:51
2005.01.09
Как вставить все записи из таблицы в 1 БД в другую?