Q&A

  • 구창민님 보세요.
며칠 전에 판넬에 여러 줄의 캡션을 입력하는 방법을 물었던

장일형입니다.

질문에 답변해 주셔서 감사합니다.



의문점이 있어 다시 질문 드립니다.

그냥 판넬에서는 않되는 속성(canvas같은..)이

어떻게 상속 받아서는 되는지요...

1  COMMENTS
  • Profile
    구창민 1999.10.20 07:29
    장일형 wrote:

    > 며칠 전에 판넬에 여러 줄의 캡션을 입력하는 방법을 물었던

    > 장일형입니다.

    > 질문에 답변해 주셔서 감사합니다.

    >

    > 의문점이 있어 다시 질문 드립니다.

    > 그냥 판넬에서는 않되는 속성(canvas같은..)이

    > 어떻게 상속 받아서는 되는지요...



    구창민입니다.

    상속 받아서 되는 것을 보면 저도 참 신기합니다.

    Panel의 조상님들을 보면 TCustomControl-TCustomPanel-TPanel

    이런순으로 되는데 TCustomControl 의 Protected의 프로퍼티에

    Canvas가 정의되어 있음을 알수 있습니다.

    참고로 Controls.Pas를 보세요.



    그러므로, TPanel에도 Canvas 프로퍼티가 있는데,

    Protected로 선언되어 있기 때문에 접근이 불가합니다.



    그래서 그 프로퍼티에 접근을 위해 OOP Magic이라 불리는 편법을 쓰는데요,

    같은 class를 같는 Dummy Class를 선언하고

    이 Dummy Class로 Type Casting을 하게 되면

    신기하게도 Protected 영역까지 접근을 할 수 있다고 합니다.



    에궁.. 더 답답하게 해드린건 아닌지 모르겠습니다.



    저두 OOP를 깊이 알지 못함이라, 너그러이 이해를 바랍니다..^^;



    그럼.. 항상 즐거운 프로그래밍 하시길~