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

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

ввод в ячейки стринггрида вещественных чисел [D7, XP]


Страницы:   1 2 3

oleg_teacher ©   (2011-03-02 14:53:00) 

Помогите направить на мысль как запретить ввод в ячейки стринггрида вещественных чисел с максимальным количеством цыфр после запятой 2. Просто не могу понять... если обрабатывать текст на KeyPress то определить количество пока чисел после запятой получается - то есть я могу сделать Key := #0;. Но загвоздка в том, что когда я буду ету же ячейку редактировать (допустим добавлять числа к целой части числа), и у меня есть две цыфры после запятой то... ес-но будет тоже срабатывать Key := #0;
Как быть может есть какой то другой вариант?


Oleg_teacher   (2011-03-03 12:39:00) [21]


> Но для многих людей форум - место для решения профессиональных
> вопросов.

Соглашусь на все 100% ... Зачем уважаемому Anatoly Podgoretsky разводить флуд в теме вопроса. Я конечно извиняюсь... но я задавал вопрос для помощи по сути... а не для "базара". Есть же другие ветки.


brother   (2011-03-03 12:18:00) [22]

> форум - место для решения профессиональных вопросов.

по поводу форума - профессионал Анатолий, для себя все решил)


Loginov Dmitry   (2011-03-03 12:14:00) [23]


> У тебя неверное представления о форумах, их единственное
> предназначение это
> общение, а решает он вопросы или нет, это не играет роли.
>


Анатолий, для вас конечно не играет роли. Для вас форум - это игрушка, где можно писать от балды все что в голову взбредет.
Но для многих людей форум - место для решения профессиональных вопросов.


han_malign   (2011-03-03 10:18:00) [24]

на самом деле, жесткая фильтрация делается довольно просто:
1. В обработчике кнопок запоминаешь текущий текст и(!) выделение(SelStart, SelEnd).
2. Если изменившийся текст не совпадает с шаблоном - возвращаешь элемент управления в предыдущее состояние...

Можно конечно вручную обрабатывать текст, но замучаешься с весёлостями вроде [BS],[DEL],[Shift+Ins],[Alt+BS],[Ctrl+Z],[Shift+Ctrl+Z], не говоря уж о просто [Ins]...


han_malign   (2011-03-03 09:56:00) [25]


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

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

Простой пример:
можно ввести только четыре цифры, нужно 1234, по ошибке ввел 1254 - варианты:
1. удаляем 5, вводим 3
2. выделяем 5, вводим 3
3. вводим 3, удаляем 5
- упс - жесткое ограничение оставляет нам только первые два варианта...
Некоторые скажут, что и двух достаточно - сделаю пример более наглядным:
|12 4444444444444444444 54 - и курсор в начале поля...
Таким образом - редактирование полей превращается в занимательный ребус.

В конце концов - прикрутил базовый фильтр "кнопок"(таки не все символы нужны), regexpдля валидации(например / [+-]?\d{1,18}(\.\d{1,2})?/), и тупо подсвечиваю поле красным цветом... После некоторых размышления добавил еще "желтый" regexp- для подсветки незавершенных полей(чтобы отличать от случаев заведомо неправильного ввода(при наличии обязательный подполей), и лишний раз не нервировать ранимого пользователя)...
например: "login@.ru" vs "login@mail@ru" -
жесткий шаблон:
/ \A[_\-.\da-zA-Z]+@[_\-da-zA-Z]+(\.[_\-da-zA-Z]+)+\Z/
мягкий шаблон:
/ \A[_\-.\da-zA-Z]*@?[_\-da-zA-Z]*(\.[_\-\da-zA-Z]*)*\Z/
( это пример: на самом деле в URI несколько больше допустимых символов и может(а в некоторых случаях - должна) присутствовать схема)


Anatoly Podgoretsky   (2011-03-03 09:38:00) [26]

> Loginov Dmitry  (02.03.2011 23:32:17)  [17]

У тебя неверное представления о форумах, их единственное предназначение это
общение, а решает он вопросы или нет, это не играет роли.


И. Павел   (2011-03-03 09:28:00) [27]

> А что? И такой гдето завалялся :)

В AlphaControl такой есть.


Dennis I. Komarov   (2011-03-03 09:19:00) [28]


> Для чисел с плавающей точкой TSpinEdit ?

