![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
работа с TEdit, формат числа 1.11
Konus © (2007-05-07 11:59:00)нужно поле (edit) для ввода дробного числа с двумя цифрами после запятой/точки, например: 14.32, 124.63...
как задать подобную маску и ограничить ввод букв?
Konus (2007-05-08 06:51:00) [1]спасибо, работает отлично :)
Anatoly Podgoretsky (2007-05-07 22:20:00) [2]> Konus (07.05.2007 12:37:02) [2]
Так у тебя строки, зачем же тогда числами называешь
SergeyIT (2007-05-07 21:44:00) [3]В эдите на OnChange вызываю
EditCheckValue(Self, _FloatChars);
Можно дополнить знаком (-/+), проверкой на количество (./,), сделать подмену (.)<->(,) и тд и тп.
type
TLetters = #32..#255;
TLetSet = set of TLetters;
var
_FloatChars: TLetSet = ['0','1','2','3','4','5','6','7','8','9',
'.', ','];
...........................................
function CheckString(var str: String; const let: TLetSet): Boolean;
var
s: String;
n, i: Integer;
begin
Result := TRUE;
s := '';
n := Length(str);
if n < 1 then exit;
Result := FALSE;
for i := 1 to n do
begin
if str[i] in let then s := s + str[i];
end;
if Length(s) = n then Result := TRUE else str := s;
end;
procedure EditCheckValue(Edit: TEdit; Let: TLetSet);
var
i, n: Integer;
s: String;
begin
if NOT Edit.Focused then exit;
i := Edit.SelStart;
n := Length(Edit.Text);
s := Edit.Text;
if NOT CheckString(s, Let) then
begin
Edit.Text := s;
i := i - (n - Length(s));
if (i >= 0) AND (i <= Length(s)) then
Edit.SelStart := i
else Edit.SelStart := 0;
if Edit.Focused then MessageBeep($FFFFFFFF);
end;
end;
Konus (2007-05-07 13:48:00) [4]подскажите, пожалуйста
Konus (2007-05-07 12:37:00) [5]задал маску такого типа:
'!99999.99;1; '
во-первых, не известно, какое число какой длинны будет целой частью, т.е. если 1.83, то в маскедит нужно будет ставить курсор перед точкой, что не удобно
во-вторых, если не заполнена правая часть после запятой, придется каким-то образом обрабатывать вручную и добавлять 00, т.к. сохранять надо именно в таком формате
какие есть варианты?
Desdechado (2007-05-07 12:02:00) [6]MaskEdit
?