2016-08-13 5 views
0

비슷한 제목의 많은 스레드를 체크 아웃했지만 도움이되지 않았습니다. 다음은 컴포넌트 팔레트에 컴파일 및 설치하지만 패널에 컴포넌트를 추가하려고하면 스레드 제목에 언급 된 오류 메시지가 표시됩니다. 아무도 이유를 설명해 주시겠습니까?컨트롤에 '부모 창이 없습니다.

__fastcall TEditBox::TEditBox(TComponent* Owner) : TGroupBox(Owner) 
{ 
    ToolBar=new TToolBar(this); 
    ToolBar->Parent=this; 
    TToolButton *Btn=new TToolButton(ToolBar); 
    Btn->Parent=ToolBar; 
} 

나는 Btn-> 부모 = 툴바 라인 모두의 OK 그래서 아마 그 문제 라인의 생략합니다.

+0

돈 ': 당신이 툴바는 런타임에 기본 버튼을 원한다면

, 당신은 예를 들어 편집 상자의 가상 Loaded() 방법 (또는 심지어 SetParent() 방법)에있는 버튼의 생성을 이동해야 도구 버튼에 부모를 지정해야한다고 생각합니다. 툴바는 그렇게하지 않습니다. –

+0

데이빗을 시도했지만 버튼이 표시되지 않습니다. 단추를 얻을 수있는 유일한 방법은 생성자가 실행 된 후에 Btn-> Parent를 할당하는 것입니다. 고마워요. 레미, – NoComprende

답변

0

ToolButton에 Parent을 할당하려면 ToolBar에 할당 된 HWND가있는 Parent이 필요하며 할당 된 HWND가 필요합니다. 그러나 편집 상자에는 생성자가 호출 될 때 Parent (또는 Name)이 아직 할당되어 있지 않으므로 ToolBar에서 HWND를 아직 할당 할 수 없으므로 오류가 발생합니다.

__fastcall TEditBox::TEditBox(TComponent* Owner) 
    : TGroupBox(Owner) 
{ 
    ToolBar=new TToolBar(this); 
    ToolBar->Parent=this; 
} 

void __fastcall TEditBox::Loaded() 
{ 
    TGroupBox::Loaded(); 
    TToolButton *Btn=new TToolButton(ToolBar); 
    Btn->Parent=ToolBar; 
} 
+0

. 디자인 타임에 버튼 (실제 코드가 여러 개가 있음)이 표시되도록 SetParent 경로를갔습니다. – NoComprende