Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/30: Рейтинг темы: голосов - 30, средняя оценка - 4.93
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
1

Запрет на ввод чисел в EDIT, пока не будет заполнено другое поле edit

21.05.2014, 19:58. Показов 6199. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Дело в том, что мне нужно сделать так, чтобы одно поле edit нельзя было заполнять до тех пор, пока не заполнено другое поле edit.
То есть, например, пока поле edit1 не заполнено, в поле edit2 запрещено что-либо вводить.
Заранее спасибо тем, кто откликнется.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2014, 19:58
Ответы с готовыми решениями:

Ввод чисел в поле Edit по нажатию на него мышкой
ПОМОГИТЕ ПОЖАЛУЙСТА!!! У меня на форме несколько полей Edit и кнопки с цифрами. Когда я нажимаю по...

Запрет использования Button, пока не будут заполнены поля Edit
Нужно, чтобы кнопку можно было нажать тогда, когда 2"эдита" будут заполнены

Запрет использования Button, пока не будут заполнены поля Edit
Не помню как это делается в с++ в Delphi это выглядит как то так Button1.Enabled :=...

Запрет ввода цифр в поле Edit
Как запретить ввод цифр с клавиатуры, в поле Edit? (но чтоб буквы и дополнительные символы...

31
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
21.05.2014, 20:00 2
Лучший ответ Сообщение было отмечено Ella17 как решение

Решение

Цитата Сообщение от Ella17 Посмотреть сообщение
пока поле edit1 не заполнено
Критерий "заполненности поля" в студию.
1
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
21.05.2014, 20:06  [ТС] 3
Спасибо за ответ!

Добавлено через 3 минуты
Если вы не хотите ничего объяснять, подсказать каким можно способом это реализовать, то зачем писать...
И я не прошу код в студию. По-моему это форум программистов и я как начинающий, прошу объяснения у тех, кто готов помочь советом.
0
13 / 13 / 11
Регистрация: 28.09.2013
Сообщений: 364
21.05.2014, 20:08 4
Ella17, Если свойство Enabled поставить false, пойдет?
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
21.05.2014, 20:12 5
Цитата Сообщение от Ella17 Посмотреть сообщение
Если вы не хотите ничего объяснять, подсказать каким можно способом это реализовать, то зачем писать...
И я не прошу код в студию.
Что в моем простом вопросе прозвучало так обидно? Мне чтобы дать совет или пример действительно нужно знать что подразумевается под заполненностью.
0
13 / 13 / 11
Регистрация: 28.09.2013
Сообщений: 364
21.05.2014, 20:14 6
northener, возможно автор подразумевает под "заполнено", что поле не должно быть пустым, иначе сказал бы конкретнее.
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
21.05.2014, 20:17 7
Цитата Сообщение от Taxip Посмотреть сообщение
возможно автор подразумевает под "заполнено", что поле не должно быть пустым
Возможно. Но тогда не понятен смысл такого запрета.
0
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
21.05.2014, 20:52  [ТС] 8
Дело в том, что мне нужно реализовать расчет. И я хотела поставить запрет на ввод значений на каждую последующую ячейку. То есть, сначала заполняется первый edit, после чего снимается запрет с ввода значений со второго edit и так с последующими edit.
0
13 / 13 / 11
Регистрация: 28.09.2013
Сообщений: 364
21.05.2014, 20:55 9
Ella17, Это вставляем в событие Change:
Delphi
1
2
if Length(edt1.text)<>0 then
     edt2.enabled:=true;
либо
Delphi
1
2
if not(edt1.text='') then
     edt2.enabled:=true;
0
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
21.05.2014, 20:56  [ТС] 10
northener, Тогда так бы и сказали, что мой вопрос не понятен. Просто, например, я поняла так, будто бы Вы имеете ввиду, что я зашла сюда и жду пока мне всё готовое выложат...

Добавлено через 23 секунды
Taxip, Спасибо большое, сейчас попробую!
0
13 / 13 / 11
Регистрация: 28.09.2013
Сообщений: 364
21.05.2014, 20:58 11
Лучший ответ Сообщение было отмечено Ella17 как решение

Решение

Надо еще дописать
Delphi
1
else edt2.Enabled:= false;
В противном случае, если стереть все символы(после их ввода) следующий Edit останется активным.
1
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
21.05.2014, 21:02  [ТС] 12
Я создала событие OnChange для edit1, но при запуске в edit2 значения всё равно вводятся...
Подумаю, как можно обойтись без запрета. Спасибо, что откликнулись!
0
13 / 13 / 11
Регистрация: 28.09.2013
Сообщений: 364
21.05.2014, 21:06 13
Ella17, Изначально надо в edit2 изменить Enabled: true на false
0
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
21.05.2014, 21:17  [ТС] 14
Taxip, Спасибо Вам! Вроде получилось, я до этого еще свойство Enabled забыла поменять просто...

Добавлено через 10 минут
Извините, можно задать еще один вопрос? Чтобы расчет происходил автоматически, то есть вводились значения допустим в два edita и выводились в третьем edit без нажатия на кнопку, нужно создавать событие на форме или на самом edit?
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
21.05.2014, 21:24 15
Цитата Сообщение от Ella17 Посмотреть сообщение
вводились значения допустим в два edita и выводились в третьем edit без нажатия на кнопку
Не надо так делать. Ничего хорошего из этого не выйдет. Только пользователь сможет точно определить когда уже можно делать вычисления, а когда еще рано.
0
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
21.05.2014, 21:31  [ТС] 16
northener, Мне нужно сделать именно так, поскольку вычисленное в этом третьем edite значение будет задействовано в следующем расчете, который будет находится на той же форме. А мне для того, чтобы начать следующий расчет, как раз таки нужно, чтобы был уже готовый ответ в edit.

Добавлено через 5 минут
Это будет своего рода помощь в правильности проведения расчета для пользователя.
0
3 / 3 / 1
Регистрация: 10.03.2013
Сообщений: 125
21.05.2014, 21:37 17
Я предлагаю в событии на OnKeyUP дописать активацию флага (e1:boolean)
Смысл. Если в Edit1 есть данные, то флаг переходит в "true",
В свою очередь для Edit2 в событии OnChange допишите if e1=true the Edit2.Enabled;
В дальнейшем, подумайте над тем, КАК будет обнуляться флаг, другими словами - если при нажатии кнопки "Очистить" у вас очищаются Edit1, Edit2, то флаг e1:=false.
0
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
21.05.2014, 21:45  [ТС] 18
Teapot1488, Я имею ввиду, что мне нужно, чтобы расчет происходил автоматически, то есть вводились значения допустим в два edita и выводились в третьем edit без нажатия на кнопку, нужно создавать событие на форме или на самом edit? А вы говорите о запрете на ввод чисел в последующие edit, пока не введены значения в предыдущий edit?
0
3 / 3 / 1
Регистрация: 10.03.2013
Сообщений: 125
21.05.2014, 22:44 19
Я теперь понял.
Например у вас есть 3 Edit.
С числами в Edit1, Edit2 производится какое нибудь действие, а в Edit3 выводится результат.
Например: a + b = c
В Edit1 - a, Edit2 - b, Edit3 - c.
В событии OnChange Edit1 И Edit2 (что важно) пишите код расчетов, предварительно указав переменные в процедуре, если переменные не указаны как глобальные.
И далее:
Delphi
1
2
3
4
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit1.Text);
c:=a+b;
Edit3.Text:=FloattoStr(c);
только учтите, что в случае деления или сложной функции придется продумывать условия, чтобы программа не вылетала
1
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
21.05.2014, 23:07  [ТС] 20
Teapot1488, Да, я такой код и прописывала:
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
c:=strtofloat(edit3.text);
d:=a*b*c;
edit4.Text:=floattostr(d);

Переменные прописала, как глобальные. Событие OnChange прописала для edit4. Всё вроде бы работает, вот только когда я при запуске дохожу до edit4, он не выводит получившийся результат, а верней сказать выводит, но только после нажатия в поле edit4 на какую-либо клавишу... Чем это может быть вызвано?..

Добавлено через 7 минут
Teapot1488, Всё, вроде разобралась. Событие OnClick просто выбрала и там прописала этот код...
Спасибо за отклик!

Добавлено через 3 минуты
Правда в таком случае пользователю придется нажимать на поле edit4... То есть он автоматом не будет показывать получившееся значение.
0
21.05.2014, 23:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2014, 23:07
Помогаю со студенческими работами здесь

Запрет ввода символов в поле Edit
Как запретить нажатие и вставку из буфера всех символов, кроме нужных мне, к примеру разрешить...

Запрет ввода букв в поле Edit
Написал следующий код, но он не дает запрета на ввод букв void __fastcall...

Запрет на ввод некоторых символов в edit
Как сделать, чтобы в edit нельзя было писать, к примеру: пробел,- и другие символы, которые я сам...

Запрет на ввод первого символа в edit
Запретил ввод букв в edit. Только как теперь сделать чтобы первой цифрой нельзя было поставить 0....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru