anchor.diff:      FSelStart: integer;
       FSelOffset: integer;
       FCursorPos: integer;
  -    FSpecialChar: integer;
       procedure   DoDropDown; override;
       function    GetText: string; virtual;
       function    HasText: boolean; virtual;
  
positive.code:   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
  
negative.code:   FDrawOffset       := 0;
    FSelectedItem     := -1;       // to allow typing if list is empty
    FNewItem          := False;
  
    CalculateInternalButtonRect;
  end;
  