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
[59270] Re:[기초적인질문] Tag 에 대하여
장성호 [nasilso] 1015 읽음    2009-11-30 13:58
VCL의 컴포넌트 및 class들의 상속구조를 보면 다음과 같습니다.

TObject
    |
TPersistent
    |
TComponent
    |
TControl
    |
     --------------------
    |                                  |
TGraphicControl      TWinControl


모든 Component 및 Control들은 모드 TComponnet를 상속받는데요..

Tag란?
TComponnet 에 선언된 int형 멤버변수입니다.

이 int형 변수인 Tag값이  VCL에서 가지는 특별한 의미는 없다고 보시면 되구요

이 Tag라는 값이 모든 Componnet 및 Control에 가진 변수이므로..
프로그램에서 Tag값을 이용하여 Control을 구분하던지 할때 쓰이기도 하고
Tag값에 ID나 index같은것을 저장해두기도 하고 .. 그렇게 주로 만이 씁니다.

Tag값 이용 예제
예를 들어 Form위에 Button이 9 개 있다고 합시다.
3개는 Click했을때 a()을 호출하고
3개는 Click했을때 b()를 호출하고
나머지는 Click했을때 c()를 호출해야 한다고 합시다.

이경우 어떻게 코딩하는것이 간편할까요?

방법1 - 10개의 버튼에 모드 Click이벤트를 따로 걸어둘수도 있을것입니다.
방법2 - 버튼3개에 하나의 이벤트만 만들어서 걸어두는 방법도 있겠네요
방법3 - 하지만 버튼이벤트 하나, 즉 하나의 함수로 위기능을 구현하려면.. Tag값을 이용하는것이 편리할것입니다.

     버튼3개씩 각각 Tag값을 1,2,3 으로 설정해두고..
     다음과 같이..
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TButton *Btn=(TButton *)Sender;
    if(Btn->Tag==1)a();
    else if(Btn->Tag==2)b();
    else if(Btn->Tag==3)c();
}


이렇게 .. 모든 Component에 공통으로 가진 int형 변수이니 ..
그걸 어떻게 쓰는지는 프로그래머 재량에 달려있습니다.

그럼..


11 님이 쓰신 글 :
: 빌더에 입문한 초보입니다..
:
: 모든 컴포넌트 프로퍼티에 Tag가 있는데
:
: 이게 무엇인지, 어떠한 상황에 어떤 기능을 구현할수있는지 자세히 설명좀해주세요..
:
: 자료를 찾다보면 Tag를 변경해주는부분이 많은데 Tag에 대한 개념이 잡혀있지 않아서 이부분부터 먼저
:
: 집고 나가야할거 같아서 부탁드려요~
:
: 예를 들어서 설명해주시면 더감사해요~~^^

+ -

관련 글 리스트
59268 [기초적인질문] Tag 에 대하여 11 896 2009/11/30
59270     Re:[기초적인질문] Tag 에 대하여 장성호 1015 2009/11/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.