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

FreePascal Q&A
[127] Re:Re:Re:마우스 좌우버튼 구분하여 더블클릭 이벤트 감지하는 방법?
장성호 [nasilso] 12499 읽음    2013-08-09 13:23
맞습니다.
직접 코딩으로 우측버튼  더블클릭 이벤트를 구현해야 한다는 뜻입니다.

앞서 예기했듯이
더블클릭은 OS(Windows 등)에서 메세지를 발생시켜줍니다.
개발툴 라이브러리(VCL등) 에서 발생시켜주는것이 아닙니다.

OS에서 한쪽 버튼에 대해서만 더블클릭이벤트를 발생시켜주기 때문에
개발툴(델파이나 빌더)에서 좌우버튼 구분 기능 자체가 필요가 없죠

빌더/델파이에 그런기능 없습니다.

그럼..


MarunGuy 님이 쓰신 글 :
: 답변 감사합니다.
:
: 더블클릭이벤트를 수작업으로 구현하라는 뜻으로 들립니다.
: 콘트롤이 하나면 괜찮겠지만 콘트롤이 추가될때마다
: 마우스이벤트 시간을 기록하는 변수, 이벤트 처리코드 등을 추가해야하는 번거로움이 생길 것 같습니다.
:
: 델파이나 C++빌더에서는 마우스 좌우버튼 구분되는 더블클릭 이벤트가 지원되나요?
:
: 장성호 님이 쓰신 글 :
: :
: : [DoubleClick 이벤트]
: :  
: :  주 마우스 버튼을 정해진 시간안에 두번클릭( Mouse Down-Up-Down )을 해야 발생합니다.
: :  또한 DoubleClick 은 System(OS)에서 메세지를 발생시켜 줍니다.
: : 
: :  1) 주 마우스란 System에 보통 오른손마우스 되어있는데 이경우 왼쪽 버튼이 됩니다.
: :  2) 정해진 시간이란
: :         System설정에 Click시간설정이 있는데.. 이 시간안데 클릭해야 합니다.
: :  3) 두번클릭
: :        Window시스템에서는 Mouse Click(Down-Up)을 두번해야 Doubleclick이 발생하는것이 아니라
: :        Mouse-Down을 두번하면 (Down->Up->Down) DoubleClick이벤트가 발생합니다.
: :
: :  4) 기타
: :     *  Shift-State에서 ssRight가 오른쪽 마우스 버튼입니다.
: :     * MouseUp 이벤트에서는
: :           ShiftState로 어느버튼에서 Event가 발생한것인지 판단안됩니다
: :           ShiftState는 현재 상태이기 때문에, Up이벤트 발생시점엔 Mouse가 Up상태이므로 ShiftState에 포함안되어 있습니다.
: :           TMouseButton 파라메터로 확인하셔야 합니다.
: :       
: :
: : [결론]
: :    주 버튼이 아닌 Mouse버튼으로 doubleClick을 측정하려면 .. 직접 시간계산을 해야할것입니다.
: :       * OnMouseDown이벤트에서 우측버튼 DoubleClick을 시간계산해서 측정할수 있습니다.
: :            - 첫번째 Down때 시작시간 기록해두고 , 다음 Down때 경과시간이 설정시간안이면 Double-Click으로 간주하면 될듯..
: :
: :       * Shift-State는  ssRight로 체크하시구요
: :
: : 이상입니다.
: : 
: : MarunGuy 님이 쓰신 글 :
: : : 안녕하세요.
: : :
: : : 마우스 좌우버튼을 구분하여 더블클릭 이벤트를 감지하려고 하는데 잘 안됩니다.
: : : 환경은 윈도7 64비트, CodeTyphon 4.41 32비트 입니다.
: : :
: : : OnDblClick 이벤트를 사용하면 되는데 좌우 버튼을 구별할 수 없네요.
: : :
procedure TFormMain.TrayIconMainDblClick(Sender: TObject);
: : : begin
: : :   ShowMessage('double click'); // 좌우 버튼을 구별할 수 없음..
: : : end; 

: : :
: : : OnMouseUp 이벤트를 이용해볼려고 했는데 생각처럼 안되네요.
: : :
procedure TFormMain.TrayIconMainMouseUp(Sender: TObject; Button: TMouseButton;
: : :   Shift: TShiftState; X, Y: Integer);
: : : begin
: : :   if mbRight = Button then
: : :     ShowMessage('right click')
: : :   else if (mbLeft = Button) and (ssDouble in Shift) then
: : :   begin
: : :     ShowMessage('left double click');
: : :   end;
: : : end;

: : :
: : : 그냥 if ssDouble in Shift then 해도 이벤트가 발생하지 않습니다.
: : : LCL 도움말에서도 ssDouble 이 마우스 더블클릭이 맞는데 말이죠. 흠.
: : :
type TShiftStateEnum = (
: : :   ssShift,	// Shift key pressed
: : :   ssAlt,	// Alt key pressed
: : :   ssCtrl,	// Ctrl key pressed
: : :   ssLeft,	// Left mouse button pressed.
: : :   ssRight,	// Right mouse button pressed.
: : :   ssMiddle,	// Middle mouse button pressed.
: : :   ssDouble,	// Double mouse click.
: : :   ssMeta,	// Meta key pressed.
: : :   ssSuper,	// Super key pressed.
: : :   ssHyper,	// Hyper key pressed.
: : :   ssAltGr,	// Alt-GR key pressed.
: : :   ssCaps,	// Caps lock key pressed
: : :   ssNum,	// Num lock key pressed
: : :   ssScroll,	// Scroll lock key pressed
: : :   ssTriple,	// Triple mouse click
: : :   ssQuad,	// Quadruple mouse click
: : :   ssExtra1,	// Extra key 1
: : :   ssExtra2	// Extra key 2
: : : );

: : :

+ -

관련 글 리스트
123 마우스 좌우버튼 구분하여 더블클릭 이벤트 감지하는 방법? MarunGuy 3710 2013/08/08
133     Re:마우스 좌우버튼 구분하여 더블클릭 이벤트 감지하는 방법? MarunGuy 7921 2013/08/12
131     Re:마우스 좌우버튼 구분하여 더블클릭 이벤트 감지하는 방법? MarunGuy 8024 2013/08/10
130     Re:마우스 좌우버튼 구분하여 더블클릭 이벤트 감지하는 방법? civilian 7148 2013/08/09
132         Re:Re:마우스 좌우버튼 구분하여 더블클릭 이벤트 감지하는 방법? MarunGuy 7435 2013/08/10
124     Re:마우스 좌우버튼 구분하여 더블클릭 이벤트 감지하는 방법? 장성호 3686 2013/08/09
125         Re:Re:마우스 좌우버튼 구분하여 더블클릭 이벤트 감지하는 방법? MarunGuy 4508 2013/08/09
127             Re:Re:Re:마우스 좌우버튼 구분하여 더블클릭 이벤트 감지하는 방법? 장성호 12499 2013/08/09
128                 Re:Re:Re:Re:마우스 좌우버튼 구분하여 더블클릭 이벤트 감지하는 방법? MarunGuy 7827 2013/08/09
129                     Re:Re:Re:Re:Re:마우스 좌우버튼 구분하여 더블클릭 이벤트 감지하는 방법? 장성호 7550 2013/08/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.