Вниз
Скачать: CL | DM;

работа с TEdit, формат числа 1.11   Найти похожие ветки 

 
Konus   (2007-05-07 11:59) [0]

нужно поле (edit) для ввода дробного числа с двумя цифрами после запятой/точки, например: 14.32, 124.63...
как задать подобную маску и ограничить ввод букв?


 
Desdechado ©   (2007-05-07 12:02) [1]

MaskEdit
?


 
Konus   (2007-05-07 12:37) [2]

задал маску такого типа:
"!99999.99;1; "
во-первых, не известно, какое число какой длинны будет целой частью, т.е. если 1.83, то в маскедит нужно будет ставить курсор перед точкой, что не удобно
во-вторых, если не заполнена правая часть после запятой, придется каким-то образом обрабатывать вручную и добавлять 00, т.к. сохранять надо именно в таком формате

какие есть варианты?


 
Konus   (2007-05-07 13:48) [3]

подскажите, пожалуйста


 
SergeyIT ©   (2007-05-07 21:44) [4]

В эдите на 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;


 
Anatoly Podgoretsky ©   (2007-05-07 22:20) [5]

> Konus  (07.05.2007 12:37:02)  [2]

Так у тебя строки, зачем же тогда числами называешь


 
Konus   (2007-05-08 06:51) [6]

спасибо, работает отлично :)



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
2-1178872082
allucard
2007-05-11 12:28
2007.05.27
Почему компилятор не пропускает


2-1178362201
vegarulez
2007-05-05 14:50
2007.05.27
Обращение к модему с помошью AT команд. Перекодировка рус. SMS.


15-1177774830
oldman
2007-04-28 19:40
2007.05.27
Ну вот и суббота (которая понедельник) на исходе...


2-1178874455
Marat
2007-05-11 13:07
2007.05.27
Процедура


2-1178390834
Wind
2007-05-05 22:47
2007.05.27
мастер построения Сonnectionstring




   Наверх