А что? И такой гдето завалялся :)


Oleg_teacher   (2011-03-03 08:30:00) [29]


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

может  с вами соглашусь... усли не пойму выше описаного, буду использовать ваш совет. спс за дельный совет


И. Павел   (2011-03-03 08:28:00) [30]

> [0] oleg_teacher   (02.03.11 14:53)

А я предпочитаю брать пример с Word. Там в разных настройках пользователю позволяют ввести что угодно, но при нажатии на кнопку "OK" проверяют и сообщают, что он ввел не так. По моему, если пользователь нажимает на кнопку а программа подавляет этот символ, это как то не культурно что ли :) Исключение делаю только для дат. TDateTimepicker по моему очень удобный. А проверить, сколько знаков пользователь ввел после запятой можно анализируя строковое представления числа (только нужно преобразовать его в неинженгерную запись). Это все мое ИМХО, конечно.


Oleg_teacher   (2011-03-03 08:23:00) [31]

я постоянно удивляюсь... как можно загадить опсуждение... неужели нет где поговорить не по теме!


Германн   (2011-03-03 01:20:00) [32]


> Loginov Dmitry ©   (02.03.11 23:32) [17]


> А не для хамства с показом своей "крутости" с попутным "обсиранием"
> всех и каждого.

В данном случае, лично я, хамства не увидел. И "обсирание" тоже.
Но сей форум имеет свои особенности. Тут участники чуть более вольны в своих высказываниях.


KilkennyCat   (2011-03-03 00:28:00) [33]


> Loginov Dmitry ©   (02.03.11 23:32) [17]

хочешь посмотреть хамство - зайди на форум "цифры" - есть такая провайдерская шарага в Питере. там админы, мастера, тех поддержка и т.д. хамят клиентам.


Loginov Dmitry   (2011-03-02 23:32:00) [34]


> в результате, будет как недавний вопрос, про кучу едитов
> сверху грида и обновлением их при скроллинге.


И еще про ручную прорисовку в ячейках :)

Но ведь это и есть программирование! Разве не для этого предназначен данный форум? :) В первую очередь для решения программерских вопросов (профессиональных вопросов в области программирования)!
А не для хамства с показом своей "крутости" с попутным "обсиранием" всех и каждого.


KilkennyCat   (2011-03-02 23:11:00) [35]


> предлагаю один из выходов, который является вполне работоспособным,
>  безглюченным (если конечно руки на месте), понятным.

в результате, будет как недавний вопрос, про кучу едитов сверху грида и обновлением их при скроллинге.


Loginov Dmitry   (2011-03-02 23:04:00) [36]


> А предложенное попробуй переобоснуй.


Из каждой ситуации есть как минимум 2 выхода. Я предлагаю один из выходов, который является вполне работоспособным, безглюченным (если конечно руки на месте), понятным.
Игорь предлагает другой подход, который по его мнению лучше.
Я его мнение уважаю. Ну зачем же так в открытую срать на мнение других людей!


Leonid Troyanovsky   (2011-03-02 22:51:00) [37]


> Loginov Dmitry ©   (02.03.11 22:40) [13]

> дают советы по делу!
]
По делу советы дают адвокаты и не просто так.

А предложенное попробуй переобоснуй.

--
Regards, LVT.


Loginov Dmitry   (2011-03-02 22:40:00) [38]


> лавры Ивана Кулибина не дают покоя ?


Игорь, поражаюсь тебе, как тебе не нравится, когда другие дают советы по делу!
:(


Игорь Шевченко   (2011-03-02 22:31:00) [39]


> Более того, я еще не встречал грамотной реализации


Я и встречал и сам делал. Когда в стандартном InplaceEdit выпадающего списка не было. Как только появился, сразу свои поделки в корзину отправил.

Куда как проще сделать из трех строк наследника грида с перекрытой функцией CreateEditor и из трех же строк наследника TInplaceEdit с нужной расширенной функциональностью.


Leonid Troyanovsky   (2011-03-02 22:30:00) [40]


> Игорь Шевченко ©   (02.03.11 21:54) [9]

> TCustomMaskEdit вообще-то дофига возможностей

InplaceEditor заместить, конечно, следует.
Но, TCustomMaskEdit не заслужил, IMHO, клейма Вирта.

--
Regards, LVT.


Страницы:   1 2 3

Наверх

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