Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1172731272
roman_ln
2007-03-01 09:41
2007.03.25
Защита программ и данных с использованием электронных ключей.


15-1172640661
Fus1on
2007-02-28 08:31
2007.03.25
Вопрос по бэкслэшам в СИ++


1-1169639469
msgipss
2007-01-24 14:51
2007.03.25
как изменить кодировку ответа web службы


2-1172761724
Anderson2007
2007-03-01 18:08
2007.03.25
A call to OS function failed


15-1172843503
oldman
2007-03-02 16:51
2007.03.25
Что случилось с закачкой?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский