1 / 1 / 0
Регистрация: 25.04.2010
Сообщений: 5
1

Проверка edit'ов на пустоту

25.04.2010, 03:43. Показов 38351. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет
Есть форма регистрации сотрудника и 9шт Эдитов.
Как проверить все эдиты на пустоту?
писал раньше
Delphi
1
if length(edit1.text)=0 then label1.caption:='Поле не заполнено' esle Label1.caption:='сохранено'
(п1)
это не родной код из программы, написал саму идею, но она не работает, программа все равно сохраняет, если эдит пустой, но это было лирическое вступление.
Итак 9 эдитов, нажимаем кнопку, если хоть один пустой выдать ошибку, если все заполнены то выполнить SQL запрос на проверку существующей записи, если совпадений по ID или ФИО нет, то записать новые данные в БД.(написал для понятности задачи)
понимаю кусок кода приличный...прошу подсказать, как проверить чертовых 9 эдитов одновременно.
Запись вида
Delphi
1
if length(edit1.text)=0 and length(edit2.text)=0 and length(edit3.text)=0 ....then
не работает, выдает ошибку после второго AND, а если проверять по два то не работает так же как и (п1).
подтолкните, а то застрял на этом этапе.
с бд всё в шоколаде=)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2010, 03:43
Ответы с готовыми решениями:

Проверка на пустоту
Всем привет. Вылетает ошибка index out of bounds(3) на строке s_params:=...

Проверка на пустоту.
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls,...

Проверка на пустоту
День добрый! Знаю вопрос ламерский, но не могу понять почему условие не работает edit пустой if...

