• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Элемент формы Edit

  • Автор темы Mc_DemON
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Mc_DemON

В общем проблема вот в чем: Как в Делфи сделать так чтобы в элемент формы Edit можно было вводить только числовые значения, и потом их присваивать переменной типа Word?
 
D

DIR3ct0r

Обрабатывать событие OnKeyDown этого поля и выводить только цифры и спец символы.
 
L

LAW

Вот интересный вопрос...
В TMaskEdit необходимо вводить строго заданное кол-во символов, иначе чуть ли не ексцепшен вызвается. Как сделать, что бы туда можно было вводить произвольное кол-во символов.
 
A

Alert

Ну всё просто.
Ты присвой св-ву EditMask значение "!99999;1;_" (без кавычек) и всё будет работать.
Пояснение: "0" - обязательный ввод цифры; "9" - необязательный ввод.
Ты не можешь ввести цифр больше чем кол-во девяток в маске, но меньше можешь :)

Только вместо не введенных цифр будут подставлены пробелы.
Ну с ними справиться легко:
for i := length(st) downto 1 do if st=' ' then delete(st,i,1);

Ммм.. ну вот и всё.
Уверен есть способ проще :)
 
V

vital

Alert именно..
например так..

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = ',' then
Key := DecimalSeparator; // запятую заменяем на разделитель для числа

if Key = '.' then
Key := DecimalSeparator; // точку заменяем на сепаратор (на всякий случай)

if not (Key in ['0'..'9','-',DecimalSeparator,#8,#13]) // символы которые пропускаются
or ((Key = DecimalSeparator) // все цифры знак минус разделитель
and (POS (DecimalSeparator, Edit1.Text) > 0)) // запрет на второй сепаратор
or ((Key = '-') and (POS ('-', Edit1.Text) > 0)) // запрет на второй минус
or ((Key = '-') and (Edit1.SelStart <> 0)) // запрет на минус не вначале цифры
then // (можно и предыдущей строчки но так лучше для понимания)
begin
Key := #0; // запрещенный символ заменяем нулем
end;
end;
 
L

LAW

Нда с пробелами можно ещё проще разобраться: Trim();
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!