Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 12.12.2007, 12:49   #1
Pashin
 
Регистрация: 07.12.2007
Сообщений: 3
По умолчанию Как сделать в Edit Ввод только чисел

Привет! Как сделать в Edit Ввод только чисел?
Pashin вне форума Ответить с цитированием
Старый 12.12.2007, 13:32   #2
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Код:
procedure TForm3.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['0'..'9']+[#8]then
  begin

  end else Key:=#0;
end;
Alex21 вне форума Ответить с цитированием
Старый 12.12.2007, 19:20   #3
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,230
По умолчанию

Лучше так:
Код:
procedure TForm3.Edit1KeyPress(Sender: TObject; var Key: Char);   
begin  
 if Not (Key in ['0'..'9', #8])then Key:=#0;   
end;
Alter вне форума Ответить с цитированием
Старый 13.12.2007, 11:06   #4
XPAiN
Форумчанин
 
Аватар для XPAiN
 
Регистрация: 31.10.2007
Сообщений: 108
По умолчанию

Если написать такой код, то работа с выделением уже не работает.
XPAiN вне форума Ответить с цитированием
Старый 13.12.2007, 15:11   #5
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
Сообщение от XPAiN Посмотреть сообщение
Если написать такой код, то работа с выделением уже не работает.
Напишите конкретный пример когда приведенные выше варинаты не работают и предложите свое решение
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 17.12.2007, 11:28   #6
XPAiN
Форумчанин
 
Аватар для XPAiN
 
Регистрация: 31.10.2007
Сообщений: 108
По умолчанию

Решение правильное, но выделение перестает работать. Решение этого вопроса заключается в использовании компонента jvValidateEdit из набора JVCL. как сделать чтобы работало выделение, если используешь KeyPress, я не знаю.
XPAiN вне форума Ответить с цитированием
Старый 17.12.2007, 15:17   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,517
По умолчанию

Избитый вопрос.
Вот оптимальный вариант:
Код:
var vrPos, vrLength, vrSelStart: byte;
const
  I: byte = 1; //2 знака после разделителя
begin
  with Sender as TEdit do
  begin
    vrLength := Length(Text);
    vrPos := Pos(decimalseparator, Text);
    vrSelStart := SelStart;
  end;
  case Key of
    '0'..'9':
      begin
        if (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then
          Key := #0;
      end;
    ',', '.':
      begin
        if (vrPos > 0) or (vrSelStart = 0) or (vrLength = 0) then
          Key := #0
        else
          Key := #46;
      end;
    #8: ;
  else
    Key := #0;
  end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 17.12.2007, 15:19   #8
Dimoney
Пользователь
 
Регистрация: 14.12.2007
Сообщений: 34
По умолчанию

Объект MaskEdit не пойдет для Вашей цели? Св-во EditMask должно помочь...
Dimoney вне форума Ответить с цитированием
Старый 17.12.2007, 15:55   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
выделение перестает работать.
Почему же у меня работает? И мышкой выделяется, и клавишами?
Что именно не работает-то, толком сказать можно?
mihali4 вне форума Ответить с цитированием
Старый 17.12.2007, 16:29   #10
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

1. TMaskEdit

2. Свойство edit`а ES_NUMBER (учите API)

Код:
procedure TForm1.Create(Sender: TObject);
var style: cardinal;
begin
  style := GetWindowLong(Edit1.Handle, GWL_STYLE);
  SetWindowLong(Edit1.Handle, GWL_STYLE, style + ES_NUMBER);
end;
пыщь
JTG вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод только букв или цифр... Teleport Помощь студентам 8 12.06.2008 14:57
ввод чисел со знаком... maLoy*508 Assembler - Ассемблер 2 21.05.2008 19:32
Ввод последовательности чисел POPOV Общие вопросы Delphi 5 16.02.2008 23:13
Разрешить ввод только определеных клавиш serres Общие вопросы Delphi 3 10.12.2007 21:08
ввод чисел bruce Microsoft Office Excel 1 08.02.2007 18:58