Bläddra i källkod

* Key up/down event: access to full shift state

Michaël Van Canneyt 6 månader sedan
förälder
incheckning
71dd153b13
1 ändrade filer med 21 tillägg och 3 borttagningar
  1. 21 3
      src/base/fresnel.events.pas

+ 21 - 3
src/base/fresnel.events.pas

@@ -223,16 +223,23 @@ Type
   private
     FRelated: TObject;
   Public
-  class function FresnelEventID : TEventID; override;
+    class function FresnelEventID : TEventID; override;
     Property Related : TObject Read FRelated Write FRelated;
   end;
   TFLMouseLeaveEvent = TFresnelMouseLeaveEvent;
 
   TFresnelKeyEventInit = Record
+    // State of shift keys
     ShiftState : TShiftState;
+    // Composing ?
     IsComposing : Boolean;
-    NumKey : Cardinal;
+    // Numerical key value:
+    // if positive, unicode char
+    // If negative: special key (see TKeyCodes).
+    NumKey : Integer;
+    // Key name: resolved unicode ("A" on Azerty) char or special key name (see TKeyNames)
     Key : String;
+    // Key code: key code ("Q" on Azerty) or special key name (see TKeyNames)
     Code : ShortString;
   end;
 
@@ -244,15 +251,17 @@ Type
     function GetShiftKey(AIndex: Integer): Boolean;
   Public
     Constructor Create(const aInit : TFresnelKeyEventInit);
+    function ShiftState : TShiftState;
     Property Code: ShortString Read FInit.Code;
     Property Key : String Read Finit.Key;
-    Property NumKey : Cardinal Read Finit.NumKey;
+    Property NumKey : Integer Read Finit.NumKey;
     Property Altkey : Boolean Index Ord(ssAlt) read GetShiftKey;
     Property MetaKey : Boolean Index Ord(ssMeta) read GetShiftKey;
     Property CtrlKey : Boolean Index Ord(ssCtrl) read GetShiftKey;
     Property ShiftKey : Boolean Index Ord(ssShift) read GetShiftKey;
   end;
   TFLKeyEvent = TFresnelKeyEvent;
+  TFresnelKeyEventClass = class of TFresnelKeyEvent;
 
   { TFresnelKeyUpEvent }
 
@@ -506,9 +515,15 @@ end;
 
 constructor TFresnelKeyEvent.Create(const aInit: TFresnelKeyEventInit);
 begin
+  Inherited Create(Nil,FresnelEventID);
   FInit:=aInit;
 end;
 
+function TFresnelKeyEvent.ShiftState: TShiftState;
+begin
+  Result:=Finit.ShiftState;
+end;
+
 { TFresnelMouseEvent }
 
 function TFresnelMouseEvent.GetShiftKey(AIndex: Integer): Boolean;
@@ -666,6 +681,9 @@ begin
   R(TFresnelFocusEvent);
   R(TFresnelFocusInEvent);
   R(TFresnelFocusOutEvent);
+  R(TFresnelKeyDownEvent);
+  R(TFresnelKeyUpEvent);
+//  R(TFresnelKeyEvent);
 end;
 
 class destructor TFresnelEventDispatcher.Done;