|
TShape 에는 public 또는 published 된 Canvas가 없습니다.
단 TShape는 그 상위로 TGraphicControl 에서 상속 되어 옵니다.
문제는 TGraphicControl이 Canvas가 있는데.. 이녀석이 protected 되어 있다는 것 입니다.
그러면 잠깐 생각을 바꾸면 이녀석을 끌어 낼 수 있죠.. 바로 protected 에 있으니까요..
class A : public TGraphicControl
{
public:
__property TCanvas *cav = {read=Canvas};
};
이런 클래스를 하나 만들어서
이렇게 사용하면
A *g = (A *)Shape1;
g->cav->MoveTo(0,0);
g->cav->LineTo(10,10);
여기서 Shape1 은 TShape 입니다.
사용 가능 합니다.
이러한 방법은 이경우만 쓰이는게 아니고 다른 상황도 비슷하게 쓰일수 있겠죠?
protected 는 private 와는 다르게 상속받을 경우 사용할 수 있다는 원칙에 의한것이겠죠.
수고하세요.
이형도 님이 쓰신 글 :
: 제목 그대로입니다.
: XFORM을 사용해서 회전하려고 하는데 TShape에 BMP가 있나요?
: 아니면 TShape에 Canvas가 있나요?
|