Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > проверка заполнения edit'ов


Автор: WERITAS 29.4.2006, 14:44
Есть форма, а на ней три Edit'а, в которые вводятся данные float'овского типа. Каким образом осуществить проверку, что все ли поля заполнены?
 

Автор: Albinos_x 29.4.2006, 15:15
Код

...
if Edit1.text<>'' then
...
 

Автор: WERITAS 29.4.2006, 16:11
Я так пробовал, компилятор выдает ошибку Operator not applicable to this operand type

Я делал так:
Код

if (Form2.Edit1.Text <> ' ' AND Form2.Edit2.Text <> ' ' AND Form2.Edit3.Text <> ' ') then 
 

Автор: Albinos_x 29.4.2006, 17:04
Код

if ((Form2.Edit1.Text<>'') AND (Form2.Edit2.Text<>'') AND (Form2.Edit3.Text<>'')) then 
  

Автор: Sunvas 29.4.2006, 18:36
Как вариант, если эдитов будет уж слишком много:  smile 
Код

var i:word;
begin
for i:=0 to form1.ComponentCount-1 do
if (form1.Components[i] is tedit) then if (form1.Components[i] as tedit).Text='' then
begin
showmessage('Не все поля!');
exit;
end;
 

Автор: WERITAS 29.4.2006, 20:30
Albinos_x 
Ваш вариант я также прорабатывал - та же ошибка.

Sunvas, 
Спасибо, помогло 

Автор: Sunvas 30.4.2006, 00:11
Цитата(WERITAS @  29.4.2006,  20:30 Найти цитируемый пост)
Albinos_x 
Ваш вариант я также прорабатывал - та же ошибка.


В коде

Цитата(Albinos_x @  29.4.2006,  17:04 Найти цитируемый пост)
if ((Form2.Edit1.Text<>'') AND (Form2.Edit2.Text<>'') AND (Form2.Edit3.Text<>'')) then 

всего лишь нужно поубирать "form2." и все сработает!


Цитата(WERITAS @  29.4.2006,  20:30 Найти цитируемый пост)
Sunvas, 
Спасибо, помогло 

Я старался.
 

Автор: Albinos_x 30.4.2006, 07:12
Цитата(WERITAS @  29.4.2006,  20:30 Найти цитируемый пост)
Ваш вариант я также прорабатывал - та же ошибка.

значит не првильно пробовали... у меня всё работает...
Цитата(Sunvas @  30.4.2006,  00:11 Найти цитируемый пост)
всего лишь нужно поубирать "form2." и все сработает!

form2. здесь не причём.... 

Автор: WERITAS 30.4.2006, 07:12
Код
всего лишь нужно поубирать "form2." и все сработает!

Дык низзя form2 убирать! Я этот код пишу в обработчике, который вообще к form1 относится. 
 

Автор: Sunvas 1.5.2006, 01:37
Цитата(Albinos_x @  30.4.2006,  07:12 Найти цитируемый пост)
значит не првильно пробовали... у меня всё работает...

А ты свое приложение компилил или WERITAS-а? Ведь разница-то возможна! 

Автор: Albinos_x 1.5.2006, 08:12
разница в том, что компилятор без скобок считает 
Код

... ' ' AND Form2.Edit2.Text ...

за одну операцию, расставление скобок решает эти проблемы...
всё компилится без проблем... 

Автор: WERITAS 1.5.2006, 09:08
Albinos_x, 

Вот теперь скомпилилось (когда вы отредактировали свое сообщение). но это уже не столь важно. Вопрос закрыт. Всем спасибо за помощь! smile 

 

Автор: Albinos_x 1.5.2006, 09:28
Цитата(WERITAS @  1.5.2006,  09:08 Найти цитируемый пост)
Вот теперь скомпилилось (когда вы отредактировали свое сообщение)

хех... я всего лишь сделал из пробела, который у Вас стоял изначально:
' ' 
пустое значение 
''
она на компиляцию не влияет... влияет только на результат... т.е. при пустой строке, он бы ничего не выдал бы....
 smile  smile  smile 
и отредактировал я почти сразу же:
Цитата(время поста)
29.4.2006, 17:04

Цитата(время редактирования)
29.4.2006, 17:08

через 4 минуты, т.к. трафик сильно тормозил...
так, что ошибка была не в этом
 smile  

Автор: Scolopendra 5.5.2006, 13:07
По моему if Edit1.Text='' может привеcти к ошибке, если вы например ввели пробел в ваш Edit. Он уже <>'' , а на самом деле ничего не введено. Я обычно делаю так: if Length(Trim(Edit1.Text))=0 then ... 

Автор: Sunvas 6.5.2006, 07:39
Цитата(Scolopendra @  5.5.2006,  13:07 Найти цитируемый пост)
По моему if Edit1.Text='' может привеcти к ошибке, если вы например ввели пробел в ваш Edit. Он уже <>'' , а на самом деле ничего не введено. Я обычно делаю так: if Length(Trim(Edit1.Text))=0 then ... 

Ну если пробел, это для тебя ничего.. А если пользователь поставит точку, прочерк, знак восклицания ведь это тоже не будет нести смысловой нагрузки! Тут уж нужно заняться фильтрацией ввода, а не проверкой на заполненность эдитов. 

Автор: RTV 6.5.2006, 13:51
Код

procedure TForm1.Edit7KeyPress(Sender: TObject; var Key: Char);
begin
    if not (Key in ['0'..'9','.']) then Key:=#0;
end;

для проверки правильности ввода 

Автор: Cheburek 6.5.2006, 16:45
RTV, А если едитов очень много? Можно ли как-нибуть извернуться что бы код поменьше написать?   

Автор: Ryn 6.5.2006, 17:00
edit1.OnKeyPress := Edit7KeyPress;
edit2.OnKeyPress := Edit7KeyPress;
...
и т.п.
или во вкладке events для каждого едита в OnkeyPress выбрать процедуру Edit7KeyPress 

Автор: Yanis 6.5.2006, 17:46
По моему удобнее написать компонент, который будет удовлетворять нужным требованиям, если требуется его массовое использование. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)