Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.12;
Скачать: CL | DM;

Вниз

QvantumGrid поймать символ   Найти похожие ветки 

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

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


 
TUser ©   (2007-07-12 10:52) [1]

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


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


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

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


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


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

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


 
Stanislav ©   (2007-07-12 12:02) [4]

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


 
Rip_1982 ©   (2007-07-12 12:14) [5]

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


 
Zagaevskiy ©   (2007-07-12 14:37) [6]


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

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


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


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

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


 
turbouser ©   (2007-07-12 14:57) [8]


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

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


 
Rip_1982 ©   (2007-07-12 14:59) [9]


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

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


 
Rip_1982 ©   (2007-07-12 15:02) [10]

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


 
turbouser ©   (2007-07-12 15:06) [11]

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


 
Rip_1982 ©   (2007-07-12 15:12) [12]


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

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


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


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


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


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


 
turbouser ©   (2007-07-12 15:40) [14]


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

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


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


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

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


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


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


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


 
Rip_1982 ©   (2007-07-12 15:45) [17]


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

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


 
turbouser ©   (2007-07-12 16:23) [18]


> Девушка ©   (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;



Страницы: 1 вся ветка

Текущий архив: 2007.08.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.033 c
15-1184508737
P_
2007-07-15 18:12
2007.08.12
Пиратство - конструктивный подход.


15-1184665440
@!!ex
2007-07-17 13:44
2007.08.12
Файлы из InstallShield


1-1180448040
DevilDevil
2007-05-29 18:14
2007.08.12
TListBox.MultySelect.DragDrop.


2-1184563232
Kolan
2007-07-16 09:20
2007.08.12
DBGrid с dbEditing — не редактируется, в чем может быть дело?


2-1184491327
>>DEATH<<
2007-07-15 13:22
2007.08.12
сслки из хтмл кода