C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[59626] Re:Re:이벤트드리븐 함수
빨간눈 [interrupter] 1717 읽음    2010-01-05 09:45
새해복 마니 받으세요~
위 글을 읽다 보면서 몇가지 의문이 있어 질문드립니다.
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
    ShowMessage("CheckBox1Click");
}
여기서 ,
TObject *Sender; //선언후
CheckBox1Click(Sender); 하면 이벤트 핸들린 할수 있게 되잖아요?

이때 TObject 객체에서 어떤 이벤트가 발생됐는지도 알수 있는건가요?
그러니깐~ TForm1에서 발생되는 이벤트 발생에 대한 내용들이여 ^^
대책없이 코딩이 되니깐...문의 드리는거라 질문의 타당성도 모르겠어요~ ㅎㅎ






//---------------------------------------------------------------------------

장성호 님이 쓰신 글 :
: 음...
:
: 말씀 하신 내용은
: 제가  언제 한번 정리해야지 하고 생각하던 내용인데
: 자료 정리를  못해서 미루다 미루다 아직도 못했네요
:
: [이벤트 핸들러 호출 시점]
:     이벤트 이름을 볼때    OnClick  등 마무스로 조작할때만 발생할것 같이 이름의 이벤트도 있구
:     OnChange같은 경우 경험적으로 그렇게 착각하고 있는 이벤트도 있습니다.
:
:     그런데.. 이벤트에 따라서
:     마우스로 조작이 아닌 Coding에서 조작을 하여도 이벤트핸들러 함수가 호출되는 이벤트가 있습니다.
:
:     Control마다 다르고 똑같지가 않아서 정리를 해야 하는데...
:     아직 못하고 있는 것이죠
:
: [Coding으로 상태 변경시 이벤트핸들러 호출 되는 예]
:
:
: void __fastcall TForm1::CheckBox1Click(TObject *Sender)
: {
:     ShowMessage("CheckBox1Click");
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:     CheckBox1->Checked=! CheckBox1->Checked;
: }
: //Button1을 클릭할경우 Button1Click함수가 끝나기 전에 CheckBox1Click함수가 호출됨
: 

:    
: TCheckBox의 OnClick이벤트도 그런 이벤트중에 하나인데요
: 위 코딩과 같이 Button1클릭시에 CheckBox의 Checked상태를 변경해주면
: Button1Click함수가 끝나기 전에 즉 CheckBox->Checked상태를 변경하면서 곧바로
: CheckBox의 OnClick이벤트 핸들러가 있으면 호출됩니다.
:
: [ TRadioBox의 경우는..]
:
:   TRadioBox의 경우도 코딩에서 Checked상태를 변경해도 이벤트가 호출되는 함수중에 하나인데요
:   TRadioBox의 경우는
:      1) Checked될때 는 이벤트가 호출되구
:      2) UnChecked될때는 이벤트가 호출되지 않습니다.
:  
:    그리고 CallBack함수 조작할때 만약 곧바로 호출이 되지 않았다면..
:     Control중에는 마우스 조작할때만 이벤트가 발생하는
:
:   * CallBack함수에서 호출되지 않는 이유는 어떤 경우인제 정확히 잘모르겠네요
:
: [ OnClick이 호출되지 않게 하려면..]
:
:     다음 코드와 같이 이벤트 핸들러 함수를 NULL로 해주면 Checked상태가 Coding에서 변경되더라도
:    이벤트 핸들러가 호출될 일이 없을것입니다.
:       
:  
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:     CheckBox1->OnClick=NULL;
:     CheckBox1->Checked=! CheckBox1->Checked;
:     CheckBox1->OnClick=CheckBox1Click;
: }
: //---------------------------------------------------------------------------
: 

:
:
: [ 코딩으로 상태변경이 이벤트핸들러가 호출되는 다양한 경우]
:   코딩으로 상태변경이 이벤트핸들러가 호출되는 다양한 경우에 대해 한번 정리해야 되는데...
:   아직 정리를 못하고 있네요
:  
:    아뭍은 TCheckBox , TRadioBottun말구두 ..
:    Coding으로 상태변경하니까 이벤트 핸들러가 호출되지 않을것이라고 착가하고 Coding하는 경우가
:    상당히 많습니다.
:   
:    의심나면 반드시 테스트 해보고 코딩해야 할것입니다.
:
:

목록


:

: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
 컨트롤 명 제어내용 직접 Mouse로 제어시 발생 이벤트 코딩으로 상태변경시 발생 이벤트
 TComboBox Item의 선택을 변경시 ComboBoxChange 없음
 TListBox Item의 선택을 변경시 ListBoxClick  없음
 TCheckBox Checked상태 변경시 CheckBoxClick CheckBoxClick
 TRadioButton Checked상태 변경시 RadioButtonClick RadioButtonClick
 TRadioGroup Radio버턴 선택 변경시 RadioGroupClick RadioGroupClick
 TTreeView Node선택 변경시 TreeViewChange TreeViewChange
 TEdit  Text의 내용 변경시 EditChange EditChange
 TMemo Text의 내용 변경시 MemoChange MemoChange
 TListView Item선택 변경 ListViewChange ListViewChange
 TPageControl ActivePageIndex변경시 PageControlChange발생 없음
    
    


:
:
: 그럼..  

:
:
: 배우는개발자 님이 쓰신 글 :
: : 우선, 새해 복 많이 받으세요!
: : 제가 작업하는 도중 궁금한 것이 생겨 질문을 남깁니다.
: :
: : 예를 하나 들겠습니다. 라디오박스에 보면 'OnClick' 이벤트가 있습니다.
: : 이벤트드리븐 메소드를 만들어두면 라디오박스를 클릭할때마다 호출됩니다.
: :
: : 그런데 제가 임의로 해당 라디오박스의 체크를 바꿔주는 경우가 생겼습니다.
: : Radiobox1->Checked = true
: : 라는 식으로 말이죠.
: : 그럴경우 OnClick 메소드가 그 소스라인에서 호출되는 것을 확인했습니다.
: :
: : 문제는 어떤 때는 호출되고 어떤 대는 호출이 되지 않는다는 것이었습니다.
: : 그럴리가 없는데, 그럴리가 없는데 라며 오랜시간 디버깅하다가 내린 결론은..
: :
: : 콜백함수에서 'Radiobox1->Checked = true'라고 적혀있으면 이벤트드리븐 메소드가 불러지지 않고
: : 폼 함수 내에서 'Radiobox1->Checked = true'라고 적혀있으면 불러진다는 것입니다!!
: :
: : 잘 모르겠는데 고수분들의 조언 부탁드립니다.
: : 진실이 궁금하네요.

+ -

관련 글 리스트
59618 이벤트드리븐 함수 배우는개발자 2587 2010/01/04
59619     Re:이벤트드리븐 함수 장성호 2590 2010/01/04
59626         Re:Re:이벤트드리븐 함수 빨간눈 1717 2010/01/05
59627             Re:Re:Re:이벤트드리븐 함수 장성호 1921 2010/01/05
59623         Re:Re:감사합니다! 배우는개발자 2292 2010/01/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.