anchor.diff:      property    TabWidth: Integer read FTabWidth write SetTabWidth default 8;
       property    Tracking: Boolean read FTracking write FTracking default True;
       property    OnDrawLine: TfpgDrawLineEvent read FOnDrawLine write FOnDrawLine;
  +    property    OnFindText: TfpgFindText read FOnFindText write FOnFindText;
  +    property    OnSearchEnd: TfpgOnSearchEnd read FOnSearchEnd write FOnSearchEnd;
  +    property    OnReplaceText: TfpgReplaceText read FOnReplaceText write FOnReplaceText;
     public
       constructor Create(AOwner: TComponent); override;
       destructor  Destroy; override;
  
positive.code:     FLines: TStrings;
      CaretPos: TPoint;
      FOnDrawLine: TfpgDrawLineEvent;
      FScrollBarStyle: TfpgScrollStyle;
      MousePos: TPoint;
      FChrW: Integer;
  
negative.code:       ALineIndex: Integer; ACanvas: TfpgCanvas; ATextRect: TfpgRect;
        var AllowSelfDraw: Boolean) of object;
  
    TfpgFindText = procedure(Sender: TObject; FindPos: TPoint; var ScrollToWord: Boolean) of object;
  
    TfpgReplaceText = procedure(Sender: TObject; FindPos: TPoint; var ScrollToWord, ReplaceText: Boolean) of object;
  
    TfpgOnSearchEnd = procedure(Sender: TObject; FindIt, ReplaceMode: Boolean) of object;
  
  
    TfpgBaseTextEdit = class(TfpgWidget)
    private
  