아.., 당연히 아실거라 생각하고 안적었는데...
핸들러의 Object 주체가 달라지니까요. 아래처럼 Sender를 이용합니다.
void __fastcall TForm1::B_Click(TObject *Sender)
{
// 클릭된 Button을 btn이란 이름으로 받아옵니다.
// TButton *btn = dynamic_cast<TButton *>(Sender);
TButton *btn = (TButton *)Sender; // 여기서는 TButton만 걸리니까. 바로 TButton *로 받아도 됩니다.
Edit1->Text = btn->Tag; // Tag 값 확인용
switch (btn->Tag) {
case 1 : Edit2->Text = "1"; break;
case 2 : Edit2->Text = "2"; break;
님이 쓰신 글 :
: Alone님 감사합니다. ^-^ 답변을 포기 하고 있었습니다.. ㅜ
: 음 그런데.. 답변 해주신 내용으로 해보았으나.. Tag값이.. 0으로만 들어옵니다.
:
: Form1 에 버튼 2개를 만들고 Edit 2개를 만들어 테스트를 했습니다.
: Button1의 Tag는 1 , Button2의 Tag는 2 이렇게 설정하고.. 실행했습니다.
:
: code 내용..
:
: [unit1.h]
: void __fastcall B_Click(TObject *Sender);
:
: [unit1.cpp]
: void __fastcall TForm1::B_Click(TObject *Sender)
: {
: Edit1->Text = Tag; // Tag 값 확인용
: switch (Tag) {
: case 1 : Edit2->Text = "1"; break;
: case 2 : Edit2->Text = "2"; break;
: }
: }
:
: 값이.. 계속 0으로만 들어옵니다.. 제가 놓친게.. 있나요.. ㅜ
:
:
:
:
:
:
: Alone 님이 쓰신 글 :
: : 음, 버튼 클릭 이벤트 핸들러가 많아지면 그렇게 느려진다고 하시니...
: : ButtonClick 라는 이벤트 핸들러를 딱 하나만 만드시고,
: : 모든 버튼을 이 핸들러에 Click 이벤트를 걸어주시구요.
: : 각 버튼의 Tag 값을 서로 다르게 지정하신 후, Tag 별로 핸들러 내에서 처리하시면,
: : 핸들러 하나에 서 버튼 Tag별 처리를 하실 수 있습니다.
: :
: : switch(Tag) {
: : case 1:
: : // Tag가 1인 버튼의 할 일
: : break;
: : case 2:
: : break;
: : ....
: : }
: :
: :
: :
: : 라이손레종 님이 쓰신 글 :
: : : 안녕하세요 ? 오랜만에 방문한 초보입니다..
: : :
: : : 다름이 아니라.. 프로그램 단순 실행 속도를 개선 하고 싶습니다. (실행 후 연산이 아닌..)
: : :
: : : 현재
: : : Form1에 Button을 35개 배치하여,
: : : 각 버튼 마다 아주 단순한 기능을 넣었습니다. Button 클릭시 Edit1->Text = "A"; 이런 정도.
: : : 컴파일후 파일을 실행하면 약 3초 가까이 걸려서 프로그램이 뜹니다.
: : : 버튼이 많이 늘어날때마다 느려지는게 체감이 됩니다.
: : :
: : : 무엇 때문에 그런지 테스트용으로
: : : 새로운 Form1에 단순히 컴포넌트를 100개 이상 넣어 컴파일해보았는데
: : : 실행 파일의 속도는 느리거나 하지 않습니다. 약 1초이내 프로그램이 뜹니다.
: : :
: : :
: : : 두 차이점이..
: : : 느린 프로그램은 아래 처럼 버튼이나 컴포넌트 호출 함수가 많았고..
: : : void __fastcall Button1Click(TObject *Sender); ~ void __fastcall Button35Click(TObject *Sender);
: : :
: : : 빠른 프로그램은 호출 함수가 하나도 없습니다..
: : : 물론 느렸던 프로그램에 호출함수를 주석처리하면 빨라집니다..
: : :
: : : 저는 파일을 실행 했을때 빨리 화면이 떳으면 합니다.. 좋은 방법이 있을까요 ?
: : : 매우 초보입니다.. 쉽게 부탁 드려봅니다..
: : :
: : : 감사합니다.
|