|
Вопрос # 5 369/ вопрос решён / |
|
Здравствуйте, эксперты!
Подскажите пожалуйста, как сделать так, чтобы в Edit можно было вводить числа только от 1 до 31, второй день сделать не могу.
 |
Вопрос задал: 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™ (статус: Доктор наук), 3 июня 2011, 13:50 [#2]:
Возьми TSpinEdit, установи для него в Object inspector:
Value = 1;
Min = 1;
Max = 31.
И не надо мучаться.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 3 июня 2011, 15:16 [#4]:
Цитата (MaksKharovsk):
Спс
Какой вариант выбрал-то? Нам же интересно!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
MaksKharovsk (статус: Посетитель), 3 июня 2011, 15:21 [#5]:
Первый), во втором если с клавы вводить, всё равно можно сколько угодно писать
|
|
min@y™ (статус: Доктор наук), 3 июня 2011, 15:23 [#6]:
Цитата (MaksKharovsk):
во втором если с клавы вводить, всё равно можно сколько угодно писать
Ну, во-первых, если написать сколько угодно, то это в результате не прокатит.
Во-вторых, ввод с клавы можно и запретить.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
MaksKharovsk (статус: Посетитель), 3 июня 2011, 15:27 [#7]:
Посмотрю ещё, я то вообще хотел ввод после 31 заблокировать...
Сделал чтоб если больше 31 вводишь, то эдит очищает, так у меня сообщение лезет постоянно
|
|
Вадим К (статус: Академик), 3 июня 2011, 15:40 [#8]:
Лучше не блокировать ввод. Потому что пользователь всегда найдет способ, как ввести неверно (например, некоторые могут через ArtMoney, или как там сейчас называются аналоги или к примеру через API).
Мой способ хорош тем, что пользователь может вводить как угодно. Потом, когда он нажмет кнопку "рассчет", мы просто проверяем входные данные. Если что то не так - просто ругаемся и выходим с обработчика.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
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)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|