Работа с компонентами как с массивом

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
nattaella
Сообщения: 2
Зарегистрирован: 11 янв 2011, 16:22

У меня есть 10 компонентов LabeledEdit и 1 Edit. В поле Edit пользователь вводит число от 1 до 10 и в зависимости от этого столько же первых компонентов LabeledEdit должно остаться видимыми, а остальные - невидимыми. Например, пользователь ввёл "3". Тогда

procedure TForm1.Button18Click(Sender: TObject);
LabeledEdit1.Visible:=true;
LabeledEdit2.Visible:=true;
LabeledEdit3.Visible:=true;
LabeledEdit4.Visible:=false;
LabeledEdit5.Visible:=false;
................................
LabeledEdit10.Visible:=false;
Было бы хорошо это организовать как-то в виде массива, потому что писать 100 строк кода как-то нерационально. Есть ли более простой способ это организовать?

может что-то типа этого:
var LabEd:array[1..10] of .......
for i:=1 to 10 do
LabEd:=TLabeledEdit.Create(Self);
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

[syntax=Delphi]
var
i: Integer;
begin
for i := 0 to ComponentCount - 1 do
if Components is TLabeledEdit then TLabeledEdit(Components).Visible := False;
[/syntax]
Думаю дальше доделать проблем не будет.
[syntax=Delphi] [/syntax]
nattaella
Сообщения: 2
Зарегистрирован: 11 янв 2011, 16:22

Хочу ещё предоставить способ. По сложности он простенький. Может и не рациональный, но всё же вариант.)
procedure TForm1.Button5Click(Sender: TObject);
var i,n:integer;
label 1,2,3,4,5,6,7,8,9,10;
begin
labelededit1.Hide;
labelededit2.Hide;
labelededit3.Hide;
labelededit4.Hide;
labelededit5.Hide;
labelededit6.Hide;
labelededit7.Hide;
labelededit8.Hide;
labelededit9.Hide;
labelededit10.Hide;

n:=strtoint(Edit1.Text);

for i:=1 to n do
begin
case i of
1: labelededit1.Show;
2: labelededit2.Show;
3: labelededit3.Show;
4: labelededit4.Show;
5: labelededit5.Show;
6: labelededit6.Show;
7: labelededit7.Show;
8: labelededit8.Show;
9: labelededit9.Show;
10: labelededit10.Show;
end;
end;
end;
Ответить