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

Тема в разделе "Delphi - Компоненты", создана пользователем Mc_DemON, 8 мар 2007.

Статус темы:
Закрыта.
  1. Mc_DemON

    Mc_DemON Гость

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

    DIR3ct0r Гость

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

    Barmutik Гость

    Или использовать TMaskEdit
     
  4. LAW

    LAW Гость

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

    Alert Гость

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

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

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

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    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;
     
  7. LAW

    LAW Гость

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

Поделиться этой страницей