굳이 그렇게 하시려면...Tag 에 포인터를 저장하면 되긴 되겠네요
Tag 는 용도가 정해져 있지 않고 임의로 사용할 수 있도록 만들어져 있는 int 타입 속성입니다.
버튼이 생성될 때..
char *str = "abcd";
Button1->Tag = (int)str;
버튼이 눌렸을 때
TButton *btn = dynamic_cast<TButton*>(Sender);
char *ref = (char*)btn->Tag;
ShowMessage(ref);
머 굳이 하자면 그렇게 하면 된다는 건데.. 별로 권장하고 싶지는 않네요.
차라리 데이터를 TList 에 넣어두고 Tag 에 list에 저장된 인덱스 번호를 넣었다가 나중에 꺼내 쓰는 것이 안전하지 않을까 생각됩니다.
위처럼 하다보면 메모리 관리상 헛점이 나타날 거 같아서요..
linuxman 님이 쓰신 글 :
: 안녕하세요..
:
: 버튼이나,패널등을 동적으로 생성할때...사용자가 정의한 구조체의 정보를
: 저장하고 싶습니다...
:
: ( treeview의 AddChildObject ( , , 구조체 포인터 ) ) 처럼 )
:
: 나중에 버튼이나 패널이 클릭되었을때...Sender를 저장했을때의 구조체포인터로 캐스팅해서...
: 생성했을때의 정보를 읽어오려 합니다...
: void __fastcall TmainF::onMouselClick(TObject *Sender)
: {
: //Sender의 특정 멤버를 저장했을때 당시의 구조체 포인터로... 변환해서...
: 정보를 읽고 싶은데... ( Treeview의 Data를 접근하는것처럼 )
:
:
: }
:
: 수고하세요...
|