Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

QvantumGrid поймать символ [D7, WinXP]


Девушка ©   (2007-07-12 10:33:00) 

Доброго времени суток!
Может и глупый вопрос, но всеже:
Пользователи часто вводят цифры с плавающей точкой в сетку таблицы.
Разделителем дробной части является запятая.
Но пользователи не смотрят на раскладку клавиатуры (я впрочем тоже), часто нажимают ".", "б" и прочие неразумные символы.
Удачным решением было бы - перехватывать ввод неразумного символа в ячейку грида и подменять его на запятую.
Вот только мне не удалось обнаружить как это сделать :((


turbouser   (2007-07-12 16:23:00) [1]


> Девушка ©   (12.07.07 15:44) [16]
>
>
> > turbouser ©   (12.07.07 15:42) [15]
> >
> > > Девушка ©   (12.07.07 15:39) [13]
> >
> > А. Понятно :)
> > Тогда надо у View обрабатывать OnKeyPress
>
>
> мда... а как мне понять в какую ячейку вводится "похожий"
> символ?

Вот так, например:
procedure TMainForm.MainTableKeyPress(Sender: TObject; var Key: char);
begin
 if (MainTable.Controller.FocusedColumnIndex > -1) and
   (TcxGridDBColumn(MainTable.Controller.FocusedColumn).DataBinding.FieldName =
   'ИМЯ_ПОЛЯ') and not (key in ['0'..'9', DecimalSeparator]) then
   key := #0;
end;


Rip_1982   (2007-07-12 15:45:00) [2]


> с этим то какраз все впорядке - умный квантум грид не дает
> ввести чтото не подходящее под определение числа с плавающей
> точкой.
> поэтому когда пользователи набирают "похожие" символы -
> они просто не вводятся в ячейку

Тогда перехватывай вводимый символ и если надо - меняй.


Девушка   (2007-07-12 15:44:00) [3]


> turbouser ©   (12.07.07 15:42) [15]
>
> > Девушка ©   (12.07.07 15:39) [13]
>
> А. Понятно :)
> Тогда надо у View обрабатывать OnKeyPress


мда... а как мне понять в какую ячейку вводится "похожий" символ?
у меня там есть и string, и real, и integer...


turbouser   (2007-07-12 15:42:00) [4]


> Девушка ©   (12.07.07 15:39) [13]

А. Понятно :)
Тогда надо у View обрабатывать OnKeyPress


turbouser   (2007-07-12 15:40:00) [5]


> Rip_1982 ©   (12.07.07 15:12) [12]
> Я думаю, что если бы это был DBGrid то вопросов не возникло
> бы!

Я про дбгрид даже и не намекал :)
И вообще - тип поля судя по всему string?


Девушка   (2007-07-12 15:39:00) [6]


> Не смотришь на раскладку, смотри на экран :)
> 123б456 или там 90ю23 нормально, да?


> Rip_1982 ©   (12.07.07 15:02) [10]
> А ведь юзер может и не один ввести не тот символ. И сколько
> тогда запятых в одном числе будет? Лучше контролировать
> все значение!


с этим то какраз все впорядке - умный квантум грид не дает ввести чтото не подходящее под определение числа с плавающей точкой.
поэтому когда пользователи набирают "похожие" символы - они просто не вводятся в ячейку.


Rip_1982   (2007-07-12 15:12:00) [7]


> turbouser ©   (12.07.07 15:06) [11]
> ..и, кстати, у поля в датасете должно быть свойство EditFormat.
>

Я думаю, что если бы это был DBGrid то вопросов не возникло бы!


turbouser   (2007-07-12 15:06:00) [8]

..и, кстати, у поля в датасете должно быть свойство EditFormat.


Rip_1982   (2007-07-12 15:02:00) [9]

А ведь юзер может и не один ввести не тот символ. И сколько тогда запятых в одном числе будет? Лучше контролировать все значение!


Rip_1982   (2007-07-12 14:59:00) [10]


> а может там что-то типа InputMask есть?

Нет там InputMask! Я считаю что лучше обрабатывать OnSetEditText, так как там можно проверять все уже введенное значение!


turbouser   (2007-07-12 14:57:00) [11]


>
> Девушка ©   (12.07.07 10:33)

Можно же сделать у столбца Properties=CurrencyEdit


clickmaker   (2007-07-12 14:52:00) [12]

а может там что-то типа InputMask есть?


Zagaevskiy   (2007-07-12 14:37:00) [13]


> TUser ©   (12.07.07 10:52) [1]
> OnKeyPress/Down/Up там есть?

Лучше всего это, я пользовался, когда нужно было дробные вводить.
> Но пользователи не смотрят на раскладку клавиатуры (я впрочем
> тоже),


Не смотришь на раскладку, смотри на экран :)
123б456 или там 90ю23 нормально, да?


Rip_1982   (2007-07-12 12:14:00) [14]

Попробуй обрабатывать значение Value в событии OnSetEditText


Stanislav   (2007-07-12 12:02:00) [15]

перед сохранением можно заменить точку и б на запятую


Плохиш   (2007-07-12 11:55:00) [16]


> ASoft   (12.07.07 11:46) [2]
>
> > Разделителем дробной части является запятая.
>
> вобще-то, DecimalSeparator

Всё от использованных функций зависит ;-)


ASoft   (2007-07-12 11:46:00) [17]


> Разделителем дробной части является запятая.

вобще-то, DecimalSeparator :-)


TUser   (2007-07-12 10:52:00) [18]

OnKeyPress/Down/Up там есть?


Наверх

Титульная страница Поиск, карта сайта Написать письмо