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에 대한 개념이 잡혀있지 않아서 이부분부터 먼저
:
: 집고 나가야할거 같아서 부탁드려요~
:
: 예를 들어서 설명해주시면 더감사해요~~^^