Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 498

/ вопрос открыт /

Здравствуйте!
Можно ли сделать так, что бы, пока не впишешь 10 цифр в edit 1 был недоступен edit 2, и пока не впишешь 10 цифр в edit 2 был был недоступен баттон1? Спасибо!

Хитманчан Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Хитманчан (статус: Посетитель)
Вопрос отправлен: 10 марта 2009, 08:52
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

На событие Edit1.OnChange вешаешь такой код:

Edit2.Enabled:= Length(Edit1.Text) >= 10;

На событие Edit2.OnChange вешаешь вот такой:
Button1.Enabled:= Length(Edit2.Text) >= 10;

Потом создай единый обработчик для Edit1.OnKeyPress и Edit2.OnKeyPress и там:
if not (Key in ['0'..'9', #8]) // Чтобы нельзя было ввести ничего, кроме цифр.
  then Key:= #0;

Это всё теория. Не советую использовать такое на практике, т.к. здесь есть свои нюансы (например, работа с буфером обмена). Не нужно требовать от пользователя такой тупой последовательности действий. Гораздо проще и лучше сделать проверку на правильность введённых данных по нажатию на кнопку Button1. Если данные введены неверно, то выдать сообщение с рекомендациями, а затем дать возможность откорректировать данные или отменить операцию.

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 10 марта 2009, 09:17
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 11 марта 2009, 10:14; участников в обсуждении: 3.
Вадим К

Вадим К (статус: Академик), 10 марта 2009, 11:28 [#1]:

Я предпочитаю использовать не технологию "жесткого запрета" (хотя она иногда и нужна) и не "постуведомлений", а динамических уведомлений. Делается примитивно и просто. Рядом возле Edit ставим label, делаем его невидимым и шрифт красного цвета. а в OnEditChange пишем код вида
label1.caption :='Надо не меньше 10 символов';
label1.enable := length(edit1.text) <10;
Но проверку корректности в обработчике нажатия никто не отменял.
Такая технология более дружественная к пользователю - он видит что не так уже по мере набора и технология проста в написании.
Есть ещё более красивое проявление этой технологии. Если данные введены неверно, то возле edit появляется красный кружок с восклицательным знаком. А если навести на него мышку (кликнуть) то появляется подсказка, что не так и что надо сделать, что бы всем было хорошо. Говорят, что даже есть готовые компоненты в какой то библиотеке:)
Галочка "подтверждения прочтения" - вселенское зло.
Хитманчан

Хитманчан (статус: Посетитель), 10 марта 2009, 13:39 [#2]:

min@y™, Вадим К, большое вам спасибо!
seryoga

seryoga (статус: 1-ый класс), 11 марта 2009, 10:14 [#3]:

Конечно можно)))

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 10 апреля 2020, 04:01
Выполнено за 0.02 сек.
Рейтинг@Mail.ru