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
[69906] Re:Re:Re:Re:Mouse Up하기도 전에 Click이벤트가 실행됩니다 ㅠㅠ
궁그미 [] 3838 읽음    2013-07-26 16:23
또한번 감사드립니다.

일단 제가 호출을 한적은 없습니다..ㅠㅠ 이벤트 연결도 잘되어있구요

그리고 말씀하신대로 메모 올려서 출력해봤는데도 Click이 Down보다 먼저 출력되네요..
참 이상한일입니다.. 적용하기전에 먼저 테스트할땐 잘됐는데 막상 프로젝트에 연결하려니
이렇게 엉키네요..

일단 극약처방으로 두 이벤트 실행내용을 바꿨는데 아무래도 Down일때 Modal창이 뜨는게 너무 거슬리네요 ㅠ
원랜 MouseDown일땐 그냥 색만 바꾸는거였는데 ㅠㅠ 어헝

비록 완전한 해결은 아니지만 친절히 답변해주셔서 감사합니다!


장성호 님이 쓰신 글 :
: 코딩으로 얼마든지 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이벤트가 실행됩니다 ㅠㅠ 궁그미 3838 2013/07/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.