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
[69904] Re:Re:Re:Mouse Up하기도 전에 Click이벤트가 실행됩니다 ㅠㅠ
장성호 [nasilso] 2411 읽음    2013-07-26 15:59
코딩으로 얼마든지 Onclick이벤트를 발생시켜줄수 있습니다.

가량 예를 들어
다음과 같은 함수를 호출하면
Control->Click() //

Control의 OnClick이벤트가 호출됩니다.

아니면 직접 다음과 같이 호출해줄수도 있구요
Butto1Click(NULL);

--------------------------------------------------

빈프로젝트에서 테스트 해보세요
어딘가에 코딩이 꼬여서 그럴수도 있습니다.

그리고 또한 Object-Inspector의 이벤트 연결을 확인해 보세요
함수이름은 StringGrid1OnClick이지만
다른 이벤트에 연결되어있을수도 있습니다.

또 ..
  Form위에 TMemo하나 올려서 이벤트 발생할때 Log를 남겨서 이벤트 순서를 체크해보세요
  Focus가 Message폼으로 갔다가 오면 정확한 발생순서대로 발생하지 않습니다.

  Focus가 Grid에 있다가 MouseDown 후에 곧바로 Message폼으로 가버리고..
  다시 Grid로 Focus가 오더라도..
  MouseDown에서 Up을 다시 해야합니다. 즉 MouseDown-Up 사이에 Focus가 다른 Control로 이동하면 안됩니다.

Focus가 이동되어버리면 OnClick이 발생할수 없습니다.
그런데도 발생한다면 다른 부분을 살표봐야할것입니다

그럼..


궁그미 님이 쓰신 글 :
: 일단 답변달아주셔서 정말 감사합니다..ㅠㅠ
:
: 그래서 다른 실험을 해봤는데 Down일때 ShowMessage로 Down출력,
: Click일때 또한 ShowMessage로 Cilck을 출력했는데
:
: 결과적으로 Click이 먼저 뜨고 바로 Down메세지가 뜹니다 ㅠㅠ
: 이것또한 말씀하신 이유때문일까요??힝 ㅠㅠ
:
: **추가
:
: 아 그리고 말씀듣고 다시 관찰해보니 Click이벤트가 마우스를 떼기 전에 일어납니다 ㅠㅠ
: 그러니까 MouseUp이 일어나기도 전에 Click이벤트가 일어나요
: 이걸 먼저 말씀드렸어야하는데 ㅠㅠ
:
: 장성호 님이 쓰신 글 :
: : 논리적으로 OnClick이 MouseDown보다 빨리 발생할수가 없습니다.
: :
: : 마우스 동작이 다음과 같은 순으로 일어나겠죠
: :    Down->Move->Up
: :
: : 그럼 이벤트는
: :    OnMouseDown
: :    OnMouseMove   ( 움직이지 않으면 발생하지 않음)
: :    OnClick               ( Mouse왼쪽버튼을 영역안에서  Up해야 발생함)
: :    OnMouseUp
: :
: : 위에서 OnClick이벤트는
: : 마우스 왼쪽버튼을 Up해야 발생합니다
: : 단지 OnMouseUp이벤트보다 먼저 이벤트를 호출해 줍니다.
: : 그리고  Control영역 안에서 MouseUp해야 OnClick이벤트가 발생하구요
: :
: : -------------------------------------------------------------------------
: : 결론적으로
: :   OnClick이 OnMouseDown보다  먼저 발생한것이 아니라
: :   OnMouseDown이후에 화면갱신이 늦어서, 늦게 발생한것처럼 보이는것이 아닌가 하는 생각이 듭니다.
: :  
: : 그럼..
: :
: : 궁그미 님이 쓰신 글 :
: : : 안녕하세요!! 질문 올립니다.
: : :
: : : StringGrid에 MouseDown과 OnClick이벤트를 줬는데요
: : : MouseDown하면 선택한 Row의 색이 눈에띄게 바꾸는거고,
: : : OnClick하면 해당 Row의 정보를 Modal로 띄우는 겁니다.
: : :
: : : 엄청 짧고 작은 프로그램에서 돌릴땐 분명히 잘돌아갔는데
: : : 데이터가 크고 긴프로그램에서 하니까 Click이벤트 후에 Down이벤트가 일어납니다 ㅠㅠ
: : : 그러니까 색이 먼저 바뀌는게 아니고 창이먼저 뜬다음에 색이 바뀌어요 ㅠㅠ
: : :
: : : 이게 왜이러는걸까요??
: : :
: : : 아 그리고 Down이벤트 할때 색바뀌는게 맨처음에 StringGrid에 진입하면 첫줄이 바뀌던데
: : : 포커스때문에 그러는것같은데 이 포커스 아예 없앨 방법이 있나요?
: : :
: : : 그럼 답변달아주시면 감사하겠습니다 ㅠㅠ
: : :

+ -

관련 글 리스트
69899 MouseDown , OnClick 궁그미 9056 2013/07/26
69900     Re:MouseDown , OnClick 장성호 13242 2013/07/26
69902         Re:Re:Mouse Up하기도 전에 Click이벤트가 실행됩니다 ㅠㅠ 궁그미 3907 2013/07/26
69904             Re:Re:Re:Mouse Up하기도 전에 Click이벤트가 실행됩니다 ㅠㅠ 장성호 2411 2013/07/26
69906                 Re:Re:Re:Re:Mouse Up하기도 전에 Click이벤트가 실행됩니다 ㅠㅠ 궁그미 3839 2013/07/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.