anchor.diff:      procedure   SetText(const AValue: string); virtual;
       procedure   SetHeight(const AValue: TfpgCoord); override;
       procedure   SetWidth(const AValue: TfpgCoord); override;
  +    procedure   HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); override;
       procedure   HandleLMouseDown(x, y: integer; shiftstate: TShiftState); override;
       procedure   HandleLMouseUp(x, y: integer; shiftstate: TShiftState); override;
       procedure   HandleResize(awidth, aheight: TfpgCoord); override;
  
positive.code:   gfx_popupwindow;
  
  type
  
    TfpgAbstractComboBox = class(TfpgWidget)
    private
  
negative.code:   RePaint;
  end;
  
  procedure TfpgAbstractComboBox.HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean);
  var
    hasChanged: boolean;
  begin
    inherited HandleKeyPress(keycode, shiftstate, consumed);
    hasChanged := False;
    consumed := True;
    case keycode of
  
      keyDown:
         begin
           FocusItem := FocusItem + 1;
           hasChanged := True;
         end;
  
      keyUp:
         begin
           FocusItem := FocusItem - 1;
           hasChanged := True;
         end;
  
      else
      begin
        Consumed := False;
      end;
    end;
  
    if consumed then
      RePaint
    else
      inherited;
  
    if hasChanged then
      if Assigned(FOnChange) then
        FOnChange(self);
  end;
  
  procedure TfpgAbstractComboBox.CalculateInternalButtonRect;
  begin
    FInternalBtnRect.SetRect(Width - Min(Height, 20), 2, Min(Height, 20)-2, Height-4);
  