보통은,
for i:=1 to Form1.ControlCount - 1 do
if (Controls[j] is TEdit)and(Controls[j].Tag=i) then begin
doSomething;
end;
end;
이렇게 하는데, Form1에 PageControl이 있고, 그 위에 Panel1이 있고, 그 위에 Edit1이 있을 때, 이 Edit1을 control하려면, 루프를 네개를 써야 합니까?
Form1에서 PageControl1을 찾고, PageControl1에서 Panel1을 찾고, Panel1에서 Edit1을 찾아서 control해 주어야 하는냐는 것입니다.
제가 해보았더니, Form1에는 루프를 돌려도 PageControl1밖에 Control이 안잡히더라고요. 그래서,
for i:=0 to Form1.ControlCount - 1 do begin
if Form1.Controls[i] is TPageControl then begin
for j:=0 to TPageControl(Form1.Control[i]).ControlCount - 1 do begin
if TPageControl(Form1.Control[i]).Controls[j] is TPanel then begin
...
...
doSomething;
end;
end;
end;
end;
이렇게 계속 루프가 반복이 되는데, 이걸 Form1에서 바로 TEdit를 찾을 수 없을까요?
조언 부탁합니다.
> 보통은,
> for i:=1 to Form1.ControlCount - 1 do
> if (Controls[j] is TEdit)and(Controls[j].Tag=i) then begin
> doSomething;
> end;
> end;
>
> 이렇게 하는데, Form1에 PageControl이 있고, 그 위에 Panel1이 있고, 그 위에 Edit1이 있을 때, 이 Edit1을 control하려면, 루프를 네개를 써야 합니까?
> Form1에서 PageControl1을 찾고, PageControl1에서 Panel1을 찾고, Panel1에서 Edit1을 찾아서 control해 주어야 하는냐는 것입니다.
> 제가 해보았더니, Form1에는 루프를 돌려도 PageControl1밖에 Control이 안잡히더라고요. 그래서,
>
> for i:=0 to Form1.ControlCount - 1 do begin
> if Form1.Controls[i] is TPageControl then begin
> for j:=0 to TPageControl(Form1.Control[i]).ControlCount - 1 do begin
> if TPageControl(Form1.Control[i]).Controls[j] is TPanel then begin
> ...
> ...
> doSomething;
> end;
> end;
> end;
> end;
>
> 이렇게 계속 루프가 반복이 되는데, 이걸 Form1에서 바로 TEdit를 찾을 수 없을까요?
> 조언 부탁합니다.
>
단순히 컴포넌트를 찾는것이라면 아래와 같이 함 해보세염.
for i:=1 to Form1.ComponentCount - 1 do
if (Components[i] is TEdit) then
if (Components[i] as TEdit).tag = i then
begin
doSomething;
end;