Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.47 MB
Время: 0.095 c
1-79973
Delph
2004-02-12 16:46
2004.02.25
String to Data


14-80282
Думкин
2004-02-04 05:59
2004.02.25
С днем рождения! 4 февраля.


1-79959
Zaratustra
2004-02-11 17:33
2004.02.25
TClientSocket без форм. Возможно ли это?


8-80041
kopcap
2003-10-21 14:51
2004.02.25
SwapBuffers()


1-79738
Val123
2004-02-12 12:33
2004.02.25
RichEdit





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский