diff --git a/components/synedit/syncompletion.pas b/components/synedit/syncompletion.pas index 05dd10a4fe..01c2e8a399 100644 --- a/components/synedit/syncompletion.pas +++ b/components/synedit/syncompletion.pas @@ -86,7 +86,7 @@ type {$ENDIF} procedure SetCurrentString(const Value: string); procedure KeyDown(var Key: Word; Shift: TShiftState); override; - procedure KeyPress(var Key: TCharacter); override; + procedure KeyPress(var Key: char); override; procedure Paint; override; procedure ScrollGetFocus(Sender: TObject); procedure Deactivate; override; @@ -217,9 +217,9 @@ type procedure backspace(Sender: TObject); procedure Cancel(Sender: TObject); procedure Validate(Sender: TObject; Shift: TShiftState); - procedure KeyPress(Sender: TObject; var Key: TCharacter); + procedure KeyPress(Sender: TObject; var Key: char); procedure EditorKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure EditorKeyPress(Sender: TObject; var Key: TCharacter); + procedure EditorKeyPress(Sender: TObject; var Key: char); function GetPreviousToken(FEditor: TCustomSynEdit): string; function GetFEditor: TCustomSynEdit; function GetEditor(i: integer): TCustomSynEdit; @@ -260,7 +260,7 @@ type override; procedure EditorKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); virtual; - procedure EditorKeyPress(Sender: TObject; var Key: TCharacter); virtual; + procedure EditorKeyPress(Sender: TObject; var Key: char); virtual; function GetPreviousToken(aEditor: TCustomSynEdit): string; public constructor Create(AOwner: TComponent); override; @@ -402,7 +402,7 @@ begin {$ENDIF} end; -procedure TSynBaseCompletionForm.KeyPress(var Key: TCharacter); +procedure TSynBaseCompletionForm.KeyPress(var Key: char); begin case key of // #33..'z': begin @@ -1020,7 +1020,7 @@ begin end; end; -procedure TSynCompletion.KeyPress(Sender: TObject; var Key: TCharacter); +procedure TSynCompletion.KeyPress(Sender: TObject; var Key: char); var F: TSynBaseCompletionForm; begin @@ -1126,7 +1126,7 @@ begin result := ''; end; -procedure TSynCompletion.EditorKeyPress(Sender: TObject; var Key: TCharacter); +procedure TSynCompletion.EditorKeyPress(Sender: TObject; var Key: char); var i: integer; begin @@ -1290,7 +1290,7 @@ begin end; end; -procedure TSynAutoComplete.EditorKeyPress(Sender: TObject; var Key: TCharacter); +procedure TSynAutoComplete.EditorKeyPress(Sender: TObject; var Key: char); var i: integer; begin diff --git a/components/synedit/synedit.pp b/components/synedit/synedit.pp index 861f9f6eee..ac6dc0241c 100644 --- a/components/synedit/synedit.pp +++ b/components/synedit/synedit.pp @@ -131,13 +131,13 @@ type of object; THookedCommandEvent = procedure(Sender: TObject; AfterProcessing: boolean; - var Handled: boolean; var Command: TSynEditorCommand; var AChar: TCharacter; + var Handled: boolean; var Command: TSynEditorCommand; var AChar: char; Data: pointer; HandlerData: pointer) of object; TPaintEvent = procedure(Sender: TObject; ACanvas: TCanvas) of object; TProcessCommandEvent = procedure(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TCharacter; Data: pointer) of object; + var Command: TSynEditorCommand; var AChar: char; Data: pointer) of object; TReplaceTextEvent = procedure(Sender: TObject; const ASearch, AReplace: string; Line, Column: integer; var ReplaceAction: TSynReplaceAction) of object; @@ -510,7 +510,7 @@ type procedure InvalidateBracketHighlight(OnlyIfCaretMoved: boolean); {$ENDIF} procedure KeyDown(var Key: Word; Shift: TShiftState); override; - procedure KeyPress(var Key: TCharacter); override; + procedure KeyPress(var Key: char); override; {$IFDEF SYN_LAZARUS} procedure KeyUp(var Key : Word; Shift : TShiftState); override; {$ENDIF} @@ -532,7 +532,7 @@ type procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure NotifyHookedCommandHandlers(AfterProcessing: boolean; - var Command: TSynEditorCommand; var AChar: Tcharacter; Data: pointer); virtual; + var Command: TSynEditorCommand; var AChar: char; Data: pointer); virtual; procedure Paint; override; procedure PaintGutter(AClip: TRect; FirstLine, LastLine: integer); virtual; procedure PaintTextLines(AClip: TRect; FirstLine, LastLine, @@ -563,14 +563,14 @@ type {$ENDIF} SavedCanvas: TCanvas; // the normal TCustomControl canvas during paint procedure DoOnClearBookmark(var Mark: TSynEditMark); virtual; // djlp - 2000-08-29 - procedure DoOnCommandProcessed(Command: TSynEditorCommand; AChar: TCharacter; + procedure DoOnCommandProcessed(Command: TSynEditorCommand; AChar: char; Data: pointer); virtual; // no method DoOnDropFiles, intercept the WM_DROPFILES instead procedure DoOnGutterClick(X, Y: integer); virtual; procedure DoOnPaint; virtual; procedure DoOnPlaceMark(var Mark: TSynEditMark); virtual; procedure DoOnProcessCommand(var Command: TSynEditorCommand; - var AChar: TCharacter; Data: pointer); virtual; + var AChar: char; Data: pointer); virtual; function DoOnReplaceText(const ASearch, AReplace: string; Line, Column: integer): TSynReplaceAction; virtual; function DoOnSpecialLineColors(Line: integer; @@ -589,7 +589,7 @@ type procedure ClearAll; procedure ClearBookMark(BookMark: Integer); procedure ClearSelection; - procedure CommandProcessor(Command: TSynEditorCommand; AChar: TCharacter; + procedure CommandProcessor(Command: TSynEditorCommand; AChar: char; Data: pointer); virtual; procedure ClearUndo; procedure CopyToClipboard; @@ -604,7 +604,7 @@ type {$IFDEF SYN_COMPILER_4_UP} function ExecuteAction(ExeAction: TBasicAction): boolean; override; {$ENDIF} - procedure ExecuteCommand(Command: TSynEditorCommand; AChar: TCharacter; + procedure ExecuteCommand(Command: TSynEditorCommand; AChar: char; Data: pointer); virtual; function GetBookMark(BookMark: integer; var X, Y: integer): boolean; function GetHighlighterAttriAtRowCol(XY: TPoint; var Token: string; @@ -1826,7 +1826,7 @@ begin GutterChanged(Self); end; -procedure TCustomSynEdit.KeyPress(var Key: TCharacter); +procedure TCustomSynEdit.KeyPress(var Key: char); begin {$IFDEF SYN_MBCSSUPPORT} if (fImeCount > 0) then begin @@ -5788,7 +5788,7 @@ begin end; procedure TCustomSynEdit.CommandProcessor(Command: TSynEditorCommand; - AChar: TCharacter; Data: pointer); + AChar: char; Data: pointer); begin {$IFDEF VerboseKeys} DebugLn('[TCustomSynEdit.CommandProcessor] ',Command @@ -5810,7 +5810,7 @@ begin DoOnCommandProcessed(Command, AChar, Data); end; -procedure TCustomSynEdit.ExecuteCommand(Command: TSynEditorCommand; AChar: TCharacter; +procedure TCustomSynEdit.ExecuteCommand(Command: TSynEditorCommand; AChar: char; Data: pointer); const ALPHANUMERIC = DIGIT + ALPHA_UC + ALPHA_LC; @@ -6468,14 +6468,14 @@ begin end; procedure TCustomSynEdit.DoOnCommandProcessed(Command: TSynEditorCommand; - AChar: TCharacter; Data: pointer); + AChar: char; Data: pointer); begin if Assigned(fOnCommandProcessed) then fOnCommandProcessed(Self, Command, AChar, Data); end; procedure TCustomSynEdit.DoOnProcessCommand(var Command: TSynEditorCommand; - var AChar: TCharacter; Data: pointer); + var AChar: char; Data: pointer); begin if Command < ecUserFirst then begin if Assigned(FOnProcessCommand) then @@ -8123,7 +8123,7 @@ begin end; procedure TCustomSynEdit.NotifyHookedCommandHandlers(AfterProcessing: boolean; - var Command: TSynEditorCommand; var AChar: TCharacter; Data: pointer); + var Command: TSynEditorCommand; var AChar: char; Data: pointer); var Handled: boolean; i: integer; diff --git a/components/synedit/syneditautocomplete.pp b/components/synedit/syneditautocomplete.pp index d317924598..9003b64cf3 100644 --- a/components/synedit/syneditautocomplete.pp +++ b/components/synedit/syneditautocomplete.pp @@ -83,7 +83,7 @@ type procedure SetAutoCompleteList(Value: TStrings); virtual; procedure SetEditor(Value: TCustomSynEdit); procedure SynEditCommandHandler(Sender: TObject; AfterProcessing: boolean; - var Handled: boolean; var Command: TSynEditorCommand; var AChar: TCharacter; + var Handled: boolean; var Command: TSynEditorCommand; var AChar: char; Data: pointer; HandlerData: pointer); public constructor Create(AOwner: TComponent); override; @@ -563,7 +563,7 @@ end; procedure TCustomSynAutoComplete.SynEditCommandHandler(Sender: TObject; AfterProcessing: boolean; var Handled: boolean; - var Command: TSynEditorCommand; var AChar: TCharacter; Data: pointer; + var Command: TSynEditorCommand; var AChar: char; Data: pointer; HandlerData: pointer); begin if not AfterProcessing and not Handled and (Command = ecAutoCompletion) then diff --git a/components/synedit/syneditplugins.pas b/components/synedit/syneditplugins.pas index 3fd1bd5e57..29d853f8db 100644 --- a/components/synedit/syneditplugins.pas +++ b/components/synedit/syneditplugins.pas @@ -89,7 +89,7 @@ type procedure UnHookEditor(aEditor: TCustomSynEdit; aCommandID: TSynEditorCommand; aShortCut: TShortCut); procedure OnCommand(Sender: TObject; AfterProcessing: boolean; - var Handled: boolean; var Command: TSynEditorCommand; var aChar: TCharacter; + var Handled: boolean; var Command: TSynEditorCommand; var aChar: char; Data: pointer; HandlerData: pointer); virtual; abstract; end; @@ -134,7 +134,7 @@ type protected procedure SetCurrentString(const Value: String); virtual; procedure OnCommand(Sender: TObject; AfterProcessing: boolean; - var Handled: boolean; var Command: TSynEditorCommand; var aChar: TCharacter; + var Handled: boolean; var Command: TSynEditorCommand; var aChar: char; Data: pointer; HandlerData: pointer); override; procedure DoExecute; override; procedure DoAccept; override; @@ -485,7 +485,7 @@ end; procedure TAbstractSynCompletion.OnCommand(Sender: TObject; AfterProcessing: boolean; var Handled: boolean; - var Command: TSynEditorCommand; var aChar: TCharacter; Data, + var Command: TSynEditorCommand; var aChar: char; Data, HandlerData: pointer); var iString: String; diff --git a/components/synedit/synmacrorecorder.pas b/components/synedit/synmacrorecorder.pas index 3b15d10580..cd77113204 100644 --- a/components/synedit/synmacrorecorder.pas +++ b/components/synedit/synmacrorecorder.pas @@ -204,7 +204,7 @@ type procedure DoAddEditor(aEditor: TCustomSynEdit); override; procedure DoRemoveEditor(aEditor: TCustomSynEdit); override; procedure OnCommand(Sender: TObject; AfterProcessing: boolean; - var Handled: boolean; var Command: TSynEditorCommand; var aChar: TCharacter; + var Handled: boolean; var Command: TSynEditorCommand; var aChar: char; Data: pointer; HandlerData: pointer); override; function CreateMacroEvent(aCmd: TSynEditorCommand): TSynMacroEvent; protected @@ -502,7 +502,7 @@ end; procedure TCustomSynMacroRecorder.OnCommand(Sender: TObject; AfterProcessing: boolean; var Handled: boolean; - var Command: TSynEditorCommand; var aChar: TCharacter; Data, + var Command: TSynEditorCommand; var aChar: char; Data, HandlerData: pointer); var iEvent: TSynMacroEvent; diff --git a/ide/uniteditor.pp b/ide/uniteditor.pp index 90a0b5f2ae..fa9d61c7df 100644 --- a/ide/uniteditor.pp +++ b/ide/uniteditor.pp @@ -169,11 +169,11 @@ type Procedure ReParent(AParent: TWinControl); Procedure ProcessCommand(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TCharacter; Data: pointer); + var Command: TSynEditorCommand; var AChar: char; Data: pointer); Procedure ProcessUserCommand(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TCharacter; Data: pointer); + var Command: TSynEditorCommand; var AChar: char; Data: pointer); Procedure UserCommandProcessed(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TCharacter; Data: pointer); + var Command: TSynEditorCommand; var AChar: char; Data: pointer); Procedure ccOnTimer(sender: TObject); Procedure ccAddMessage(Texts: String); @@ -458,10 +458,10 @@ type procedure MoveActivePageLeft; procedure MoveActivePageRight; Procedure ProcessParentCommand(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TCharacter; Data: pointer; + var Command: TSynEditorCommand; var AChar: char; Data: pointer; var Handled: boolean); Procedure ParentCommandProcessed(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TCharacter; Data: pointer; + var Command: TSynEditorCommand; var AChar: char; Data: pointer; var Handled: boolean); // marks @@ -906,7 +906,7 @@ begin end; Procedure TSourceEditor.ProcessCommand(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TCharacter; Data: pointer); + var Command: TSynEditorCommand; var AChar: char; Data: pointer); // these are normal commands for synedit, define extra actions here // otherwise use ProcessUserCommand begin @@ -966,7 +966,7 @@ begin end; Procedure TSourceEditor.ProcessUserCommand(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TCharacter; Data: pointer); + var Command: TSynEditorCommand; var AChar: char; Data: pointer); // define all extra keys here, that should are not handled by synedit var I: Integer; @@ -1136,7 +1136,7 @@ Begin end; Procedure TSourceEditor.UserCommandProcessed(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TCharacter; Data: pointer); + var Command: TSynEditorCommand; var AChar: char; Data: pointer); var Handled: boolean; begin Handled:=true; @@ -3863,7 +3863,7 @@ end; procedure TSourceNotebook.ViewCallStackClick(Sender: TObject); var Command: TSynEditorCommand; - AChar: TCharacter; + AChar: char; Data: pointer; Handled: boolean; begin @@ -4197,7 +4197,7 @@ Begin end; Procedure TSourceNotebook.ProcessParentCommand(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TCharacter; Data: pointer; + var Command: TSynEditorCommand; var AChar: char; Data: pointer; var Handled: boolean); begin FProcessingCommand:=true; @@ -4270,7 +4270,7 @@ begin end; Procedure TSourceNotebook.ParentCommandProcessed(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TCharacter; Data: pointer; + var Command: TSynEditorCommand; var AChar: char; Data: pointer; var Handled: boolean); begin if Assigned(FOnUserCommandProcessed) then begin diff --git a/lcl/controls.pp b/lcl/controls.pp index f829eadbd4..e7206e6ebd 100644 --- a/lcl/controls.pp +++ b/lcl/controls.pp @@ -330,7 +330,8 @@ type TKeyEvent = procedure(Sender: TObject; var Key: Word; Shift:TShiftState) of Object; - TKeyPressEvent = procedure(Sender: TObject; var Key: TCharacter) of Object; + TKeyPressEvent = procedure(Sender: TObject; var Key: char) of Object; + TUTF8KeyPressEvent = procedure(Sender: TObject; var UTF8Key: string) of Object; TMouseEvent = Procedure(Sender: TOBject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object; @@ -1319,6 +1320,7 @@ type FOnEnter: TNotifyEvent; FOnExit: TNotifyEvent; FOnUnDock: TUnDockEvent; + FOnUTF8KeyPress: TUTF8KeyPressEvent; FParentWindow: hwnd; FParentCtl3D: Boolean; FRealizeBoundsLockCount: integer; @@ -1425,13 +1427,15 @@ type function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; dynamic; function DoKeyDown(var Message: TLMKey): Boolean; function DoKeyPress(var Message: TLMKey): Boolean; + function DoUTF8KeyPress(var UTF8Key: string): boolean; dynamic; function DoKeyUp(var Message: TLMKey): Boolean; procedure ControlKeyDown(var Key: Word; Shift: TShiftState); dynamic; procedure KeyDown(var Key: Word; Shift: TShiftState); dynamic; procedure KeyDownBeforeInterface(var Key: Word; Shift: TShiftState); dynamic; procedure KeyDownAfterInterface(var Key: Word; Shift: TShiftState); dynamic; - procedure KeyPress(var Key: TCharacter); dynamic; + procedure KeyPress(var Key: char); dynamic; procedure KeyUp(var Key: Word; Shift: TShiftState); dynamic; + procedure UTF8KeyPress(var UTF8Key: string); dynamic; protected Function FindNextControl(CurrentControl: TControl; GoForward, CheckTabStop, CheckParent, OnlyWinControls @@ -1498,6 +1502,7 @@ type property OnExit: TNotifyEvent read FOnExit write FOnExit; property OnKeyDown: TKeyEvent read FOnKeyDown write FOnKeyDown; property OnKeyPress: TKeyPressEvent read FOnKeyPress write FOnKeyPress; + property OnUTF8KeyPress: TUTF8KeyPressEvent read FOnUTF8KeyPress write FOnUTF8KeyPress; property OnKeyUp: TKeyEvent read FOnKeyUp write FOnKeyUp; property OnMouseWheel: TMouseWheelEvent read FOnMouseWheel write FOnMouseWheel; property OnMouseWheelDown: TMouseWheelUpDownEvent read FOnMouseWheelDown write FOnMouseWheelDown; @@ -1556,6 +1561,7 @@ type procedure HandleNeeded; function BrushCreated: Boolean; procedure EraseBackground(DC: HDC); virtual; + function UTF8KeyPressMessage(var UTF8Key: string; RepeatCount: integer): boolean; dynamic; public property BoundsLockCount: integer read FBoundsLockCount; property Brush: TBrush read GetBrush; @@ -2405,6 +2411,9 @@ end. { ============================================================================= $Log$ + Revision 1.242 2004/08/30 16:37:58 mattias + added OnUTF8KeyPresss + Revision 1.241 2004/08/30 16:11:02 mattias changed GTK2 IFDEF to USE_UTF8BIDI_LCL diff --git a/lcl/dbctrls.pp b/lcl/dbctrls.pp index 9bd7d55b0c..5174087bb3 100644 --- a/lcl/dbctrls.pp +++ b/lcl/dbctrls.pp @@ -132,7 +132,7 @@ Type procedure SetDataField(Value: string); procedure SetDataSource(Value: TDataSource); protected - procedure KeyPress(var Key: TCharacter); override; + procedure KeyPress(var Key: char); override; procedure Loaded; override; procedure Notification(AComponent: TComponent; @@ -260,7 +260,7 @@ Type procedure SetDataField(Value: string); procedure SetDataSource(Value: TDataSource); protected - procedure KeyPress(var Key: TCharacter); override; + procedure KeyPress(var Key: char); override; procedure Loaded; override; procedure Notification(AComponent: TComponent; @@ -1248,6 +1248,9 @@ end. { ============================================================================= $Log$ + Revision 1.22 2004/08/30 16:37:58 mattias + added OnUTF8KeyPresss + Revision 1.21 2004/08/30 16:11:02 mattias changed GTK2 IFDEF to USE_UTF8BIDI_LCL diff --git a/lcl/extdlgs.pas b/lcl/extdlgs.pas index 23b842ac1b..6df3a7d65e 100644 --- a/lcl/extdlgs.pas +++ b/lcl/extdlgs.pas @@ -134,7 +134,7 @@ type function TitleStored: Boolean; protected procedure Change; dynamic; - procedure CalcKey(var Key: TCharacter); dynamic; + procedure CalcKey(var Key: char); dynamic; procedure DisplayChange; dynamic; public constructor Create(AOwner: TComponent); override; @@ -163,7 +163,7 @@ type FCalcPanel: TPanel; FDisplayPanel: TPanel; FDisplayLabel: TLabel; - procedure FormKeyPress(Sender: TObject; var Key: TCharacter); + procedure FormKeyPress(Sender: TObject; var Key: char); procedure CopyItemClick(Sender: TObject); function GetValue: Double; procedure PasteItemClick(Sender: TObject); @@ -171,7 +171,7 @@ type protected procedure OkClick(Sender: TObject); procedure CancelClick(Sender: TObject); - procedure CalcKey(Sender: TObject; var Key: TCharacter); + procedure CalcKey(Sender: TObject; var Key: char); procedure DisplayChange(Sender: TObject); Procedure InitForm(ALayout : TCalculatorLayout); virtual; Property MainPanel: TPanel Read FMainPanel; @@ -573,7 +573,7 @@ type FControl: TControl; procedure SetCalcText(const Value: string); procedure CheckFirst; - procedure CalcKey(Key: TCharacter); + procedure CalcKey(Key: char); procedure Clear; procedure Error; procedure SetDisplay(R: Double); @@ -586,7 +586,7 @@ type procedure TextChanged; virtual; public constructor CreateLayout(AOwner: TComponent; ALayout: TCalculatorLayout); - procedure CalcKeyPress(Sender: TObject; var Key: TCharacter); + procedure CalcKeyPress(Sender: TObject; var Key: char); procedure Copy; procedure Paste; Function WorkingPrecision : Integer; @@ -751,7 +751,7 @@ begin end; -procedure TCalculatorPanel.CalcKey(Key: TCharacter); +procedure TCalculatorPanel.CalcKey(Key: char); var R: Double; begin @@ -853,7 +853,7 @@ begin FOperator:='='; end; -procedure TCalculatorPanel.CalcKeyPress(Sender: TObject; var Key: TCharacter); +procedure TCalculatorPanel.CalcKeyPress(Sender: TObject; var Key: char); var Btn: TCustomSpeedButton; @@ -1010,7 +1010,7 @@ begin else Result:=FValue; end; -procedure TCalculatorDialog.CalcKey(var Key: TCharacter); +procedure TCalculatorDialog.CalcKey(var Key: char); begin if Assigned(FOnCalcKey) then FOnCalcKey(Self, Key); end; @@ -1133,7 +1133,7 @@ begin end; -procedure TCalculatorForm.FormKeyPress(Sender: TObject; var Key: TCharacter); +procedure TCalculatorForm.FormKeyPress(Sender: TObject; var Key: char); begin TCalculatorPanel(FCalcPanel).CalcKeyPress(Sender, Key); end; @@ -1168,7 +1168,7 @@ begin ModalResult:=mrCancel; end; -procedure TCalculatorForm.CalcKey(Sender: TObject; var Key: TCharacter); +procedure TCalculatorForm.CalcKey(Sender: TObject; var Key: char); begin if (Owner <> nil) and (Owner is TCalculatorDialog) then TCalculatorDialog(Owner).CalcKey(Key); diff --git a/lcl/include/dbedit.inc b/lcl/include/dbedit.inc index de5f41a0c9..eca715b2f5 100644 --- a/lcl/include/dbedit.inc +++ b/lcl/include/dbedit.inc @@ -134,7 +134,7 @@ begin end; { Protected Methods} -procedure TDBEdit.KeyPress(var Key: TCharacter); +procedure TDBEdit.KeyPress(var Key: char); begin inherited KeyPress(Key); case Key of @@ -237,6 +237,9 @@ end; { ============================================================================= $Log$ + Revision 1.9 2004/08/30 16:37:58 mattias + added OnUTF8KeyPresss + Revision 1.8 2004/08/22 22:57:35 mattias added OnActiveChange from Joost diff --git a/lcl/include/dblistbox.inc b/lcl/include/dblistbox.inc index 97611181f5..46bece4bbf 100644 --- a/lcl/include/dblistbox.inc +++ b/lcl/include/dblistbox.inc @@ -110,7 +110,7 @@ begin end; { Protected Methods} -procedure TDBListBox.KeyPress(var Key: TCharacter); +procedure TDBListBox.KeyPress(var Key: char); begin inherited KeyPress(Key); case Key of @@ -196,6 +196,9 @@ end; { ============================================================================= $Log$ + Revision 1.7 2004/08/30 16:37:58 mattias + added OnUTF8KeyPresss + Revision 1.6 2004/08/30 10:49:20 mattias fixed focus catch for combobox csDropDownList diff --git a/lcl/include/wincontrol.inc b/lcl/include/wincontrol.inc index f4489899d7..84c60863e0 100644 --- a/lcl/include/wincontrol.inc +++ b/lcl/include/wincontrol.inc @@ -1626,6 +1626,19 @@ begin FillRect(DC,ARect,Brush.Handle) end; +{------------------------------------------------------------------------------ + function TWinControl.UTF8KeyPressMessage(var UTF8Key: string; + RepeatCount: integer): boolean; + + Called by the interface after the navigation and specials keys are handled + (e.g. after KeyDown). +------------------------------------------------------------------------------} +function TWinControl.UTF8KeyPressMessage(var UTF8Key: string; + RepeatCount: integer): boolean; +begin + Result:=(RepeatCount>0) and DoUTF8KeyPress(UTF8Key) +end; + {------------------------------------------------------------------------------ TWinControl ControlAtPos Params: const Pos : TPoint @@ -2105,19 +2118,27 @@ begin end; {------------------------------------------------------------------------------ - TWinControl KeyUp + TWinControl KeyPress ------------------------------------------------------------------------------} -Procedure TWinControl.KeyUp(var Key: Word; shift : TShiftState); +Procedure TWinControl.KeyPress(var Key: char); begin - if Assigned(FOnKeyUp) then FOnKeyUp(Self, Key, Shift); + if Assigned(FOnKeyPress) then FOnKeyPress(Self, Key); end; {------------------------------------------------------------------------------ TWinControl KeyPress ------------------------------------------------------------------------------} -Procedure TWinControl.KeyPress(var Key: TCharacter); +procedure TWinControl.UTF8KeyPress(var UTF8Key: string); begin - if Assigned(FOnKeyPress) then FOnKeyPress(Self, Key); + if Assigned(FOnUTF8KeyPress) then FOnUTF8KeyPress(Self, UTF8Key); +end; + +{------------------------------------------------------------------------------ + TWinControl KeyUp +------------------------------------------------------------------------------} +Procedure TWinControl.KeyUp(var Key: Word; shift : TShiftState); +begin + if Assigned(FOnKeyUp) then FOnKeyUp(Self, Key, Shift); end; {------------------------------------------------------------------------------ @@ -2217,24 +2238,34 @@ begin Result := False; end; -{------------------------------------------------------------------------------} -{ TWinControl DoKeyPress } -{------------------------------------------------------------------------------} +{------------------------------------------------------------------------------ + TWinControl DoKeyPress + + Returns True if key handled +------------------------------------------------------------------------------} Function TWinControl.DoKeyPress(Var Message : TLMKey): Boolean; var F: TCustomForm; - C: TCharacter; + C: char; + AParent: TWinControl; begin Result := True; - F := GetParentForm(Self); - if (F <> nil) - and (F <> Self) - and (F.KeyPreview) - and (TWinControl(F).DoKeyPress(Message)) then Exit; + + // let each parent form with keypreview handle the key + AParent:=Parent; + while (AParent<>nil) do begin + if (AParent is TCustomForm) then begin + F := TCustomForm(AParent); + if (F.KeyPreview) + and (F.DoKeyPress(Message)) then Exit; + end; + AParent:=AParent.Parent; + end; + if not (csNoStdEvents in ControlStyle) then with Message do begin - C := TCharacter(CharCode); + C := char(CharCode); KeyPress(C); CharCode := Ord(C); if Char(CharCode) = #0 then Exit; @@ -2243,20 +2274,60 @@ begin Result := False; End; -{------------------------------------------------------------------------------} -{ TWinControl DoKeyUp } -{------------------------------------------------------------------------------} +{------------------------------------------------------------------------------ + TWinControl DoUTF8KeyPress + + Returns True if key handled +------------------------------------------------------------------------------} +function TWinControl.DoUTF8KeyPress(var UTF8Key: string): boolean; +var + AParent: TWinControl; + F: TCustomForm; +begin + Result:=true; + + // let each parent form with keypreview handle the key + AParent:=Parent; + while (AParent<>nil) do begin + if (AParent is TCustomForm) then begin + F := TCustomForm(AParent); + if (F.KeyPreview) + and (F.DoUTF8KeyPress(UTF8Key)) then Exit; + end; + AParent:=AParent.Parent; + end; + + if not (csNoStdEvents in ControlStyle) then begin + UTF8KeyPress(UTF8Key); + if UTF8Key='' then exit; + end; + + Result := False; +end; + +{------------------------------------------------------------------------------ + TWinControl DoKeyUp + + Returns True if key handled +------------------------------------------------------------------------------} Function TWinControl.DoKeyUp(Var Message : TLMKey): Boolean; var F: TCustomForm; ShiftState: TShiftState; + AParent: TWinControl; begin Result := True; - F := GetParentForm(Self); - if (F <> nil) - and (F <> Self) - and (F.KeyPreview) - and (TWinControl(F).DoKeyUp(Message)) then Exit; + + // let each parent form with keypreview handle the key + AParent:=Parent; + while (AParent<>nil) do begin + if (AParent is TCustomForm) then begin + F := TCustomForm(AParent); + if (F.KeyPreview) + and (F.DoKeyUp(Message)) then Exit; + end; + AParent:=AParent.Parent; + end; with Message do begin @@ -3827,6 +3898,9 @@ end; { ============================================================================= $Log$ + Revision 1.268 2004/08/30 16:37:58 mattias + added OnUTF8KeyPresss + Revision 1.267 2004/08/30 10:49:20 mattias fixed focus catch for combobox csDropDownList diff --git a/lcl/lcltype.pp b/lcl/lcltype.pp index d68fc4188a..02dd6c7a53 100644 --- a/lcl/lcltype.pp +++ b/lcl/lcltype.pp @@ -52,11 +52,6 @@ uses Classes, SysUtils; type -{$IFDEF USE_UTF8BIDI_LCL} - TCharacter = WideChar; -{$ELSE USE_UTF8BIDI_LCL} - TCharacter = Char; -{$ENDIF USE_UTF8BIDI_LCL} PRect = ^TRect; UINT = LongWord; PPoint = ^TPoint; @@ -2238,6 +2233,9 @@ end. { $Log$ + Revision 1.65 2004/08/30 16:37:58 mattias + added OnUTF8KeyPresss + Revision 1.64 2004/08/30 16:11:02 mattias changed GTK2 IFDEF to USE_UTF8BIDI_LCL diff --git a/lcl/lmessages.pp b/lcl/lmessages.pp index 3e751ca01e..4313322117 100644 --- a/lcl/lmessages.pp +++ b/lcl/lmessages.pp @@ -358,8 +358,6 @@ const // End of Windows Compatability and messages //------------- - - type UINT = LongWord; BOOL = Boolean; @@ -1058,6 +1056,9 @@ end. { $Log$ + Revision 1.72 2004/08/30 16:37:58 mattias + added OnUTF8KeyPresss + Revision 1.71 2004/08/25 17:08:10 micha use new lcl interface methods instead of messages (for win32; twscustomlistview) diff --git a/lcl/maskedit.pp b/lcl/maskedit.pp index 7c529f6438..0970836fde 100644 --- a/lcl/maskedit.pp +++ b/lcl/maskedit.pp @@ -82,8 +82,8 @@ type FOldValue: string; function IsCharAlpha(AChar: Char): Boolean; function IsCharAlphaNumeric(AChar: Char): Boolean; - function DoInputChar(var NewChar: TCharacter; MaskOffset: Integer): Boolean; - function InputChar(var NewChar: TCharacter; Offset: Integer): Boolean; + function DoInputChar(var NewChar: char; MaskOffset: Integer): Boolean; + function InputChar(var NewChar: char; Offset: Integer): Boolean; function DeleteSelection(var Value: string; Offset: Integer; Len: Integer): Boolean; function InputString(var Value: string; const NewValue: string; @@ -95,7 +95,7 @@ type function GetMasked: Boolean; function GetMaskText: string; function GetMaxLength: Integer; - function CharKeys(var CharCode: TCharacter): Boolean; + function CharKeys(var CharCode: char): Boolean; procedure SetEditText(const Value: string); procedure SetEditMask(const Value: string); procedure SetMaxLength(Value: Integer); @@ -111,7 +111,7 @@ type procedure SetCursor(Pos: Integer); procedure KeyDown(var Key: Word; Shift: TShiftState); override; procedure KeyUp(var Key: Word; Shift: TShiftState); override; - procedure KeyPress(var Key: TCharacter); override; + procedure KeyPress(var Key: char); override; function EditCanModify: Boolean; virtual; procedure MouseDown(Button: TMouseButton; Shift:TShiftState; X,Y:Integer); override; procedure MouseUp(Button: TMouseButton; Shift:TShiftState; X,Y:Integer); override; @@ -622,7 +622,7 @@ begin end; end; -procedure TCustomMaskEdit.KeyPress(var Key: TCharacter); +procedure TCustomMaskEdit.KeyPress(var Key: char); begin inherited KeyPress(Key); if IsMasked and (Key <> #0) and not (Char(Key) in [^V, ^X, ^C]) then @@ -843,7 +843,7 @@ begin end; end; -function TCustomMaskEdit.CharKeys(var CharCode: TCharacter): Boolean; +function TCustomMaskEdit.CharKeys(var CharCode: char): Boolean; var Txt: string; OldPos: Integer; @@ -1187,7 +1187,7 @@ begin end; end; -function TCustomMaskEdit.InputChar(var NewChar: TCharacter; Offset: Integer): Boolean; +function TCustomMaskEdit.InputChar(var NewChar: char; Offset: Integer): Boolean; var MaskOffset: Integer; CType: TMaskCharType; @@ -1237,7 +1237,7 @@ begin if AChar in MyCharSet then result := True; end; -function TCustomMaskEdit.DoInputChar(var NewChar: TCharacter; MaskOffset: Integer): Boolean; +function TCustomMaskEdit.DoInputChar(var NewChar: char; MaskOffset: Integer): Boolean; var Dir: TMaskDirectives; Str: string; @@ -1383,7 +1383,7 @@ var NewOffset, MaskOffset, Temp: Integer; CType: TMaskCharType; NewVal: string; - NewChar: TCharacter; + NewChar: char; begin Result := Offset; if NewValue = '' then Exit;