2016-06-03 14 views
1

VCL.TComboBox verfügt über eine Eigenschaft AutoComplete, die Autovervollständigung für den Bearbeitungsteil des Steuerelements bereitstellt.AutoComplete-Funktionalität für TCMoombit von FireMonkey

Bietet FMX.TComboEdit diese Funktionalität?

+0

übereinstimmen Ich denke, die Antwort ist nein, aber bevor das Rad neu zu erfinden, möchte ich sicher sein, das ist einfach nicht umbenannt oder etwas ähnliches. –

Antwort

1

Es existiert nicht, aber Sie können Ihre eigenen schreiben.

Dies ist ein Beispiel für eine Combobox, aber Sie können den Code ändern comboedit

{Combobox default behavior} 

TCombobox = class(FMX.ListBox.TComboBox) 
    private 
    LastTimeKeydown:TDatetime; 
    Keys:string; 
    protected 
    procedure KeyDown(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState);override; 
    end; 

{ TCombobox } 

procedure TCombobox.KeyDown(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState); 
var 
    aStr:string; 
    I: Integer; 
begin 
    if key=vkReturn then exit; 
    if (keychar in [chr(48)..chr(57)]) or (keychar in [chr(65)..chr(90)]) or (keychar in [chr(97)..chr(122)]) then begin 
    //combination of keys? (500) is personal reference 
    if MilliSecondsBetween(LastTimeKeydown,Now)<500 then 
     keys:=keys+keychar 
    else // start new combination 
     keys:=keychar; 
    //last time key was pressed 
    LastTimeKeydown:=Now; 
    //lookup item 
    for I := 0 to count-1 do 
     if uppercase(copy(items[i],0,keys.length))=uppercase(keys) then begin 
     itemindex:=i; 
     exit; //first item found is good 
     end; 
    end; 
    inherited; 
end; 
+0

on Schleife 'für I: = 0 bis count-1 do wenn Großbuchstaben (Kopie (Elemente [i], 0, keys.length)) = Großbuchstaben (Schlüssel) dann beginne itemindex: = i; Pause; // erstes gefundenes Element ist gut end; 'exchange' exit' durch 'break' ersetzen. 'Exit' ist kein guter Weg um Schleifen zu brechen –

Verwandte Themen