답변주신 분들 모두 감사합니다.
아무래도 이상해서 다시 테스트해보니 TTrayIcon 컴포넌트만 그런 것 같습니다.
TPanel 컴포넌트로 테스트해보니 원하는대로 잘 동작합니다. TT_TT.
TPanel 은 OnDblClick 이벤트가 왼쪽버튼 더블클릭시에만 발생합니다.
장성호님 말씀대로 LCL 도 VCL 과 같은 동작을 합니다.
procedure TFormMain.Panel1DblClick(Sender: TObject);
begin
ShowMessage('Panel Double');
end;
또, 장성호님이 OnMouseDown 이벤트에서 구현하다고 해서 아래처럼 하니 좌우버튼을 구분할 수 있습니다.TT_TT;;
procedure TFormMain.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssDouble in Shift then
begin
if ssLeft in Shift then
ShowMessage('Panel Left Double')
else if ssRight in Shift then
ShowMessage('Panel Right Double');
end;
end;
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
: );
: