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

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

ограничение ввода


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

фыва ©   (2007-10-23 11:55:00) 

Всем доброо времени суток.
Подскажите, пожалуйста, как мне ограничить ввод символов в едит только числами
пишу в OnPressKey:
if not Key in ('0'..'9') then Key := #0;
ругается.
Заранее благодарен.


Anatoly Podgoretsky   (2007-10-23 15:05:00) [21]


> Скорее они запутаются при вводе даты вручную.

У нас разные пользователи!
Кстати у них во многих приложением есть кнопка вывода календаря, практически никогда не пользуются.


Ins   (2007-10-23 15:03:00) [22]


> Пусть он будет, скажем, с нестандартным фоном.

ИМХО, выравнивание текста по правому краю неплохо намекает на то, что это для цифр. По крайней мере такое часто встречается и может быть "понято" пользователем.


Ins   (2007-10-23 15:00:00) [23]


> Так нет же, как и TIPEdit

По-моему, оконный класс, реализующий ввод только IP-адреса, есть в comctrls.dll. Нет объектной надстройки над ним в VCL, но никто не мешает ее сделать самому.


> А TDateTimePicker удобен если ввод в текущем месяце, далее
> пользователи начинают путаться.

Тоже спорно. Скорее они запутаются при вводе даты вручную.


Anatoly Podgoretsky   (2007-10-23 14:49:00) [24]

> Leonid Troyanovsky  (23.10.2007 14:33:20)  [20]

> Так почему б не быть TNumberEdit?

Так нет же, как и TIPEdit
А TDateTimePicker удобен если ввод в текущем месяце, далее пользователи начинают путаться.
Ну и главное это не должно быть самоцелью.


Leonid Troyanovsky   (2007-10-23 14:33:00) [25]


> Anatoly Podgoretsky ©   (23.10.07 13:40) [18]

> Не на этом надо зацикливаться в большинстве случаев, а применять
> ограниченный ввод только в действительно мотивированных

Вот, к примеру, TDateTimePicker - специализированный
контрол, достаточно сильно ограничивающий ввод юзера
(на основе достаточно нетривиальных проверок).
Но он, все равно, IMHO, удобней любого TEdit,
допускающего произвольный ввод.
Примерно тоже можно сказать пр контрол для ввода IP.

Так почему б не быть TNumberEdit?
Пусть он будет, скажем, с нестандартным фоном.
Хотя, например, окно ввода у Calc.exe и вовсе не EDIT,
и прямой ввод туда, во-ще, заказан.

--
Regards, LVT.


Ins   (2007-10-23 14:19:00) [26]


> А если посмотреть по форуму, то ограничение у некоторых
> становится самоцелью.

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


Anatoly Podgoretsky   (2007-10-23 13:40:00) [27]

> Leonid Troyanovsky  (23.10.2007 13:27:17)  [17]

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


Leonid Troyanovsky   (2007-10-23 13:27:00) [28]


> Anatoly Podgoretsky ©   (23.10.07 13:15) [14]

> Спастись просто - это не ограничивать пользователя, ему
> виднее как вводить.

Введет-то он правильно, и будет спрашивать,
почему, скажем, IЗО не принимают.

--
Regards, LVT.


Ins   (2007-10-23 13:26:00) [29]


> Спастись просто - это не ограничивать пользователя, ему
> виднее как вводить.

Где-то в одной из книг по проектированию UI этот момент излизан со всех сторон. В общем, не всегда ему виднее, но нужно сделать так, чтобы было видно. Хорошим стилем считается "говорящая" метка возле поля ввода, которая хорошо поясняет, что же тут должно быть введено, и Beep при вводе не того, что нужно. Можно еще дисэйбл/энейбл кнопки "ОК", или какая там еще будет. Плюс контекстная справка. В общем, направлять пользователя нужно, но максимально мягко, чтобы он об этом даже не заподозрил и не считал себя идиотом.


Leonid Troyanovsky   (2007-10-23 13:16:00) [30]


> Ega23 ©   (23.10.07 13:15) [13]

> Просто проверяйте перед тем, как OK нажать - и всё нормально.

А почему перед?

--
Regards, LVT.


Anatoly Podgoretsky   (2007-10-23 13:15:00) [31]

> Ins  (23.10.2007 13:04:11)  [11]

Спастись просто - это не ограничивать пользователя, ему виднее как вводить.


Ega23   (2007-10-23 13:15:00) [32]

ДА нефиг заморачиваться.
Просто проверяйте перед тем, как OK нажать - и всё нормально...   :)


Leonid Troyanovsky   (2007-10-23 13:10:00) [33]


> Ins ©   (23.10.07 13:04) [11]

> Кстати, есть еще такой стиль окна - ES_NUMBER, но если не
> ошибаюсь, от вставки из буфера он не спасает.

Не ошибаешься.

Вот, кста,
http://groups.google.com/group/borland.public.delphi.vcl.components.writing/msg/41b62f85dd405cdf

--
Regards, LVT.


Ins   (2007-10-23 13:04:00) [34]

Кстати, есть еще такой стиль окна - ES_NUMBER, но если не ошибаюсь, от вставки из буфера он не спасает.


Leonid Troyanovsky   (2007-10-23 12:56:00) [35]


> Ins ©   (23.10.07 12:48) [9]

> Ну а я бы отделял мух от котлет, и запихнул бы весь этот
> функционал в отдельный класс.

Peter предлагал, например, TNumberEdit и т.п.
Я предлагал, например,
http://www.rsdn.ru/Forum/Message.aspx?mid=626935&only=1

Но, я, также, не настаиваю :)

--
Regards, LVT.


Ins   (2007-10-23 12:48:00) [36]


> Я бы написал в OnChange.

Ну а я бы отделял мух от котлет, и запихнул бы весь этот функционал в отдельный класс. В прочем, не настаиваю.


Leonid Troyanovsky   (2007-10-23 12:46:00) [37]


> фыва   (23.10.07 12:38) [6]

> Ну скажите же, что писать и где: в OnKeyPress или OnKeyDown?

Я бы написал в OnChange.

А, во-ще, почитай
http://groups.google.com/group/borland.public.delphi.vcl.components.using.win32/msg/e73fe76d78b7b8f4

--
Regards, LVT.


Leonid Troyanovsky   (2007-10-23 12:40:00) [38]


> фыва   (23.10.07 12:17) [5]

> [Error] uAct.pas(140): Operator not applicable to this operand type

Там же курсор встает где not applicable.

Жмешь на оной строке compiler messages F1 и изучаешь статью.
Т.е. not (Key in ['0'..'9'])

--
Regards, LVT.


фыва   (2007-10-23 12:38:00) [39]

Ну скажите же, что писать и где: в OnKeyPress или OnKeyDown?


фыва   (2007-10-23 12:17:00) [40]


> Palladin ©   (23.10.07 12:03) [2]

[Error] uAct.pas(140): Operator not applicable to this operand type


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

Наверх

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