![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверить заполнение компонентов [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<>' '