![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ввод в Edit только дробных чисел [D5, WinXP]
liver © (2004-12-20 10:15:00)вобщем надо сделать так, чтоб пользователь мог ввести только дробное число:
например 123,34 или 12345,00
обработчик OnKeyPress не очень хочется писать.
как можно выйти из положения ???
KapitanSerg (2004-12-20 15:46:00) [1]
> 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);
begin...end (2004-12-20 15:39:00) [2]> [11] KapitanSerg © (20.12.04 15:33)
> Да чем же лучше? Событие OnKeyPress как раз и предназначено
> для проверки корректности ввода!
А лучше тем, что обработчик OnKeyPress не сработает, если текст в edit вставится из буфера. А предназначен обработчик OnKeyPress для обработки нажатия алфавитно-цифровых клавиш.
liver (2004-12-20 15:36:00) [3]не ну вариант нормальный...
но мне надо, чтоб только десятые были после запятой, или сотые, на разных эдитах по-разному...
KapitanSerg (2004-12-20 15:33:00) [4]
> begin...end © (20.12.04 15:29) [10]
> И всё же OnChange и OnExit лучше, чем OnKeyPress, ведь текст
> может вставляться из буфера.
Да чем же лучше? Событие OnKeyPress как раз и предназначено для проверки корректности ввода!
begin...end (2004-12-20 15:29:00) [5]И всё же 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:14:00) [6]
> KSergey © (20.12.04 15:09) [8]
Точки точно вводится не будут!
А проверить наличие запятой в уже введенном тексте, например, в поле Text как два пальца...
KSergey (2004-12-20 15:09:00) [7]> [7] KapitanSerg © (20.12.04 14:59)
> А почему не написать обработчик?
2.3.4,5,6
KapitanSerg (2004-12-20 14:59:00) [8]
> обработчик OnKeyPress не очень хочется писать.
А почему не написать обработчик?
Например
Begin
if not (Key in [',', '0'..'9']) then Key := #0;
end;
Вот и весь обработчик!!!!
begin...end (2004-12-20 14:41:00) [9]> [2] liver (20.12.04 10:26)
> ну а какую маску тогда использовать
Например, такую:
MaskEdit.EditMask := '#999990\,99'
> хотя на форме уже понатыкано куча Edit-ов
Может быть, всё же лучше назначить каждому из этих Edit'ов один и тот же обработчик OnChange или OnExit, в котором и производить необходимые проверки?
liver (2004-12-20 10:38:00) [10]подойдет.
только причем тут консерватория ?
Sergey_Masloff (2004-12-20 10:32:00) [11]а 12345 вместо 12345.00 не пойдет? Если да то в консерватории проблема
ocean (2004-12-20 10:29:00) [12]А если обработать OnExit:
if Pos(',', Edit1.Text) = 0 then Edit1.SetFocus;
liver (2004-12-20 10:26:00) [13]возможно. хотя на форме уже понатыкано куча Edit-ов
ну а какую маску тогда использовать.
чтоб наверняка пользователь ввел верное значение ?
begin...end (2004-12-20 10:16:00) [14]> liver (20.12.04 10:15)
Может быть, TMaskEdit использовать?