added SysKey messages to gtk intf and LCL

git-svn-id: trunk@6312 -
This commit is contained in:
mattias 2004-11-29 01:12:36 +00:00
parent 83f7725cc0
commit 2679c1cd94
3 changed files with 106 additions and 38 deletions

View File

@ -1415,15 +1415,21 @@ type
procedure WMExit(var Message: TLMExit); message LM_EXIT;
procedure WMMouseWheel(var Message: TLMMouseEvent); message LM_MOUSEWHEEL;
procedure WMKeyDown(var Message: TLMKeyDown); message LM_KEYDOWN;
procedure WMSysKeyDown(var Message: TLMKeyDown); message LM_SYSKEYDOWN;
procedure WMKeyUp(var Message: TLMKeyUp); message LM_KEYUP;
procedure WMSysKeyUp(var Message: TLMKeyUp); message LM_SYSKEYUP;
procedure WMChar(var Message: TLMChar); message LM_CHAR;
procedure WMSysChar(var Message: TLMChar); message LM_SYSCHAR;
procedure WMPaint(var Msg: TLMPaint); message LM_PAINT;
procedure WMDestroy(var Message: TLMDestroy); message LM_DESTROY;
procedure WMMove(var Message: TLMMove); message LM_MOVE;
procedure WMSize(var Message: TLMSize); message LM_SIZE;
procedure CNKeyDown(var Message: TLMKeyDown); message CN_KEYDOWN;
procedure CNSysKeyDown(var Message: TLMKeyDown); message CN_SYSKEYDOWN;
procedure CNKeyUp(var Message: TLMKeyUp); message CN_KEYUP;
procedure CNSysKeyUp(var Message: TLMKeyUp); message CN_SYSKEYUP;
procedure CNChar(var Message: TLMKeyUp); message CN_CHAR;
procedure CNSysChar(var Message: TLMKeyUp); message CN_SYSCHAR;
protected
// drag and drop
procedure DoAddDockClient(Client: TControl; const ARect: TRect); dynamic;
@ -1447,6 +1453,7 @@ type
function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; dynamic;
function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; dynamic;
function DoKeyDown(var Message: TLMKey): Boolean;
function DoRemainginKeyDown(var Message: TLMKeyDown): Boolean;
function DoKeyPress(var Message: TLMKey): Boolean;
function DoUTF8KeyPress(var UTF8Key: TUTF8Char): boolean; dynamic;
function DoKeyUp(var Message: TLMKey): Boolean;
@ -2496,6 +2503,9 @@ end.
{ =============================================================================
$Log$
Revision 1.257 2004/11/29 01:12:36 mattias
added SysKey messages to gtk intf and LCL
Revision 1.256 2004/11/05 22:08:53 mattias
implemented auto sizing: child to parent sizing

View File

@ -2304,6 +2304,39 @@ begin
Result := False;
end;
{------------------------------------------------------------------------------
TWinControl DoRemainginKeyDown
Returns True if key handled
------------------------------------------------------------------------------}
function TWinControl.DoRemainginKeyDown(var Message: TLMKeyDown): Boolean;
var
ShiftState: TShiftState;
begin
Result:=true;
ShiftState := KeyDataToShiftState(Message.KeyData);
// handle LCL special keys
ControlKeyDown(Message.CharCode,ShiftState);
if Message.CharCode=VK_UNKNOWN then exit;
//DebugLn('TWinControl.WMKeyDown ',Name,':',ClassName);
if not (csNoStdEvents in ControlStyle) then
begin
KeyDownAfterInterface(Message.CharCode, ShiftState);
if Message.CharCode=VK_UNKNOWN then exit;
// Note: Message.CharCode can now be different or even 0
end;
// let application handle the remaining key
if Application<>nil then
Application.NotifyKeyDownHandler(Self, Message.CharCode, ShiftState);
if Message.CharCode = VK_UNKNOWN then Exit;
Result := False;
end;
{------------------------------------------------------------------------------
TWinControl DoKeyPress
@ -3180,6 +3213,22 @@ begin
if not DoKeyDown(Message) then {inherited}; // there is nothing to inherit
end;
{------------------------------------------------------------------------------
procedure TWinControl.CNSysKeyDown(var Message: TLMKeyDown);
------------------------------------------------------------------------------}
procedure TWinControl.CNSysKeyDown(var Message: TLMKeyDown);
begin
if not DoKeyDown(Message) then {inherited}; // there is nothing to inherit
end;
{------------------------------------------------------------------------------
procedure TWinControl.CNSysKeyUp(var Message: TLMKeyUp);
------------------------------------------------------------------------------}
procedure TWinControl.CNSysKeyUp(var Message: TLMKeyUp);
begin
end;
{------------------------------------------------------------------------------
Method: TWinControl.CNKeyUp
Params: Msg: The message
@ -3198,7 +3247,7 @@ end;
Returns: nothing
event handler.
WMChar is sent by the interface befor it has handled the keypress by itself.
CNChar is sent by the interface before it has handled the keypress itself.
------------------------------------------------------------------------------}
procedure TWinControl.CNChar(var Message: TLMKeyUp);
var
@ -3224,6 +3273,11 @@ begin
end;
end;
procedure TWinControl.CNSysChar(var Message: TLMKeyUp);
begin
if not DoKeyPress(Message) then {inherited}; // there is nothing to inherit
end;
{------------------------------------------------------------------------------
Method: TWinControl.WMNofity
Params: Msg: The message
@ -3324,6 +3378,11 @@ begin
Assert(False, Format('Trace:[TWinControl.WMChar] %s', [ClassName]));
end;
procedure TWinControl.WMSysChar(var Message: TLMChar);
begin
end;
{------------------------------------------------------------------------------
Method: TWinControl.WMKeyDown
Params: Msg: The message
@ -3332,27 +3391,21 @@ end;
Event handler for keys not handled by the interface
------------------------------------------------------------------------------}
Procedure TWinControl.WMKeyDown(Var Message: TLMKeyDown);
var
ShiftState: TShiftState;
begin
ShiftState := KeyDataToShiftState(Message.KeyData);
DoRemainginKeyDown(Message);
end;
// handle LCL special keys
ControlKeyDown(Message.CharCode,ShiftState);
if Message.CharCode=VK_UNKNOWN then exit;
procedure TWinControl.WMSysKeyDown(var Message: TLMKeyDown);
begin
DoRemainginKeyDown(Message);
end;
//DebugLn('TWinControl.WMKeyDown ',Name,':',ClassName);
if not (csNoStdEvents in ControlStyle) then
begin
KeyDownAfterInterface(Message.CharCode, ShiftState);
if Message.CharCode=VK_UNKNOWN then exit;
// Note: Message.CharCode can now be different or even 0
end;
// let application handle the remaining key
if Application<>nil then
Application.NotifyKeyDownHandler(Self, Message.CharCode, ShiftState);
if Message.CharCode = VK_UNKNOWN then Exit;
{------------------------------------------------------------------------------
procedure TWinControl.WMSysKeyUp(var Message: TLMKeyUp);
------------------------------------------------------------------------------}
procedure TWinControl.WMSysKeyUp(var Message: TLMKeyUp);
begin
if not DoKeyUp(Message) then {inherited}; // there is nothing to inherit
end;
{------------------------------------------------------------------------------
@ -3364,7 +3417,6 @@ end;
------------------------------------------------------------------------------}
Procedure TWinControl.WMKeyUp(Var Message: TLMKeyUp);
Begin
Assert(False, Format('Trace:[TWinControl.WMKeyUp] %s', [ClassName]));
if not DoKeyUp(Message) then {inherited}; // there is nothing to inherit
end;
@ -4128,6 +4180,9 @@ end;
{ =============================================================================
$Log$
Revision 1.291 2004/11/29 01:12:36 mattias
added SysKey messages to gtk intf and LCL
Revision 1.290 2004/11/28 01:03:26 mattias
do not send OnExit/OnEnter during destroy, design or loading

View File

@ -2098,14 +2098,14 @@ begin
Msg.CharCode := VKey.VKey;
if BeforeEvent then begin
//if SysKey then
// Msg.msg := CN_SYSKEYUP
//else
if SysKey then
Msg.msg := CN_SYSKEYUP
else
Msg.msg := CN_KEYUP;
end else begin
//if SysKey then
// Msg.msg := LM_SYSKEYUP
//else
if SysKey then
Msg.msg := LM_SYSKEYUP
else
Msg.msg := LM_KEYUP;
end;
@ -2134,14 +2134,14 @@ begin
Msg.CharCode := VKey.VKey;
if BeforeEvent then begin
//if SysKey then
// Msg.msg := CN_SYSKEYDOWN
//else
if SysKey then
Msg.msg := CN_SYSKEYDOWN
else
Msg.msg := CN_KEYDOWN;
end else begin
//if SysKey then
// Msg.msg := LM_SYSKEYDOWN
//else
if SysKey then
Msg.msg := LM_SYSKEYDOWN
else
Msg.msg := LM_KEYDOWN;
end;
@ -2185,14 +2185,14 @@ begin
Msg.KeyData := CommonKeyData;
if BeforeEvent then begin
//if SysKey then
// Msg.msg := CN_SYSCHAR
//else
if SysKey then
Msg.msg := CN_SYSCHAR
else
Msg.msg := CN_CHAR
end else begin
//if SysKey then
// Msg.msg := LM_SYSCHAR
//else
if SysKey then
Msg.msg := LM_SYSCHAR
else
Msg.msg := LM_CHAR;
end;
@ -7884,6 +7884,9 @@ end;
{ =============================================================================
$Log$
Revision 1.323 2004/11/29 01:12:36 mattias
added SysKey messages to gtk intf and LCL
Revision 1.322 2004/11/28 00:55:44 mattias
deactivated sending SYSKey messages in gtk intf - they are not used anyway