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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2013, 13:18   #1
govorun1
Форумчанин
 
Регистрация: 08.11.2013
Сообщений: 137
По умолчанию Код клавиши '.'

Нужна проверка на введенное значение в DBEdit - должно быть десятичное число с точкой.

Код:
if not (Key in['0'..'9','.',#8,#13])
then Key:=#0;
Точка не работает. Как поправить?
govorun1 вне форума Ответить с цитированием
Старый 01.12.2013, 13:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А как ты понял что не работает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2013, 14:02   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Может ты запятую вводишь вместо точки? Если русская раскладка, то точка на цифровой клавиатуре на самом деле запятая.
Arigato вне форума Ответить с цитированием
Старый 01.12.2013, 15:32   #4
govorun1
Форумчанин
 
Регистрация: 08.11.2013
Сообщений: 137
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А как ты понял что не работает?
Вообщето я ручками тыркал на клавиши на основной и на доп. клавиатуре, переключал раскладку...не работает. Цифры набираются, Baclspace работает, а точку поставить не могу.
govorun1 вне форума Ответить с цитированием
Старый 01.12.2013, 15:38   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

По идее все верно в коде.
Поставь точку прерывания и посмотри что принимает key когда точку жмешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2013, 15:48   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Вбил на KeyPress этот код для TEdit, точка работает. Видимо проблема лежит где-то выше.
Arigato вне форума Ответить с цитированием
Старый 01.12.2013, 15:59   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Для float-поля нормально туда точка передается, но если DecimalSeparator=',' то компонент сам её игнорит и звуковой сигал еще выдает. Так что с OnKeyPress тут все в порядке
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.12.2013, 16:05   #8
govorun1
Форумчанин
 
Регистрация: 08.11.2013
Сообщений: 137
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Вбил на KeyPress этот код для TEdit, точка работает. Видимо проблема лежит где-то выше.
ВИНОВАТ...., не в тот эдит код прописал и сижу ломаю черепушку...
Сделал так:
PHP код:
    if not (Key in['0'..'9',#8,#13,#46])
    
then Key:=#0; 
Но теперь другая беда...
Как сделать проверку что бы в набранном числе была только одна точка
(дрогнула рука). Т.е. сделать запрет на ввод в эдит второй точки.
Спасибо
govorun1 вне форума Ответить с цитированием
Старый 01.12.2013, 16:14   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

а теперь надо выкинуть KeyPress, за ненадобностью
eval вне форума Ответить с цитированием
Старый 01.12.2013, 16:15   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Код:
  if not (Key in['0'..'9','.',#8,#13]) or (Key = '.') and (Pos('.', TDBEdit(Sender).Text) > 0)
    then Key:=#0;
Arigato вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой код клавиши?? RAVAL)) Общие вопросы Delphi 10 28.10.2015 12:24
Код клавиши в кр580 McFrey Помощь студентам 17 26.04.2012 08:08
#(код клавиши) Aries Помощь студентам 5 13.02.2010 01:43
код нажатой клавиши galaid Общие вопросы Delphi 4 24.05.2009 20:03
Код клавиши... =*=|/|MM0PT@/\=*= Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2007 13:10