C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[62701] 에러 원인 알려주세요
동철이 [] 704 읽음    2010-10-16 19:27
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
		MenuCreate("MS 파워포인트...");
		MenuCreate("MS 엑셀...");
		MenuCreate("-");
		MenuCreate("E&xit");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MenuCreate(String Cap)
{
        TMenuItem *NewItem = new TMenuItem(this);
        NewItem->Caption = Cap;
        File1->Add(NewItem);
        NewItem->OnClick = MenuEvent;
}

void __fastcall TForm1::MenuEvent(TObject *Sender)
{
		if(Sender->ClassNameIs("TMenuItem"))
		{
		                if(dynamic_cast(Sender)->Caption == "MS 파워포인트...")
				ShowMessage("앗! 파워포인트를 실행하시려고요..? 제가 시간이 없어서...");
			
			if(dynamic_cast(Sender)->Caption == "MS 엑셀...")
				ShowMessage("헤헤, 엑셀은 니가 알아서 실행혀~~");
						if(dynamic_cast(Sender)->Caption == "E&xit")
				Close();
			// 프로그램을 종료한다.
		}
}

메뉴의 동적생성에 관한 이 예제에 관해 질문이 있습니다.
실행해보니
dynamic_cast<TMenuItem *>(Sender)->Caption 값을 watch윈도우에서 확인해 보면

E2031 Cannot cast from 'const System::TObject *' to 'Menus::TMenuItem *'

이렇게만 나옵니다. 그래도 같은 결과를 얻을 수는 있습니다.

그런데 ((TMenuItem *)(Sender))->Caption 으로 바꾸면 제대로 값이 표시됩니다.

대체 위의 에러메시지는 무엇을 뜻하나요?

+ -

관련 글 리스트
62701 에러 원인 알려주세요 동철이 704 2010/10/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.