anchor.diff:      procedure   HandleMouseEnter; override;
       procedure   HandleMouseExit; override;
       procedure   HandleLMouseDown(x, y: integer; shiftstate: TShiftState); override;
  +    procedure   HandleMouseScroll(x, y: integer; shiftstate: TShiftState; delta: smallint); override;
       procedure   HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); override;
       procedure   HandleKeyChar(var AText: TfpgChar; var shiftstate: TShiftState; var consumed: boolean); override;
       { -- local widget functions -- }
  
positive.code: interface
  
  uses
    Classes, SysUtils, fpg_base, fpg_main, fpg_widget, fpg_panel,
    fpg_scrollbar;
  
  type
  
negative.code:   Invalidate;
  end;
  
  procedure TfpgBaseTextEdit.HandleMouseScroll(x, y: integer; shiftstate: TShiftState;
      delta: smallint);
  var
    msg: TfpgMessageParams;
  begin
    inherited HandleMouseScroll(x, y, shiftstate, delta);
    fillchar(msg, sizeof(msg), 0);  // zero out the record - initialize it
    msg.mouse.x := x;
    msg.mouse.y := y;
    msg.mouse.shiftstate := shiftstate;
    msg.mouse.delta := delta;
    fpgPostMessage(self, FVScrollBar, FPGM_SCROLL, msg);
  end;
  
  procedure TfpgBaseTextEdit.HandleKeyPress(var keycode: word;
      var shiftstate: TShiftState; var consumed: boolean);
  var
  