Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.25;
Скачать: CL | DM;

Вниз

Проверить заполнение компонентов   Найти похожие ветки 

 
Error404 ©   (2007-02-02 11:18) [0]

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

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

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

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


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

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


 
TRUNK ©   (2007-02-02 11:43) [2]

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

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;


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

 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;

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


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


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

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


 
evvcom ©   (2007-02-02 12:06) [5]

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

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


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


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

Grid рисуешь?)


 
Olivetti   (2007-02-02 12:47) [7]

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


 
TRUNK ©   (2007-02-02 12:49) [8]


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

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

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

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


 
evvcom ©   (2007-02-02 12:50) [9]

> [7] Olivetti   (02.02.07 12:47)

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


 
Olivetti   (2007-02-02 12:54) [10]

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

Если бы...

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


 
Vlad Oshin ©   (2007-02-02 13:56) [11]

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



Страницы: 1 вся ветка

Текущий архив: 2007.03.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
15-1172728307
db2admin
2007-03-01 08:51
2007.03.25
Turbo Delphi регистрация


15-1172662527
ocean
2007-02-28 14:35
2007.03.25
Проблема с сетью


8-1153855242
Max.66RUS
2006-07-25 23:20
2007.03.25
Конвертация BMP в JPG...


2-1172838130
kester
2007-03-02 15:22
2007.03.25
DBListBox


3-1168164030
alex_sz
2007-01-07 13:00
2007.03.25
Непонятная проблема с расходом памяти при навигации по таблице!!!