anchor.diff:    i: integer;
   begin
     prevval   := FText;
  +  if FSpecialChar> -1 then
  +  begin
  +    case FSpecialChar of
  +      58536:
  +        case AText of
  +          'a':
  +            AText:= 'â';
  +          'e':
  +            AText:= 'ë';
  +          'i':
  +            AText:= 'ï';
  +          'o':
  +            AText:= 'ö';
  +          'u':
  +            AText:= 'ü';
  +        end;
  +      58462:
  +        case AText of
  +          'a':
  +            AText:= 'â';
  +          'e':
  +            AText:= 'ê';
  +          'i':
  +            AText:= 'î';
  +          'o':
  +            AText:= 'ô';
  +          'u':
  +            AText:= 'û';
  +        end;
  +    end;
  +    FSpecialChar:= -1;
  +  end;
     s         := AText;
     consumed  := False;
     if FText = '' then
  
positive.code:     FSelStart: integer;
      FSelOffset: integer;
      FCursorPos: integer;
      procedure   DoDropDown; override;
      function    GetText: string; virtual;
      function    HasText: boolean; virtual;
  
negative.code:   FDrawOffset       := 0;
    FSelectedItem     := -1;       // to allow typing if list is empty
    FNewItem          := False;
    FSpecialChar      := -1;
  
    CalculateInternalButtonRect;
  end;
  