Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2015, 18:32   #11
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от JUDAS Посмотреть сообщение
Код:
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
  if(Key!='-' || Key<'0' || Key>'9')
    Key = DecimalSeparator;
}
Правильнее так:
Код:
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
        if(Key!='-' && Key!='\b' && (Key<'0' || Key>'9') ){
                Key = DecimalSeparator;
        }
}
Но думаю лучше так:
Код:
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
        if(Key=='-' || Key=='\b' || (Key>='0' && Key<='9') ){
                return;
        }
        if(Key==','||Key=='.'){
                Key = DecimalSeparator;
                return;

        }
        Key=0;
}
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 11.07.2015, 18:43   #12
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Krasiosoft
Ко всем исправлениям не имею никаких претензий, кроме этого:

Код:
 if(Key==','||Key=='.') Key = DecimalSeparator;
Почему Вы все считаете что разделителем может быть точка и запятая.
Ещё раз показываю картинку
http://programmersforum.ru/attachmen...1&d=1436606368

разделителем может быть что угодно, включая цифры.
Почему вы пытаетесь всегда переводить код в какой то частный случай.
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 11.07.2015, 18:51   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Да не может быть все, что угодно. При вводе недопустимого символа в числовой эдит ни чего не должно вводиться. Что и делается в специализированных компонентах. А точка или запятая вечная путаница у юзеров. Поэтому именно об них речь, а не о каких-то любых разделителях еще и включая цифру. У меня юзера не орут чтобы "ю" или "б" тоже разделителем были
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.07.2015, 18:55   #14
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от JUDAS Посмотреть сообщение
Почему Вы все считаете что разделителем может быть точка и запятая.
Разделителем может выступать любой символ, но автор темы изначально хотел ограничится "." и "," вроде. Да и как по мне, то не вариант, чтоб при нажатии на любую клавишу программа выдавала разделитель.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть файл, в нем словосочетания в столбец, нужно к каждому словосочетанию добавить символ. Как это сделать? antoha487 Помощь студентам 7 15.06.2012 21:58
Как сделать getch символ XxXGhosTXxX Общие вопросы C/C++ 1 23.03.2011 18:27
Как сделать getch символ XxXGhosTXxX Общие вопросы C/C++ 3 23.03.2011 16:02
Как сделать, чтобы по нажатию клавиши вводился не символ, а строка? Сид Общие вопросы Delphi 5 27.12.2009 13:32
[Делфи] Как сделать чтобы символ много раз повторялся (без массивов) zotox Помощь студентам 4 01.05.2009 22:10