anchor.diff:    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);
  
positive.code:   gfx_popupwindow;
  
  type
  
    TfpgAbstractComboBox = class(TfpgWidget)
    private
  
negative.code:     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;
  