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

Вниз

Edit.Enabled=false;   Найти похожие ветки 

 
Developerr ©   (2004-02-10 11:23) [0]

Ув. мастера, подскажите пожалуйста как в условии указать, что если все компоненты типа TEdit.Enabled=false, то тогда выполнять какое-то действие?
У меня на форме много компонентов типа TEdit, можно, конечно, вручную прописать каждый Edit, но это долго и слишком много писать.
if (Edit1.Enabled=false)and(Edit2.Enabled=false)and... then

Может как-то можно указать по другому, что-то вроде этого:
if Component TEdit.Enabled = fasle then или что-нибудь подобное

Спасибо.


 
Семен Сорокин ©   (2004-02-10 11:26) [1]

Components, ComponentCount + F1


 
Radionov Alexey ©   (2004-02-10 11:27) [2]

>Developerr © (10.02.04 11:23)
Можно побегать по массиву Components и если он типа TEdit то
переменную B, заранее присвоенную false модифицировать соответственно.
Типа
B := False;
for k := 0 to ComponentCount-1 do
if Components[k] is tEdit then
B := B or (Components[k] as TEdit).Enabled;

if not B then
// Все TEdit - Disbled
else
// Встречаются Enabled


 
Ega23 ©   (2004-02-10 11:29) [3]

var
Fl:Boolean;

begin
Fl:=True;
for i:=0 to Form1.ComponentCount-1 do
begin
if (Form1.Components[i] is TEdit) then
if (Form1.Components[i] as TEdit).Enabled then
begin
Fl:=False;
Break;
end;

end;

if Fl then все едиты Enabled=False

end;


 
Тфьу   (2004-02-10 11:33) [4]

flag:=True;
for i:=0 to 10 do
if TEdit(FindComponent("Edit"+IntToStr(i))) then
begin
flag:=False;
break;
end;
if Flag then ...


 
Ega23 ©   (2004-02-10 11:37) [5]


> Тфьу (10.02.04 11:33) [4]

Enabled пропустил.

А если я ComboBox назову "Edit1"? Чтобы враги не догадались? :o)


 
Тфьу   (2004-02-10 11:47) [6]

Точно. Пропустил. Этот код приведен для одинаково названных компонент. И притом если известно их количество. (если неизвестно можно проверять в while FindComponent на nil). Он удобен будет если есть, например, две группы эдитов:
ParamsEdit1, ParamsEdit2, ParamsEdit3, ...
OptionsEdt1, OptionsEdt2, OptionsEdt3, ...

flag:=True;
i:=1;
while FindComponent("ParamsEdit"+IntToStr(i))<>nil do
begin
if TEdit(FindComponent("ParamsEdit"+IntToStr(i))).Enabled then
begin
flag:=False;
break;
end;
inc(i);
end;
if Flag then ...


 
Семен Сорокин ©   (2004-02-10 11:54) [7]

Тфьу (10.02.04 11:47) [6]
стоит упомянуть, что каждый FindComponent в свою очередь создает цикл for to ComponentCount и в случае большого количества компонентов может замедлить работу, поэтому вариант с единственным перечислением оптимальней, для различия групп эдитов можно использовать Tag.


 
Тфьу   (2004-02-10 11:56) [8]

Семен Сорокин © (10.02.04 11:54) [7]
Да не обязательно таг. Можно то же имя и проверять.


 
Юрий Зотов ©   (2004-02-10 11:58) [9]

Просто положить все Edit"ы на одну панель и переключать Enabled только у нее одной. У нее же одной и проверять.


 
nexxiss ©   (2004-02-10 13:05) [10]

На мой взгляд корректное решение возможно только с помощью RTTI ( как показано выше ).

var
Fl:Boolean;

begin
Fl:=True;
for i:=0 to Form1.ComponentCount-1 do
begin
if (Form1.Components[i] is TEdit) then
if (Form1.Components[i] as TEdit).Enabled then
begin
Fl:=False;
Break;
end;

end;

if Fl then все едиты Enabled=False

end;



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

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

Наверх




Память: 0.49 MB
Время: 0.02 c
1-79753
Слэш
2004-02-12 08:33
2004.02.25
Форма StayOnTop не скрывается


8-80024
Igor_
2003-09-19 13:20
2004.02.25
Тормоза OpenGL


1-79861
Прямой
2004-02-14 04:12
2004.02.25
Как найти длинну динамического массива


1-79941
Layner
2004-02-09 12:57
2004.02.25
Подскажите плз, как на форме fsMDIForm отображать дочерние


7-80321
KommandorDi
2003-12-03 18:06
2004.02.25
Ошибка при автозагрузке вместе с Windows