Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.24;
Скачать: CL | DM;

Вниз

Чего пользовать для ввода чисел?   Найти похожие ветки 

 
NailMan ©   (2006-08-09 17:38) [0]

В упор не помню(после большого перерыва засел за дельфи) что кинуть на форму из стандартных компонентов, чтобы пользователь мог ввести только цифры с ограниченным числом символов?

TEdit обычный умеет? TMaskEdit пользовать не очень удобно для ввода(как пользователю, а не программисту).

Или надо ввод отслеживать в реалтайме и пропускать только цифры?


 
Германн ©   (2006-08-09 17:41) [1]

Из стандартных - TSpinEdit например.


 
begin...end ©   (2006-08-09 17:44) [2]

> NailMan ©   (09.08.06 17:38)

> TEdit обычный умеет?

Умеет. Максимальную длину задать свойством MaxLength, а для ввода только цифр добавить стиль ES_NUMBER:

SetWindowLong(Edit.Handle, GWL_STYLE, GetWindowLong(Edit.Handle, GWL_STYLE) or ES_NUMBER).

P.S. От вставки из буфера не спасёт.


 
Ega23 ©   (2006-08-09 17:44) [3]


procedure TFClassMethods.OnKeyPress(Sender: TObject;
 var Key: Char);
begin
 if not (Key in ["0".."9", #8]) then Key:=#0;
end;


Не спасёт от копирования из буфера. Поэтому перед Apply по-хорошему надо проверить. Типа

 try
  StrToInt(eCLSMetOrd.Text);
 except on E:Exception do
  begin
   eCLSMetOrd.SetFocus;
   MessageBox(Handle, PChar("Неверно задано число!"),
              PChar("Внимание!"), MB_OK or MB_ICONWARNING);
   Exit;
  end;
 end;


 
NailMan ©   (2006-08-09 17:47) [4]

Всем спасибо! Сделал стилем ES_NUMBER

---
P.L.U.R. and WBR, NailMan aka 2:5020/3337.13


 
Dmitrij_K   (2006-08-09 17:50) [5]

Проверку лeчше делать с пом TryStrToInt или StrToIntDef


 
Ega23 ©   (2006-08-09 17:53) [6]


> Проверку лeчше делать с пом TryStrToInt или StrToIntDef


Чем лучше?


 
NailMan ©   (2006-08-09 17:53) [7]

У меня собсно пользователю незачем из буфера вводить число - там время для скроллинга видео указывается, но за код с проверкой спасибо, будет где применить еще. Сам пробовал допереть до этого способа, что-то позабыл все почти за год :-/ ...

---
P.L.U.R. and WBR, NailMan aka 2:5020/3337.13


 
begin...end ©   (2006-08-09 17:54) [8]

> Dmitrij_K   (09.08.06 17:50) [5]

Лучше, но эти функции есть не во всех версиях Delphi.


 
Loginov Dmitry ©   (2006-08-09 18:15) [9]

> Чем лучше?


Не генерируется исключение


 
Ega23 ©   (2006-08-09 18:22) [10]


> Не генерируется исключение


Ну так оно же перехватывается?
Можно Val использовать, там тоже исключение не генерится. Правда это не застраховано от чисел с DecimalSeparator.

З.Ы. В Delphi5, который до сих пор у нас основным инструментом является, этих функций, вроде как нет. Так шта...


 
Шпиён   (2006-08-09 18:32) [11]


>
> Ega23 ©   (09.08.06 18:22) [10]
>
> > Не генерируется исключение
>
>
> Ну так оно же перехватывается?
> Можно Val использовать, там тоже исключение не генерится.
>

Ты знал %)

Delphi 6(7), SysUtils.pas:

function TryStrToInt(const S: string; out Value: Integer): Boolean;
var
 E: Integer;
begin
 Val(S, Value, E);
 Result := E = 0;
end;


 
Ega23 ©   (2006-08-09 18:42) [12]

Ну и как это защитит от вставки из буфера строки "1.5"?
Напомню, речь о ЦЕЛОЧИСЛЕННЫХ значениях идёт...


 
Leonid Troyanovsky ©   (2006-08-09 18:55) [13]


> Ega23 ©   (09.08.06 18:22) [10]

> Можно Val использовать, там тоже исключение не генерится.
>  Правда это не застраховано от чисел с DecimalSeparator.


Это зависит от типа числа, IMHO.

--
Regards, LVT.


 
vamp_avp   (2006-08-11 15:19) [14]

Привет всем!
А может стоит попробовать компонент из rxlib?



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

Текущий архив: 2006.09.24;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
2-1157617630
newbie2
2006-09-07 12:27
2006.09.24
Как объект передать через интовую переменную?


2-1157425631
RoNaBoU
2006-09-05 07:07
2006.09.24
XOR


15-1157019915
Idiot
2006-08-31 14:25
2006.09.24
Есть ли что то на подобе процедуры VAL в БД ....


2-1157539322
Serjio77
2006-09-06 14:42
2006.09.24
Поиск и замена символа в строке содержащей n символов


15-1157101702
TUser
2006-09-01 13:08
2006.09.24
Для школьников