|
TPanel을 상속받은 Component에 ComboBox를 동적으로 배치하는 과정에서 발생하는 문제입니다.
컴포넌트 생성자에서 동적으로 생성시킬 Owner와 Parent를 모두 해당 컴포넌트로 설정해 준 다음
ComboBox의 Item 속성을 건드리거나 AddItem등 method를 사용할 경우,
다른 폼을 사용하여 해당 컴포넌트를 생성시
EInvalidOperation Exception(Control '' has no parent window)이 발생합니다...
디버그 모드에서 Trace를 해 보아도 꼭 Item관련 속성이나 method를 건드리거나 BoundsRect()를 쓰면
해당 오류가 발생하며, SetBounds 등 ComboBox의 Layout을 잡는 명령행은 무사히 실행됩니다....ㅠㅠ
컴포넌트 내 생성 부분은 아래와 같습니다.
//.h
class TTest : public TPanel {
...
protected :
TComboBox *AComboBox;
...
}
//.cpp
void __fastcall TTest::TTest(TComponent* Owner) : TPanel(Owner)
{
AComboBox = new TComboBox(this);
AComboBox->Parent = this;
AComboBox->SetBounds(10, 10, 100, 20);
AComboBox->Items->Text = "aaa\r\nbbb\r\nccc"; //=====>이부분에서 위 에러가 납니다...
//Items->Add()를 쓰거나 BoundsRect를
//설정할 때도 마찬가지입니다...ㅠㅠ
}
그런데 ComboBox를 컴포넌트 내부가 아닌 폼에서 직접 동적으로 생성하고 테스트해 보았더니
위와 같은 문제가 생기질 않고 잘 돌아갔습니다...-_-
이 문제를 어떻게 해결해야 할지 고수님들의 가르침 부탁드립니다...
|