Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c