Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ввод только цифр в Edit

9.6K
30 апреля 2005 года
Tigren0k
11 / / 30.04.2005
По событию OnChange проверяю какие символы вводяться в строку. Подскажите, как лучше сделать, как получитькод клавишы, нажимаемойв Edit???
243
01 мая 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Tigren0k
По событию OnChange проверяю какие символы вводяться в строку. Подскажите, как лучше сделать, как получитькод клавишы, нажимаемойв Edit???


 
Код:
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
        ShowMessage(IntToStr(Key));//выводит код клавиши
}

Ну а если нужно пропустить только цифери, то
 
Код:
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
        if(Key<'0' || Key>'9')Abort();

}

В него по идее нужно добавить клавиши backspase, управляющие и т.д. Определения этих клавишь смотри в [color=green]winuser.h[/color]
9.6K
01 мая 2005 года
Tigren0k
11 / / 30.04.2005
Цитата:
Originally posted by pacific_7

В него по идее нужно добавить клавиши backspase, управляющие и т.д. Определения этих клавишь смотри в [color=green]winuser.h[/color]



Можно написать так:


void __fastcall TForm2::LabeledEdit1KeyPress(TObject *Sender, char &Key)
{

if((Key>'0' && Key<'9') || Key==8 || Key==46 )return;
else Abort();
}


Включены клаваши DEL и BackSpace; так можно добавить все нужные клавиши.

Спасибо!

243
01 мая 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Tigren0k
Можно написать так:

void __fastcall TForm2::LabeledEdit1KeyPress(TObject *Sender, char &Key)
{

if((Key>'0' && Key<'9') || Key==8 || Key==46 )return;
else Abort();
}


Верно! Только для понятности кода можно использовать не 8 и 46, а определенные в winuser.h значения: VK_BACK и VK_DELETE

10
01 мая 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by pacific_7
Только для понятности кода можно использовать не 8 и 46, а определенные в winuser.h значения: VK_BACK и VK_DELETE


К слову сказать, правильнее всего не вызывать Abort, а просто присваивать ноль параметру Key.

243
02 мая 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Freeman
К слову сказать, правильнее всего не вызывать Abort, а просто присваивать ноль параметру Key.


Почему? В итоге в чем разница?

10
02 мая 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by pacific_7
В итоге в чем разница?


Культурный стиль программирования. Так предусмотрено Борландом.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог