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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 5 369

/ вопрос решён /

Здравствуйте, эксперты!
Подскажите пожалуйста, как сделать так, чтобы в Edit можно было вводить числа только от 1 до 31, второй день сделать не могу.

MaksKharovsk Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: MaksKharovsk (статус: Посетитель)
Вопрос отправлен: 3 июня 2011, 13:24
Состояние вопроса: решён, ответов: 0.


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

Всего сообщений: 9; последнее сообщение — 3 июня 2011, 19:57; участников в обсуждении: 4.
Вадим К

Вадим К (статус: Академик), 3 июня 2011, 13:33 [#1]:

есть куда проще и красивее решение.
Рядом возле edit ставим Image. А для самого Edit в событии Onchange пишем где то так
try
  i := StrToInt(Edit1.text);
  if (i >=1) and (i <=31) then Image1.Picture.LoadFromFile('good.bmp') else Image1.Picture.LoadFromFile('bad.bmp')
except
  Image1.Picture.LoadFromFile('bad.bmp')
end;
И все. Теперь, когда пользователь будет вводить неверное число, справа будет появляться в Image предупреждение. Если все ок - к примеру зеленая точка.
Галочка "подтверждения прочтения" - вселенское зло.

3 июня 2011, 13:34: Вопрос перемещён из тематического раздела Delphi » Прочее в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.

min@y™

min@y™ (статус: Доктор наук), 3 июня 2011, 13:50 [#2]:

Возьми TSpinEdit, установи для него в Object inspector:
Value = 1;
Min = 1;
Max = 31.
И не надо мучаться.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
MaksKharovsk

MaksKharovsk (статус: Посетитель), 3 июня 2011, 15:10 [#3]:

Спс
min@y™

min@y™ (статус: Доктор наук), 3 июня 2011, 15:16 [#4]:

Цитата (MaksKharovsk):

Спс

Какой вариант выбрал-то? Нам же интересно!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
MaksKharovsk

MaksKharovsk (статус: Посетитель), 3 июня 2011, 15:21 [#5]:

Первый), во втором если с клавы вводить, всё равно можно сколько угодно писать
min@y™

min@y™ (статус: Доктор наук), 3 июня 2011, 15:23 [#6]:

Цитата (MaksKharovsk):

во втором если с клавы вводить, всё равно можно сколько угодно писать

Ну, во-первых, если написать сколько угодно, то это в результате не прокатит.
Во-вторых, ввод с клавы можно и запретить.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
MaksKharovsk

MaksKharovsk (статус: Посетитель), 3 июня 2011, 15:27 [#7]:

Посмотрю ещё, я то вообще хотел ввод после 31 заблокировать...
Сделал чтоб если больше 31 вводишь, то эдит очищает, так у меня сообщение лезет постоянно
Вадим К

Вадим К (статус: Академик), 3 июня 2011, 15:40 [#8]:

Лучше не блокировать ввод. Потому что пользователь всегда найдет способ, как ввести неверно (например, некоторые могут через ArtMoney, или как там сейчас называются аналоги или к примеру через API).
Мой способ хорош тем, что пользователь может вводить как угодно. Потом, когда он нажмет кнопку "рассчет", мы просто проверяем входные данные. Если что то не так - просто ругаемся и выходим с обработчика.
Галочка "подтверждения прочтения" - вселенское зло.
bugmenot

bugmenot (статус: 3-ий класс), 3 июня 2011, 19:57 [#9]:

Только цифры:
procedure TForm11.FormCreate(Sender: TObject);
var
  Style: LongInt;
begin
  Style := GetWindowLong(Edit1.Handle, GWL_STYLE);
  Win32Check(Style <> 0);
  Win32Check(Style = SetWindowLong(Edit1.Handle, GWL_STYLE, Style or ES_NUMBER));
end;
а вообще, для этого есть событие OnKeyPress
виконання програми розпочинається з того самого мiсця, де призупинилося.

7 октября 2011, 12:59: Статус вопроса изменён на решённый (изменил автор вопроса — MaksKharovsk)

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

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 16:27
Выполнено за 0.03 сек.