Главная страница
    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.47 MB
Время: 0.037 c
2-1157113951
vodvorezlaya
2006-09-01 16:32
2006.09.24
Помогите с преобразованием типов данных


4-1148473179
Chaser
2006-05-24 16:19
2006.09.24
Заголовок окна


2-1157412618
Fly`
2006-09-05 03:30
2006.09.24
запустить приложение сразу в tray


11-1131206189
MTsv DN
2005-11-05 18:56
2006.09.24
Ручная прорисовка TreeView


2-1157266373
PWD
2006-09-03 10:52
2006.09.24
Скопировать прямоугольную область с одного TBitmap в другой





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