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
[15493] Re:[만해] TList의 Items[i]의 ClassName() 알아 내는 방법좀 알려 주세요
지나가는사람 [] 925 읽음    2002-02-14 16:43
예전에 VC++을 쓰던 과장님하고..

클래스의 타입을 알아낼수 있는가 하는 문제로 내기를 한적이 있었습니다.
아래 예제는 빌더의 헬프에서 퍼온것입니다.

이걸로 해결이 될것 같군요..
---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)

{
  for (int i = 0; i < ComponentCount; i++)
    ListBox1->Items->InsertObject(0,
                                  Components[i]->Name,
                                  (TObject *)Components[i]);

}

void __fastcall TForm1::ListBox1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)

{
  if (Button == mbRight)
  {
    TClass ClassRef;
    int Index = ListBox1->ItemAtPos(Point(X,Y), true);
    // only components that are controls have a position
    // make sure the component is a control
    for (ClassRef = ListBox1->Items->Objects[Index]->ClassType();
         ClassRef != NULL;
         ClassRef = ClassRef->ClassParent())
      if (String(ClassRef->ClassName()) == "TControl")
      {
        TControl *TheObject = (TControl *)ListBox1->Items->Objects[Index];

        StatusBar1->SimpleText =
          TheObject->Name + " is at (" +
          IntToStr(TheObject->Left) + ", " +
          IntToStr(TheObject->Top) + ")";
         break;
      }
    if (ClassRef == NULL) // if it wasn't a control
      MessageBeep(0);
  }
}
만해 님이 쓰신 글 :
: 안녕하세요 만해 입니다.
:
: 지난번 부터 계속 ~
:
: 근 두달이 다되어 가네요~
:
: HTML Parser를 지금 이용중인데요
:
: 아마 지난번에도 질문올렸던것 같은데
:
: HTML Parser 델파이 컴포넌트를 설날부터 삼일 동안 작업해서
:
: 싹다 빌더로 포팅을 했고요
:
: 지금 이용중인데요
:
: THTMLParser* hParser = new THTMLParser();
:   hParser->Lines->Add(html);
:   hParser->Execute();
:   for ( int i = 0 ; i < hParser->Parsed->Count ; i++ )
:     {
:       THTMLTag* hTag = new THTMLTag;
:       hTag = (THTMLTag*) hParser->Parsed->Items[i];
:     }
:
: 이 소스에서요 hPatser->Parsed->Items[i]의 클래스 네임을 알아야 하는데요
:
: 제가 이건 도저히 모르곘네요
:
: 몇번이나 형전환이나 몇가지 기법을 다 동원 했는데도 모르겠고요
:
: 헐~
:
: class THTMLParser :public TObject
: {
: private:
:   AnsiString Text;
:   AnsiString Tag;
:   bool IsTag;
:   bool IsExecute;
:   void __fastcall AddText(void);
:   void __fastcall AddTag(void);
:   bool __fastcall Is_Exe(void);
: protected:
:
: public:
:   TList* Parsed;
:   TStringList* Lines;
:
:   __fastcall THTMLParser():TObject()
:     {
:       Parsed = new TList();
:       Lines = new TStringList();
:       IsExecute = false;
:     };
:   virtual __fastcall ~THTMLParser()
:     {
:       delete Parsed;
:       delete Lines;
:     };
:
:   void __fastcall Execute(void);
:   TStringList* GetTagPeoperty(AnsiString ATag, AnsiString AProperty);
: //__published:
:
: };
:
: 이건 HTMLParser 선언부입니다.
:
: 보면 아시다 시피 소멸자 부분도 좀 미흡하네요
:
: 고수님들의 도움 부탁 드립니다.

+ -

관련 글 리스트
15491 [만해] TList의 Items[i]의 ClassName() 알아 내는 방법좀 알려 주세요 만해 771 2002/02/14
15493     Re:[만해] TList의 Items[i]의 ClassName() 알아 내는 방법좀 알려 주세요 지나가는사람 925 2002/02/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.