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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.036 c
15-1157456068
H010d Freeze
2006-09-05 15:34
2006.09.24
Build проекта из командной строки


10-1123726974
kblc
2005-08-11 06:22
2006.09.24
Связь с объектом


15-1157231348
Zarmi
2006-09-03 01:09
2006.09.24
XP Manifest


15-1157559096
BFG9k
2006-09-06 20:11
2006.09.24
Перевод XML в HTML


1-1155649301
apic
2006-08-15 17:41
2006.09.24
Сервисы.





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