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

Вниз

работа с 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 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.087 c
1-1175153464
DelphiLexx
2007-03-29 11:31
2007.05.27
Изменить родителя при наследование


3-1173777363
Bk
2007-03-13 12:16
2007.05.27
FIBPlus - выдать список таблиц из БД


15-1177259459
MsGuns
2007-04-22 20:30
2007.05.27
Сегодня 133 лет со дня рождения В.И. Ленина


2-1178595303
Konus
2007-05-08 07:35
2007.05.27
formatfloat


15-1177575500
infom
2007-04-26 12:18
2007.05.27
Повернуть отрезок на определенный угол.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский