Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Вниз

ввод в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.042 c
14-1103695590
ghg
2004-12-22 09:06
2005.01.09
Castalia 3.0


9-1095718471
Ктото
2004-09-21 02:14
2005.01.09
Как создавать 3ds объекты с прозрачными/полупрорачными текстурами


4-1101359324
Sik
2004-11-25 08:08
2005.01.09
Контейнер ключей в Крипто-Про


1-1103715246
Stanislav
2004-12-22 14:34
2005.01.09
Создание OLE объекта


3-1102596171
Kolya
2004-12-09 15:42
2005.01.09
Ошибка SQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский