Wenn es um eine Autovervollständigen Funktion im eigenen Programm geht würde ich anstelle eines Edits eine Combobox nehmen und je nach eingegebenen Text die verfügbaren Einträge der Combobox anpassen. Die verfügbaren Einträge müssen natürlich dann getrennt abgespeichert werden.
Oder wenn es keine Auswahlliste geben soll dann wieder ein einfaches Edit nehmen und im OnChange prüfen welche Wort mit dem bereits eingegebenen Anfangen (auch in eigener History liste suchen). Dann das zuerst gefundene wort in das Edit schreiben (Edit1.Text := MyHistoryStringList.Strings[FoundIndex]) und mit SelStart den Cursor an die Position setzen wo der User mit der manuellen Eingabe war (anstelle von OnChange ist vielleicht OnKeyUp besser geeignet)
Hier der Source des OnKeyUp
Delphi-Quellcode:
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
lCount,
lMax : Integer;
lSearch,
lCheck : String;
begin
if (Key <> VK_BACK) and (Key <> VK_DELETE) then
begin
lCount := 0;
lMax := fList.Count;
lSearch := Edit1.Text;
while (lCount < lMax) do
begin
lCheck := fList.Strings[lCount];
if AnsiStartsText(lSearch, lCheck) then
begin
Edit1.Text := lCheck;
Edit1.SelStart := Length(lSearch);
Edit1.SelLength := Length(lCheck) - Edit1.SelStart;
lCount := lMax;
end;
inc(lCount);
end;
end;
end;
fList ist in dem Beispiel eine Stringliste wo die gesammten Einträge drin sind die bisher eingegeben wurden.