Форум: "Основная";
Текущий архив: 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.034 c