감사드립니다~
그렇죠 ㅎ 함수를 갯수만큼 만들면 의미가 반감되죠 ㅜㅜ
근데 CheckBox 이벤트가 OnClick 이벤트라서인지 기존의 CheckBo가 true에서 false 되면서도 이벤트가 발생하는것 같습니다.
그래서 인지 Checked일때만 이벤트가 발생되고 싶게 만든 저의 의도가 잘 맞지 않아서 라디오 버튼으로 만들기는 했는데.
혹 이부분은 어떻게 해야 될까요?
장성호 님이 쓰신 글 :
: 함수를 동적생성Control 갯수만큼 만든다면 ..
: 동적생성의 의미가 반감될듯 하네요
:
: OnClick이벤트이면
:
: TObject *Sender 라는 파라메터가 있습니다.
:
: 이 Sender가 실제로 Click한 TCheckBox 입니다.
:
: Sender를 이용해서
: 어떤 Control에서 이벤트가 발생한것인지 알수 있습니다.
:
: ================================================
:
: Design-time에 Form위에 올려진 Control이면
: Name이 모두 다른데..
:
: 동적 생성인 경우엔 Name으로 체크하기는 힘들고..
:
: 보통 .. Tag값을 동적생성하면서 다르게 주고..
: 이벤트에서 Sender를 cast해서 Tag값을 체크해서 처리하기도 합니다.
:
: //동적생성..
:
: ChkBoxArr2[i] ->Tag = i ;
:
:
:
: //이벤트에서..
:
: void __fastcall TForm1::ChkRowExcute2( TObject *Sender )
: {
: TCheckBox *ChkBo= ( TCheckBox * ) Sender;
: ChkBox->Tag ; // 동적생성에 설정한 i 값이 됨
:
: }
:
:
: 그럼 ..
:
:
: 쌩조 님이 쓰신 글 :
: : 질문 내용이 제목이랑 맞는지 잘 모르겠지만 .
: : for (int i = 0; i <= 1000; i++) {
: : ChkBoxArr2[i] = new TCheckBox(this);
: : ChkBoxArr2[i]->Caption = "CycleRow" + IntToStr(i);
: : ChkBoxArr2[i]->Left = 16;
: : ChkBoxArr2[i]->Top = (i*16);
: : ChkBoxArr2[i] ->Width = 90;
: : ChkBoxArr2[i] ->Parent = ScrollBox2;
: : ChkBoxArr2[i] ->OnClick = ChkRowExcute2;
: : }
: : 이렇게 체크 박스를 동적 생성하여 만들었습니다.
: :
: : 체크박스가 1~10까지 생성하면
: : 이벤트가 버튼 1을 클릭하든 2를 클릭하든 같은 이벤트를 발생하게 됩니다.
: :
: : 버튼1은 a
: : 버튼2는 b
: : 버튼3은 c
: : 이런식으로 나누고 싶은데 어떤 방법이 있을까요?