안녕하세요~ 민행복 홍환민입니다.

방금 TGraphicControl을 상속받았던 컴포넌트를 TWinControl로 변경하려고 했습니다. 그런데 컴포넌트의 주요 기능이 컴포넌트에 비트맵을 그리는 일이었습니다.

그래서 TGraphicControl의 paint 메서드를 오버라이드해서 구현하고 있었습니다.

    procedure Paint; override;

이런 식으로요.

그래서, 아무생각없이 TWinControl을 상속하도록 바꿨는데, 컴파일 에러가 나더군요.
TWinControl에는 paint 메서드가 없던 거였습니다.

TCustomControl 에는 있더군요.
TWinControl을 상속받아 만든 겁니다.

컴포넌트를 직접 만들다보면, TWinControl에서 상속하기 보다는 TCustomControl을 상속하는 것이 좋습니다. 이름에서처럼 커스텀 컴포넌트 (자작 컴포넌트)를 만들려면 상속받으라고 만들어 놓은 거기 때문입니다.

이 외에도 Custom으로 시작하는 클래스들이 있습니다. VCL 컴포넌트를 만들려면 그걸 이용하는 것이 좋습니다.
예전에는 클래스 계층도도 외우고 각각의 역할도 알고 그랬는데, 컴포넌트 만들 일이 없다보니 이런 실수도 하는군요.

참고로 델파이를 공부하고 싶을때 할 수 있는 것 중에 큰 줄기가 VCL 공부입니다.
그 중에 먼저 해야할 일들중 하나가 VCL 계층도를 보고, 각각의 계층에서 어떤 기능을 수행하고 있는지를 아는 것입니다.

TComponent, TControl, TWinControl, TGraphicControl 뭐 이런 것들...

그럼 이만~