Проверка на пустоту
Доброго времени суток! Насколько я понял, что при объявлении глобальных переменных (например...

18
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
25.04.2010, 04:43 2
Ну правильно и должно выдавать ошибку. Надо так
Delphi
1
2
if (length(edit1.text)=0) and (length(edit2.text)=0) and (length(edit3.text)=0) then
  ...
Только в данном случае лучше не трогать функцию Length(), а проверить следующим образом
Delphi
1
2
if (Edit1.Text <> '') and (Edit2.Text <> '') and (Edit3.Text <> '') then
  ...
1
1 / 1 / 0
Регистрация: 25.04.2010
Сообщений: 5
25.04.2010, 11:11  [ТС] 3
всё отлично получилось, огромное спасибо!!!

приведу код для наглядности, может кому потребуется полный вид:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm3.Button1Click(Sender: TObject);
begin
if (Edit1.Text <> '') and (Edit2.Text <> '') and (Edit3.Text <> '') and (Edit4.Text <> '') and (Edit5.Text <> '') and (Edit6.Text <> '') and (Edit7.Text <> '') and (Edit8.Text <> '') and (Edit9.Text <> '') then
 begin
 //всякие операции...
Label9.Caption:='Запись сохранена';
end
else
begin
  Label9.Caption:='Ошибка! Не все поля заполнены.'
  end;
 
end;
Inadequate
еще раз СПАСИБО
1
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
25.04.2010, 11:12 4
Лучший ответ Сообщение было отмечено как решение

Решение

Если у тебя 9 едитов то могу предложить такое
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
flag:boolean;
begin
flag:=true;
  for i:=0 to form1.ComponentCount-1 do
  begin
    if (form1.Components[i].ClassNameIs('TEdit') and (pos('sql',form1.Components[i].Name)=1)) then
    begin
      if Length(tedit(form1.Components[i]).Text)=0 then
      begin
      flag:=false;
      //ShowMessage(tedit(form1.Components[i]).Text);
      end;
    end;
  end;
  if flag=false then ShowMessage('Где то пусто')
  else ShowMessage('Все нормально');
end;
Имя едита с проверкой на пустоту должно начинаться с sql типа sqlEdit1
4
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
25.04.2010, 11:39 5
Цитата Сообщение от turboq Посмотреть сообщение
Delphi
1
form1.Components[i].ClassNameIs('TEdit')
Лучше так:
Delphi
1
(form1.Components[i] is TEdit)
2
3 / 3 / 3
Регистрация: 17.02.2012
Сообщений: 94
02.07.2012, 18:01 6
у тебя написано esle, а не else
0
1 / 1 / 2
Регистрация: 15.08.2013
Сообщений: 42
15.08.2013, 17:24 7
Добрый день! Не стал плодить тем на проверку.
Ситуация схожая с автором, только мне нужно проверять по двум полям:
Delphi
1
2
3
4
5
if (DBEdit1.Text = '') and (DBmemo1.Text = '') then
        begin
         ShowMessage('Введите данные');
          Exit;
          end;
Но проверка происходит только по первому dbedit, а вот dbmemo игнорирует, тоесть если в dbmemo внести данные то он ругается так как не внесены данные в dbedit, а если наоборот, то происходит запись в БД.
exit стоит для того чтоб можно было внести изменения дальше в эту форму.
0
132 / 129 / 31
Регистрация: 12.12.2011
Сообщений: 462
15.08.2013, 17:42 8
Попробуй так:
Delphi
1
if (Trim(DBEdit1.Text) = '') and (Trim(DBmemo1.Text) = '') then
Просто, если в Memo будет стоять символ переноса (юзер ентер нажал), пустой строке не будет соответствовать. Плюс про пробелы не забываем.
2
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.08.2013, 17:42 9
Delphi
1
if (DBEdit1.Text = '') or (DBmemo1.Text = '')
1
1 / 1 / 2
Регистрация: 15.08.2013
Сообщений: 42
16.08.2013, 09:43 10
Спасибо за ответы.
Vabos, Ваше действие не помогло, все равно только по одному полю срабатывал. Но Спасибо большое за функцию Trim (незнал о ней) очень удобная вещь от пользователей с пробелами))))
Puporev спасибо, сработало с or. Знал об етом *или*, но подумал что с *и* будет работать... а оказалось наоборот.
0
0 / 0 / 0
Регистрация: 22.07.2013
Сообщений: 60
16.08.2013, 10:51 11
Если работаешь с ДБ, то лучше проверять не Edit, а поле в БД.
Delphi
1
2
3
4
if Table1.FieldValues['...'] <> null then
begin
...
end;
Так ошибок не будет
0
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 124
10.05.2016, 22:41 12
А как проверить TEdit на изменение данных?
0
5394 / 4322 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
10.05.2016, 22:59 13
Цитата Сообщение от Volhv Посмотреть сообщение
А как проверить TEdit на изменение данных?
а какие события есть у Эдита?
0
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 124
10.05.2016, 23:20 14
Цитата Сообщение от qwertehok Посмотреть сообщение
а какие события есть у Эдита?
в событии OnChange стоит проверка на ввод данных а мне нужно на изменение данные которые уже в нем есть?
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,248
11.05.2016, 00:02 15
Цитата Сообщение от Volhv Посмотреть сообщение
А как проверить TEdit на изменение данных?
Какое изменение? Сделанное пользователем с помощью клавиатуры? Тогда проверяй свойство Modified
0
Модератор
9853 / 5223 / 3304
Регистрация: 17.08.2012
Сообщений: 15,980
17.05.2016, 13:43 16
Цитата Сообщение от Volhv Посмотреть сообщение
в событии OnChange стоит проверка на ввод данных
Неверно. Событие OnChange возникает при любом изменении данных в TEdit. Вообще любом изменении, чем бы и в какой момент бы оно не было сделано. При вводе, редактировании с помощью клавиатуры, редактировании с помощью контекстного меню по правой кнопке мыши... Причём, в последнем случае, при вставке того же текста, который в TEdit и был, событие всё равно возникает, поскольку сначала текст стирается, а потом уже вставляется.
0
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 124
18.05.2016, 21:23 17
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Неверно. Событие OnChange возникает при любом изменении данных в TEdi
А тогда как проверять две процедуры (ввод и редактирование) в одном событии OnChange&
0
Модератор
9853 / 5223 / 3304
Регистрация: 17.08.2012
Сообщений: 15,980
21.05.2016, 00:48 18
Volhv, ??? А чем ввод по сути отличается от редактирования? Всё в Ваших руках.
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,248
21.05.2016, 01:01 19
Цитата Сообщение от Volhv Посмотреть сообщение
А тогда как проверять две процедуры (ввод и редактирование) в одном событии OnChange
А что проверять в событии OnChange? Раз уж был вызван его обработчик, значит изменения были сделаны!
0
21.05.2016, 01:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2016, 01:01
Помогаю со студенческими работами здесь

Проверка полей на пустоту
На форме есть много DBedit, нужно что все поля были заполнены. Если одно полне не заполнено, то...

Проверка ComboBox на пустоту
ОЧ дурацкий вопрос :- Unit3.pas(142): Type of expression must be BOOLEAN

Проверка edit на пустоту
Прошу помочь с небольшой проблемой. Допустим у меня 5 edit-ов, которые выполняют действие...

Проверка массива TLineSeries на пустоту
Доброго времени суток! При нажатии кнопки 'Start' в таблицу записывается массив случайных чисел....


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

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