diff --git a/components/synedit/Source/SynEditMiscClasses.pas b/components/synedit/Source/SynEditMiscClasses.pas index a26b97e2..2eb6a594 100644 --- a/components/synedit/Source/SynEditMiscClasses.pas +++ b/components/synedit/Source/SynEditMiscClasses.pas @@ -328,6 +328,9 @@ type FInvalidKeys: THKInvalidKeys; FModifiers: THKModifiers; FPressedOnlyModifiers: Boolean; + FOnChange: TNotifyEvent; + FOnEnter: TNotifyEvent; + FOnExit: TNotifyEvent; procedure SetBorderStyle(const Value: TSynBorderStyle); procedure SetHotKey(const Value: TShortCut); procedure SetInvalidKeys(const Value: THKInvalidKeys); @@ -360,6 +363,9 @@ type property HotKey: TShortCut read FHotKey write SetHotKey default $0041; { Alt+A } property InvalidKeys: THKInvalidKeys read FInvalidKeys write SetInvalidKeys default [hcNone, hcShift]; property Modifiers: THKModifiers read FModifiers write SetModifiers default [hkAlt]; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + property OnEnter: TNotifyEvent read FOnEnter write FOnEnter; + property OnExit: TNotifyEvent read FOnExit write FOnExit; end; TSynEditSearchCustom = class(TComponent) @@ -1381,6 +1387,8 @@ begin end; Key := SavedKey; + if Assigned(FOnChange) then + FOnChange(Self); end; procedure TSynHotKey.KeyUp(var Key: Word; Shift: TShiftState); @@ -1429,6 +1437,10 @@ begin Canvas.Brush.Color := Color; InflateRect(r, -BorderWidth, -BorderWidth); Canvas.FillRect(r); + if Enabled then + Canvas.Font.Color := clWindowText + else + Canvas.Font.Color := clGrayText; TextRect(Canvas, r, BorderWidth + 1, BorderWidth + 1, Text); end; @@ -1493,6 +1505,8 @@ end; procedure TSynHotKey.WMKillFocus(var Msg: TWMKillFocus); begin DestroyCaret; + if Assigned(FOnExit) then + FOnExit(Self); end; procedure TSynHotKey.WMSetFocus(var Msg: TWMSetFocus); @@ -1501,6 +1515,8 @@ begin CreateCaret(Handle, 0, 1, -Canvas.Font.Height + 2); SetCaretPos(BorderWidth + 1 + TextWidth(Canvas, Text), BorderWidth + 1); ShowCaret(Handle); + if Assigned(FOnEnter) then + FOnEnter(Self); end; {$ENDIF}