Главная страница
    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.05 c
1-1175489987
MZ
2007-04-02 08:59
2007.05.27
MDI формы


15-1177609948
YurikGL
2007-04-26 21:52
2007.05.27
Спам в одной ветке


3-1173733501
Андрей123
2007-03-13 00:05
2007.05.27
Как послать на Delphi комманду SQL: UPDATE


3-1173282215
Sunders
2007-03-07 18:43
2007.05.27
Сообщение "Object not found" при работе с БД MS SQL


2-1178525432
RomanLN
2007-05-07 12:10
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский