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?
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?
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;
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 –
ü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. –