Главная страница
    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.044 c
15-1177485819
TCrash
2007-04-25 11:23
2007.05.27
документация по MS VisualStudio 7


2-1178389011
DevilDevil
2007-05-05 22:16
2007.05.27
Использовать компоненты, но не использовать Forms.pas


15-1177594992
grisme
2007-04-26 17:43
2007.05.27
Матрица поворота


6-1163759207
Gavrila
2006-11-17 13:26
2007.05.27
TIdMessage - определить, что письмо помечено на удаление?


4-1166789398
AMS
2006-12-22 15:09
2007.05.27
функия GetModuleUsage





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