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

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

Mc_DemON

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

DIR3ct0r

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

LAW

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

Alert

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

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

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

vital

Больной Компом Детектед
29.01.2006
2 432
42
#6
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

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