문경재님께서
CheckBox는 Checked속성 변경시 이상동작
CheckBox 클릭이벤트에서
Checked속성을 변경하니 함수가 재귀로 도는것 같다고 하셨는데요...
CheckBox는 Checked속성 변경시 주의할점
CheckBox는 Checked속성이 변경되면 Click이벤트 핸들러가 호출됩니다.
CheckBox1.Click 이벤트에서 CheckBox2->Checked를 변경하고
CheckBox2.Click 이벤트에서 CheckBox1->Checked를 변경하면
CheckBox1 한번 클릭하면
CheckBox1.Click이벤트 = > CheckBox2.Click 이벤트 => CheckBox1.Click 이벤트 ...
위와같이 계속 반복해서 호출되다가..
stack overflow가 날것입니다.
기타 속성 변경시 주의할 Control 들...
CheckBox 뿐만 아니라
다른Control중에서도 coding으로 Property를 변경했는데..
이벤트 핸들러가 호출되는 놈이 여러가지 있습니다.
다음 링크에 제가 예전에 아는데로 몇가지 정리해 놓은것이 있습니다.
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=947
참조하세요
그럼..
문경재 님이 쓰신 글 :
: 그렇네요 체크박스로 하니까
: CheckBox1->Checked = false; <-상태를 바꾸는데
: 해당 함수로 재귀로 들어가네요
: 플래그로 제어하면될것 같긴한데 그러면 너무 복잡해지니
:
: 그냥 라디오버튼을 쓰심이 좋을것 같네요
:
: 김동석 님이 쓰신 글 :
: : void __fastcall TMainForm::CheckBox2Click(TObject *Sender)
: : {
: : CheckBox3->Checked = false;
: : CheckBox1->Checked = false;
: : }
: : //---------------------------------------------------------------------------
: :
: : void __fastcall TMainForm::CheckBox3Click(TObject *Sender)
: : {
: : CheckBox2->Checked = false;
: : CheckBox1->Checked = false;
: : }
: : //---------------------------------------------------------------------------
: :
: : void __fastcall TMainForm::CheckBox1Click(TObject *Sender)
: : {
: : CheckBox3->Checked = false;
: : CheckBox2->Checked = false;
: : }
: : //---------------------------------------------------------------------
: :
: : 굳이 체크박스를 이용해야 해서...이렇게 해봤는데요
: : 이랬더니 클릭하면 다른게 체크가 사라지긴 하는데
: : 클릭한 체크박스도 클릭시 체크가 생기지않고
: : 다시 클릭해야 체크가 생깁니다..
: : 문제가 있나요..?
: :
: : 쉽게 말해 1번 체크박스에 체크가 되있을경우 2번체크박스를 클릭하면
: : 1번체크박스에 체크만 해제가 됩니다
: : 그리고 다시 2번을 클릭해야 2번이 체크가 됩니다.
: :
: :
: : 문경재 님이 쓰신 글 :
: : : 여러개의 선택박스에서 하나씩만 선택하게하는건
: : : radiogroup나 radiobutton를 쓰면됩니다.
: : : 구지 체크박스를 쓰고 싶다면 체크박스의 click 이벤트에서 체크박스 상태를 체크해서 checked를 true,false해주면되겠죠.
: : : civilian 님이 쓰신 글 :
: : : : TRadioGroup
: : : :
: : : : 김동석 님이 쓰신 글 :
: : : : : 안녕하세요
: : : : :
: : : : : 체크박스 에 관한 질문인데요
: : : : :
: : : : : 자동변경까진 아니고요
: : : : :
: : : : : 체크박스를 여러개 쓰는경우 중복 선택이 되지않겠끔 하고싶네요
: : : : :
: : : : : 얘를 들어 체크박스 1,2,3 이 있을경우
: : : : :
: : : : : 1이 체크된 상태에서 2를 체크하면 1 체크 없어지면서 2만 체크 되는것이지요
: : : : :
: : : : : 이런게 가능한가요?