![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ввод в ячейки стринггрида вещественных чисел [D7, XP]
oleg_teacher © (2011-03-02 14:53:00)Помогите направить на мысль как запретить ввод в ячейки стринггрида вещественных чисел с максимальным количеством цыфр после запятой 2. Просто не могу понять... если обрабатывать текст на KeyPress то определить количество пока чисел после запятой получается - то есть я могу сделать Key := #0;. Но загвоздка в том, что когда я буду ету же ячейку редактировать (допустим добавлять числа к целой части числа), и у меня есть две цыфры после запятой то... ес-но будет тоже срабатывать Key := #0;
Как быть может есть какой то другой вариант?
KilkennyCat (2011-03-02 22:08:00) [41]
> Гораздо проще подставлять поверх выбранной ячейки обычный
> эдит
грамотно это сделать намного сложнее, чем воспользоваться инплэйсом. Более того, я еще не встречал грамотной реализации. А почему? А потому что грамотный так делать не будет, а то, что делает безграмотный, грамотным быть не может.
Игорь Шевченко (2011-03-02 21:54:00) [42]
> Встроенный в грид редактор текста (InplaceEditor) - это
> баловство. С ним очень долго можно разбираться, однако как
> правило толку от этого мало (уж больно ограничены его встроенные
> возможности).
ниасилил ?
> Гораздо проще подставлять поверх выбранной ячейки обычный
> эдит (например TSpinEdit). Для этого можно отлавливать события
> OnSelectCell или OnGetEditText у грида и OnExit у эдита
> (это навскидку).
лавры Ивана Кулибина не дают покоя ? Для чисел с плавающей точкой TSpinEdit ?
> А вообще в интернете примеров - полно, поищи.
Работающих ? :)
ты почитай grids.pas на досуге, у InplaceEditor, как у наследника TCustomMaskEdit вообще-то дофига возможностей по ограничению вводимых данных.
Loginov Dmitry (2011-03-02 21:39:00) [43]
> Помогите направить на мысль как запретить ввод в ячейки
> стринггрида вещественных чисел с максимальным количеством
> цыфр после запятой 2
> если обрабатывать текст на KeyPress то определить количество
> пока чисел после запятой получается - то есть я могу сделать
> Key := #0;. Но загвоздка в том, что когда я буду ету же
> ячейку редактировать (допустим добавлять числа к целой части
> числа), и у меня есть две цыфры после запятой то... ес-но
> будет тоже срабатывать Key := #0;
> Как быть может есть какой то другой вариант?
Встроенный в грид редактор текста (InplaceEditor) - это баловство. С ним очень долго можно разбираться, однако как правило толку от этого мало (уж больно ограничены его встроенные возможности). Гораздо проще подставлять поверх выбранной ячейки обычный эдит (например TSpinEdit). Для этого можно отлавливать события OnSelectCell или OnGetEditText у грида и OnExit у эдита (это навскидку). А вообще в интернете примеров - полно, поищи.
В результате проблема со знаками после запятой должна отпасть сама собой.
KilkennyCat (2011-03-02 19:53:00) [44]
> некрасивое и неправальное отображение выходит...
ну напишите другую маску, делов-то. я просто привел пример, а не выполнял вашу задачу.
Jeer (2011-03-02 16:18:00) [45]
> как раз дробную и целую часть отделять нельзя.
В процессе анализа - можно.
oleg_teacher (2011-03-02 16:10:00) [46]
> Отдели мух от котлет, т.е. целые от дробных и разбирайся
> с ситуацией.
Что вы именно имеете ввиду... как раз дробную и целую часть отделять нельзя... ето одно число.. которое отображается в ячейке.
oleg_teacher (2011-03-02 16:09:00) [47]
> if ACol = ColCount - 1 then Value := '!999999999.99;0;
> ';
некрасивое и неправальное отображение выходит...
KilkennyCat (2011-03-02 15:01:00) [48]это в OnGetEditMask
KilkennyCat (2011-03-02 15:01:00) [49]if ACol = ColCount - 1 then Value := '!999999999.99;0; ';
Jeer (2011-03-02 15:00:00) [50]Отдели мух от котлет, т.е. целые от дробных и разбирайся с ситуацией.