제가 panel1, panel2, panel3,... panel25를 차례대로 보이게 하고 싶습니다.
그래서 panel1.visible := true;
panel2.visible := true;
panel3.visible := true;
......
panel25.visible := true;를 해야하는데 for 문을 돌리려 합니다. 이럴때는
Tpanel의 이름을 어떻게 지정해 줘야 하는지요..
제가 아래와 같이 코딩하였는데 에러가 났습니다.
var
pan : TPanel;
begin
for i:=1 to 25 do
begin
pan.name := 'panel'+'i';
pan.visible := true;
end;
감사드립니다.
> 제가 panel1, panel2, panel3,... panel25를 차례대로 보이게 하고 싶습니다.
> 그래서 panel1.visible := true;
> panel2.visible := true;
> panel3.visible := true;
> ......
> panel25.visible := true;를 해야하는데 for 문을 돌리려 합니다. 이럴때는
> Tpanel의 이름을 어떻게 지정해 줘야 하는지요..
>
> 제가 아래와 같이 코딩하였는데 에러가 났습니다.
> var
> pan : TPanel;
>
> begin
> for i:=1 to 25 do
> begin
> pan.name := 'panel'+'i';
> pan.visible := true;
> end;
>
> 감사드립니다.
안녕하세요 돌머리 김동원입니다.
컴포넌트를 배열처럼 쓰고 싶으시다면 경우에 따라 여러가지 방법이 있는데..
말그대로 변수로 선언해서 쓰는 방법과 FindComponent를 사용하는 방법
두가지를 알려드리겠습니다.
1. 배열이용
var
Pan : Array[1..25] of TPanel;
begin
Pan[1] := Panel1;
Pan[2] := Panel2;
Pan[3] := Panel3;
.
.
.
Pan[25] := Panel25;
for i:=1 to 25 do
begin
pan[i].visible := true;
end;
end;
2. 함수이용
var
i : integer;
pnName : string;
cpTemp : TComponent;
begin
for i:=1 to 25 do
begin
pnName := Format('Panel%d',[i] );
cpTemp := FindComponent(pnName);
if( cpTemp <> Nil )then
TPanel(cpTemp).Visible := true;
// TPanel(FindComponent(Format('Panel%d',[i] ))).Visible := true;
end;
end;
이밖에 여러가지 방법이 있지만 가장손쉬운 방법이라서..
도움이 되셨기를 바랍니다...