Autocomplete ComboBox em Firemonkey - Delphi
Boa tarde!
Gostaria de saber se tem como criar a opção de autocomplete do combobox em firemonkey? Pois estou migrando da VCL e não consegui encontrar essa opção.
Gostaria de saber se tem como criar a opção de autocomplete do combobox em firemonkey? Pois estou migrando da VCL e não consegui encontrar essa opção.
Eduardo Ramos
Curtidas 0
Respostas
Fernando Wahl
26/11/2018
Bom dia Edu,
Não existe essa funcionalidade, mas você pode escrever o seu próprio.
Este código abaixo, é um exemplo para uma combobox,
{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;
Qualquer coisa, posta ai o código que fizer para a gente ir vendo e dar um olhada.
Até, abraços.
Não existe essa funcionalidade, mas você pode escrever o seu próprio.
Este código abaixo, é um exemplo para uma combobox,
{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;
Qualquer coisa, posta ai o código que fizer para a gente ir vendo e dar um olhada.
Até, abraços.
GOSTEI 0
Fernando Wahl
26/11/2018
Opa, de novo, da uma olhada nesse link acho que tb,m vai te ajudar:
http://codeverge.com/embarcadero.delphi.firemonkey/combobox-auto-complete/1059515
Até.
http://codeverge.com/embarcadero.delphi.firemonkey/combobox-auto-complete/1059515
Até.
GOSTEI 0