Текущий архив: 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.049 c