spiegel-keyman/windows/src/global/delphi/comp/KeymanDeveloperDebuggerMemo.pas
Marc Durdin b65b982584 Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121)
* Keyman for Windows 10.0 Open Source

* Squashed 'windows/src/ext/jedi/jedi/' content from commit f444ad2

git-subtree-dir: windows/src/ext/jedi/jedi
git-subtree-split: f444ad2da4693851e523f1ea6bd541f701904c24

* Squashed 'windows/src/ext/jedi/jcl/' content from commit d63d3c9fd

git-subtree-dir: windows/src/ext/jedi/jcl
git-subtree-split: d63d3c9fd9ff84efdd8159084ec6a60313644243

* Squashed 'windows/src/ext/jedi/jvcl/' content from commit bee19f3b4

git-subtree-dir: windows/src/ext/jedi/jvcl
git-subtree-split: bee19f3b46909fde2fa92c06cd2706f41d99f6c3

* Add required .res files

* Add required .res files

* Add docbook files (forced)

* Add required libxslt

* Add required jedi files

* Add installation files

* Tweak .gitignore for open

* CI

* Remove KMW from Developer source (#122)

* Remove KMW from Developer source (copies during build)

* Remove KMW from Developer source (copies during build)

* Remove KMW from Developer source (copies during build)

* Fixup release build and copy license, readme from kmw during build

* Remove obsolete build help documentation

* Keyman Engine 10 on Windows regression for shift states (#129)

* Improve #128 -- cleaner debug messages

* Fixes #127, shift state now resets correctly; and more work for #128

* Fixes #130 (#131)
2017-07-25 10:53:06 +07:00

96 lines
2.3 KiB
ObjectPascal

(*
Name: KeymanDeveloperDebuggerMemo
Copyright: Copyright (C) 2003-2017 SIL International.
Documentation:
Description:
Create Date: 8 Jun 2012
Modified Date: 8 Jun 2012
Authors: mcdurdin
Related Files:
Dependencies:
Bugs:
Todo:
Notes:
History: 08 Jun 2012 - mcdurdin - I3323 - V9.0 - Extract debug-related code TPlus-Memo into subclass
*)
unit KeymanDeveloperDebuggerMemo; // I3323
interface
uses
System.Classes,
Winapi.Messages,
Winapi.Windows,
KeymanDeveloperMemo
{$IFDEF USE_PLUSMEMO}
,
PlusMemo,
PMSupport
{$ENDIF}
;
type
TPlusMemoDebuggerMessageEvent = procedure(Sender: TObject; var Message: TMessage; var Handled: Boolean) of object;
TKeymanDeveloperDebuggerMemo = class(TKeymanDeveloperMemo)
private
FOnMessage: TPlusMemoDebuggerMessageEvent;
FAllowUnicodeInput: Boolean;
procedure SetAllowUnicode(const Value: Boolean);
protected
procedure CreateHandle; override;
procedure WndProc(var Message: TMessage); override;
public
constructor Create(AOwner: TComponent); override;
published
property AllowUnicode: Boolean read FAllowUnicodeInput write SetAllowUnicode default True;
property OnMessage: TPlusMemoDebuggerMessageEvent read FOnMessage write FOnMessage;
end;
procedure Register;
implementation
{ TPlusMemoDebugger }
constructor TKeymanDeveloperDebuggerMemo.Create(AOwner: TComponent);
begin
FAllowUnicodeInput := True;
inherited Create(AOwner);
end;
procedure TKeymanDeveloperDebuggerMemo.CreateHandle;
begin
inherited;
if FAllowUnicodeInput
then SetWindowLongW(Handle, GWL_WNDPROC, GetWindowLong(Handle, GWL_WNDPROC))
else SetWindowLongA(Handle, GWL_WNDPROC, GetWindowLong(Handle, GWL_WNDPROC));
end;
procedure TKeymanDeveloperDebuggerMemo.SetAllowUnicode(const Value: Boolean);
begin
if Value <> fAllowUnicodeInput then
begin
fAllowUnicodeInput := Value;
if HandleAllocated then RecreateWnd;
end;
end;
procedure TKeymanDeveloperDebuggerMemo.WndProc(var Message: TMessage);
var
b: Boolean;
begin
b := False;
if Assigned(FOnMessage) then
FOnMessage(Self, Message, b);
if not b then inherited WndProc(Message);
end;
procedure Register;
begin
RegisterComponents('Keyman', [TKeymanDeveloperDebuggerMemo]);
end;
end.