Главная страница
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.04 c
2-1173099742
Нуб
2007-03-05 16:02
2007.03.25
окно ошибки в Delphi


15-1172489465
boriskb
2007-02-26 14:31
2007.03.25
США И Великобритания нашли в Ираке то, что искали


15-1172460498
Slider007
2007-02-26 06:28
2007.03.25
С днем рождения ! 26 февраля


15-1172667903
Knight
2007-02-28 16:05
2007.03.25
DMClient и прокси в настройках обозревателя... как вылечить?


15-1172574124
DrDe
2007-02-27 14:02
2007.03.25
Delphi7, компи.....