TButtonControl
+
+--------- TCustomCheckBox
+ +
+ +-------------TCheckBox
+--------- TRadioButton
위와 같은 Class 구조입니다.
제가 고려하는 것은 아래와 같습니다.
동적으로 생성되는 객체는 TRadioButton, TCheckBox 입니다.
이것을 MyControl(TButtonControl) 에 할당할려고 합니다.
즉, 간략한 소스 부분은 아래와 같습니다.
-------*< Source Begin >*----------
type
//직접 instance를 만들지 않는것을 권유하므로 상속을 받음
TBtnCtrl = class(TButtonControl);
.......
var
MyControl : TBtnCtrl; //간접(?)으로 Instance 할당
procedure ???
begin
....
//ScrollBox1.Controls[i]는 동적 컨트롤(RadioButton 또는 CheckBox)
MyControl := (ScrollBox1.Controls[i] as TBtnCtrl);
....
end;
-------*< Source End >*----------
위에서 MyControl 이 TButtonControl 형식이면 TRadioButton의 부모 클래스인데 Type Casting 이 왜 안 되는지 궁금합니다.
아니면, 제가 잘 못알고 있는 건지요?
읽어 주셔서 감사합니다...
부모 컨트롤로 Type Casting은 되도, 자식컨트롤끼리는 Type Casting이 안됩니다... TBtnCtrl로 객체 선언하셨으니까 TBtnCtrl은 TButtonControl의 자식이 되는겁니다...
그러니까 할려면 MyControl을 TButtonControl형으로 선언하시고 TButtonControl형으로 Type Casting하세요...
var
MyControl : TButtonControl;
begin
MyControl := (ScrollBox1.Controls[i] as TButtonControl);
......
end;
^^ 항상 즐코하세요...