Форум: "Основная";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
ВнизПроверить заполнение компонентов Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.04 c