아래 유수님이 충분히 답변을 해주셨지만..
(음.. 한 발 늦었다..)
질문하신 분이 초보라 이신거 같아서^^
도움이 되실것 같아 조금 보충을 합니다..
Graph : array[0..10] of TGraphicControl;
mypen : Tpen;
여기서 Graph와 MyPen를 Class라고 하지여..
Class란 Object를 가르키는 이정표라고 표현하면 될거 같아여..
만약 서울에서 인천을 가려고 하면..
고속도로에 수많은 이정표가 인천의 방향을 가리키지만..
인천은 하나이지여..
그래서 이정표 하나가 더 생겼다고 해서..
인천을 더 만들 필요는 없자나요??
Class의 Create 메소드를 실행하면..
메모리에 Object를 형성하고.. (메모리 할당)..
Class변수는 그 메모리의 위치를 가르키게 되지요..
여기서 질문하신 내용으로 돌아가 보면..
이미 TShape 콤포넌트를 폼위에 놓았다면..
이미 TShape에 해당하는 양의 메모리가 할당됨과 동시에..
해당 콤포넌트 이름은 그 메모리 위치를 가르키게 되요..
아래와 같은 경우를 생각해 볼까요??
Graph[0]:= Shape1;
이렇게 되면 Graph[0]와 Shape1이 동시에..
해당 콤포넌트에 의해 할당된 메모리 영역을 가르키게 되지여..
무슨책을 보시는 지 모르지만..
그 책의 의도는 이러한 것 같아요..
배열을 이용해서 콤포넌트를 대체하는 것은 다음과 같은 이점이 있어요..
Case 1. 배열을 사용하지 않는 경우
Begin
Shape1.Visible:= False;
Shape2.Visible:= False;
Shape3.Visible:= False;
Shape4.Visible:= False;
End;
Case 2. 배열을 사용하는 경우
Var
Loop : Integer;
Begin
For Loop:= 1 to 4 do TShape(Graph[Loop]).Visible:= False;
End;
물론 한 번은 배열에 대응을 시켜주어야 하지만..
콤포넌트를 순서대로 자주 호출해야하는 경우라면..
배열을 사용하시는 것이 휠씬 용이하겠지여??
From 류..
|