Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проверить заполнение компонентов [D7, WinXP]


Error404 ©   (2007-02-02 11:18:00) 

Доброго времени суток, уважаемые!
На форме расположено около 100 компонентов типа Edit, LabeledEdit и ComboBox. Необходимо, чтобы в них обязательно были введены данные перед нажатием кнопки Button. Можно, конечно, сделать проверку типа:

if (Edit1.Text<>'') and (Edit2.Text<>'') and .... (ComboBox99.Text<>'') then ShowMessage('Не все необходимые поля заполнены!');

перебрав в данном условии все компоненты, расположенные на форме.
Но наверняка есть более красивый способ сделать эту проверку. Подскажите, пожалуйста, как можно это сделать?!

С уважением, Error404.


Vlad Oshin   (2007-02-02 13:56:00) [1]

все выделить что надо и на онЧтолучше повесить  b:=b and ((sender as tedit).text<>'');


Olivetti   (2007-02-02 12:54:00) [2]

А! Так он из Бобруйска? :)

Если бы...

P.S. См. анкету.


evvcom   (2007-02-02 12:50:00) [3]

> [7] Olivetti   (02.02.07 12:47)

А! Так он из Бобруйска? :)


TRUNK   (2007-02-02 12:49:00) [4]


> Рамиль ©   (02.02.07 11:50) [3]

Твой код будет все Edit'ы, LabeledEdit'ы и ComboBox'ы проверять, возможно даже те, которые не нужно.

> Рамиль ©   (02.02.07 11:50) [4]

Что-то я очень сомневаюсь, что кому-то захочется присваивать каждому компоненту уникальное имя, неподпадающее ни под какой шаблон.


Olivetti   (2007-02-02 12:47:00) [5]

Какой город проживания - такие и задачи.


Комбинатор   (2007-02-02 12:15:00) [6]


> На форме расположено около 100 компонентов типа Edit, LabeledEdit
> и ComboBox

Grid рисуешь?)


evvcom   (2007-02-02 12:06:00) [7]

> [0] Error404 ©   (02.02.07 11:18)
> На форме расположено около 100 компонентов типа Edit, LabeledEdit
> и ComboBox

Бедный пользователь... Я бы за него на суде вступился :)


Рамиль   (2007-02-02 11:50:00) [8]


> TRUNK ©   (02.02.07 11:43) [2]

Очень интересно. А с какого имена дожны быть вида ControlXX ?


Рамиль   (2007-02-02 11:48:00) [9]

 Result := true;
 for i := 0 to Self.ComponentCount - 1 do
 begin
   if Self.Components[i] is TCustomEdit then
     if TCustomEdit(Self.Components[i]).Text = '' then
       Result := false;
   if Self.Components[i] is TComboBox then
     if TComboBox(Self.Components[i]).Text = '' then
       Result := false;
 end;

Ничего красивее в голову не пришло :)


TRUNK   (2007-02-02 11:43:00) [10]

Для начала создай массивы:

Edits: array[0..99] of TEdit;
LabeledEdits: array[0..99] of TLabeledEdit;
ComboBoxes: array[0..99] of TComboBox;

Затем в OnCreate заполни их:

for i := 0 to High(Edits) do
 Edits[i] := FindComponent('Edit'+IntToStr(i+1));
for i := 0 to High(LabeledEdits) do
 LabeledEdits[i] := FindComponent('LabeledEdit'+IntToStr(i+1));
for i := 0 to High(ComboBoxes) do
 ComboBoxes[i] := FindComponent('ComboBox'+IntToStr(i+1));

Дальше для проверки используй такой код:

function Check: Boolean;
var
i: Integer;
begin
Result := true;
for i := 0 to High(Edits) do
 if (Edits[i].Text = '') then
   begin
   Result := false;
   Break;
   end;
for i := 0 to High(LabeledEdits) do
 if (LabeledEdits[i].Text = '') then
   begin
   Result := false;
   Break;
   end;
for i := 0 to High(ComboBoxes) do
 if (ComboBoxes[i].Text = '') then
   begin
   Result := false;
   Break;
   end;
if not Result then
 ShowMessage('Не все необходимые поля заполнены!');
end;


Efir   (2007-02-02 11:26:00) [11]

С использованием функции FindComponent('Имя компонента').
Например так (на сколько помню)
(FindComponent(name) as TEdit).Text<>' '


Наверх

Титульная страница Поиск, карта сайта Написать письмо