장성호님 글에 추가로 하나더 알려드리면
장성호님 처럼 버튼의 캡션 속성을 이용하게 되면 캡션은 무조건 숫자가 되어야 합니다.
컴포넌트에는 Tag라는 속성이 있습니다. 이것을 이용하면 버튼의 캡션과 무관하게 사용할 수 있습니다.
Tag 속성이 Int 이므로 각 버튼마다 Tag 속성의 값을 번호로 매겨 놓습니다.
void __fastcall TF_Main::Button12Click(TObject *Sender)
{
TButton *Btn=(TButton *)Sender;
switch(Btn->Tag)
{
case 1 :
case 2 :
:
case 100 :
}
}
위의 예처럼 switch 문을 사용하기도 편하고 Tag 숫자를 파라메터로 해서 함수를 호출할 수도 있습니다.
장성호 님이 쓰신 글 :
: 다음과 같이 하면 됩니다.
:
:
: void __fastcall TF_Main::Button12Click(TObject *Sender)
: {
: TButton *Btn=(TButton *)Sender;
:
: Memo1->Lines->Add(Btn->Caption);
: }
:
: 축구 님이 쓰신 글 :
: : 버튼 100개가 있는데 하는일이 누르면 자기가 가지고 있는 캡션을 출력을 한다고 할시
: :
: : 같은걸 100번 코딩하는거 말고 함수를 하나 만들어서 해도 되는데요
: :
: : 1번 버튼이눌렸는지 2번버튼이 눌렸는지 그건 어떻게 아는 거에요?
: :
: : 함수를 하나 만든다면 버튼마다 함수 호출할때 어떤게 눌렸는지 인자를 넘겨주면 될거 같은데 그럼 버튼마다 함수를 호출해서
: :
: : 100번 호출 하잖아요?
: :
: : 이방법 말고 버튼 하나에만 출력하는 코딩한다음 나머지 버튼은 온클릭을 버튼 1로 해주려하는데 이때
: :
: : Memo1->Lines->Add(button1->caption);
: :
: : 이런식으로 한다면 2~100번 버튼까지도 버튼 1캡션이 나오잖아요?
: :
: : 이걸 어떻게 바꿔야 각자로 인식을 할까요? this로 하면 form캡션이 인식이 되고 Sender에는 없는거 같고
: :
: : 어디선가 본것 같긴한데 잘 모르겠네요
|