![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ввод в ячейки стринггрида вещественных чисел [D7, XP]
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.