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;
ругается.
Заранее благодарен.


Kolan   (2007-10-24 08:41:00) [1]

> StrToFloat. В защищенном блоке try … catch

Есть же TryStrToFloat…


Галинка   (2007-10-24 00:44:00) [2]

У меня в случае ввода цифровфх данных была проверка на возможность StrToFloat. В защищенном блоке try ... catch ... EConvertException. И стояло это в OnLeave Edit'а. Работало безотказно.


Leonid Troyanovsky   (2007-10-23 19:53:00) [3]


> Ins ©   (23.10.07 19:11) [41]

> > Хотя, возможно, что для некоего грида игра и может стоить

> Это тоже есть :)

Ну, и славно.
Значит, отдыхаем, тем более, что футбол.

--
Regards, LVT.


Ins   (2007-10-23 19:11:00) [4]


> Хотя, возможно, что для некоего грида игра и может стоить
> свеч.

Это тоже есть :) В библиотеке TMS. Там можно предоставлять собственный редактор для ввода значений в ячейки или использовать один из нескольких десятков уже готовых.


Amoeba   (2007-10-23 18:22:00) [5]

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


Leonid Troyanovsky   (2007-10-23 18:10:00) [6]


> Ins ©   (23.10.07 16:19) [38]

> Все уже написано. :) Ссылку я привел. Там в обсуждении статьи
> Shabal именно такой компонент выложил. Да и вообще в интернете
> полно таких компонентов.

Уговорил :) Не буду, уж больно скучны все эти ffFixed.

> А считаю, что писать класс нужно вместо обвешивания TEdit
> или TMemo обработчиками событий по следующим банальным причинам:

Ну, а считаю, что тот, кому нужно, может и сам сделать Change; override.
И добавить по-вкусу выравнивание - не квадратный трехчлен.

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

> Kolan ©   (23.10.07 16:15) [37]

> И еще, а может сделать эдит с неким интерфейсом, а конкретные
> проверки завернуть в объект и подключать к эдиту. Ведь TFloatEdit
> нужет не реже :)…

С Float, как раз, все просто: Val что передадут, то и будет.
А вот бизнес-компонент, конечно, интересней б было представить,
но, пока не очень ясно, стоит ли его интегрировать с обычным Edit,
а делать специализированный контрол не очень хочется.

Хотя, возможно, что для некоего грида игра и может стоить свеч.

--
Regards, LVT.


Ins   (2007-10-23 16:19:00) [7]


> Ладно уж, напишу дома TNumberEdit = class(TEdit),
> с правым выравниванием.

Все уже написано. :) Ссылку я привел. Там в обсуждении статьи Shabal именно такой компонент выложил. Да и вообще в интернете полно таких компонентов.
А считаю, что писать класс нужновместо обвешивания TEdit или TMemo обработчиками событий по следующим банальным причинам:
1. Наверняка ведь понадобится не в одном проекте. А раз так, то проще один раз написать, а потом просто кидать компоненты на форму, чем по десять раз переписывать одни и те же обработчики событий.
2. В случае обработчиков событий нет никакой модульности. Только захламляется модуль формы.


Kolan   (2007-10-23 16:15:00) [8]

> Ладно уж, напишу дома

Поделитесь?
А добавтьте туда события, тобы можно было информировать пользователя о том что именно не так.

И еще, а может сделать эдит с неким интерфейсом, а конкретные проверки завернуть в объект и подключать к эдиту. Ведь TFloatEdit нужет не реже :)…


Leonid Troyanovsky   (2007-10-23 16:09:00) [9]


> Anatoly Podgoretsky ©   (23.10.07 15:54) [33]

> Победил, только тяжело.

Ладно уж, напишу дома TNumberEdit = class(TEdit),
с правым выравниванием.

В фак-то хоть включат? :)

--
Regards, LVT.


Kolan   (2007-10-23 15:59:00) [10]

Понять что ввел не правильно пользователь долже доsubmit, даже если этот submit не заметен по времени.

Вспмните «тупые» сайты, введя в который ник и еще кучу араметров жмёш сабмит, ждёшь, а потом «ой такой ник уже занят» и половина полей пустая(снова вводить).

Так вот настольное приложение тут ничем не отличается от сайта. И если я в поле «Возраст» ввожу «Колян», мне олжнв об этом тут же сообщить, но не прерывая мою работу(то есть MessageBox фтопку).

Я и скайп например сообщают внизу поля ввода строкой с 7 шрифтом и с красным цветом. (Иногда «вылезает» собщение из под заголовка формы…) и пока нормально не введешь submit сделать нельзя.

короче ради примера можно посмотреть инсталлер скайпа.

if not Key in ['0'…'9'] then Key := #0;
А стирать как? Хде #8?

Если этот код в OnKeyPress, то надо все равно сообщать что введены не те символы, иначе не понятно что не так…


Anatoly Podgoretsky   (2007-10-23 15:55:00) [11]


> Ins ©   (23.10.07 15:47) [32]

Но процитировал по адресу, автору.


Anatoly Podgoretsky   (2007-10-23 15:54:00) [12]

> Leonid Troyanovsky  (23.10.2007 15:35:28)  [28]

Победил, только тяжело.


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


> Выровнять по правому краю.

М'сье понимает толк в извращениях :)) (Это не наезд, это шутка)


Leonid Troyanovsky   (2007-10-23 15:44:00) [14]


> Ins ©   (23.10.07 15:40) [29]

> А зачем? :)))

Выровнять по правому краю.

--
Regards, LVT.


Leonid Troyanovsky   (2007-10-23 15:42:00) [15]


> Ins ©   (23.10.07 15:24) [27]

> > Там нынче уже STATIC, IMHO.
>
> Только что попробовал - получилось. WinXP. Оконный класс
> - 'Edit'

Мда.. Попутал, это раньше был STATIC (даже пара).
Sorry.

--
Regards, LVT.


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


> Снабдим TMemo высотой в одну строку, taRightJustify,
> обработчиком OnChange и вуа-ля!

А зачем? :)))


Leonid Troyanovsky   (2007-10-23 15:35:00) [17]


> Ins ©   (23.10.07 15:03) [23]

> ИМХО, выравнивание текста по правому краю неплохо намекает
> на то, что это для цифр.

Снабдим TMemo высотой в одну строку, taRightJustify,
обработчиком OnChange и вуа-ля!
Я победил :)

--
Regards, LVT.


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


> Там нынче уже STATIC, IMHO.

Только что попробовал - получилось. WinXP. Оконный класс - 'Edit'


Leonid Troyanovsky   (2007-10-23 15:17:00) [19]


> Ins ©   (23.10.07 15:06) [25]

> > и прямой ввод туда, во-ще, заказан.

> Вроде бы как можно.

Там нынче уже STATIC, IMHO.

--
Regards, LVT.


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


> Ins ©   (23.10.07 15:03) [23]

И пусть в этом поле сразу же по умолчанию стоит какое-либо значение, например 0, а ввод пустой строки автоматически на 0 заменяется.


> и прямой ввод туда, во-ще, заказан.

Вроде бы как можно.


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

Наверх

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