답변 감사합니다.
civilian 님 괜찮으시다면 예제 좀 부탁해도 될까요?
TMessage 를 보면 어떤 컴포넌트에서 이벤트가 발생했는지 알만한 부분이 없습니다.
델파이(VCL)에서는 TMessage 는 다음과 같습니다.
TMessage = packed record
Msg: Cardinal;
case Integer of
0: (WParam: WPARAM;
LParam: LPARAM;
Result: LRESULT;);
1: (WParamLo: Word;
WParamHi: Word;
LParamLo: Word;
LParamHi: Word;
ResultLo: Word;
ResultHi: Word;);
end;
라자루스(LCL)에서는 다음과 같습니다.
procedure WMRButtonDBLCLK(var Message: TLMRButtonDblClk); message LM_RBUTTONDBLCLK;
type TLMRButtonDblClk = TLMMouse;
type TLMMouse = record
Msg: Cardinal;
Keys: PtrInt;
case Integer of
0: (
XPos: SmallInt;
YPos: SmallInt;
);
1: (
Pos: TSmallPoint;
);
2: (
Dummy: LPARAM;
Result: LRESULT;
);
end;
civilian 님이 쓰신 글 :
: procedure WMRButtonDblClick(var Message: TMessage); message WM_RBUTTONDBLCLK;
:
: 폼에서 메세지를 핸들링하면 되지 않을까요?
: 델파이에선 잘 됩니다.
:
: 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
: : );
: :