Delphi-Quellcode:
procedure Tform2.Autocomplete(Combobox: TCombobox);
var
selstart, sellength,i: Integer;
EntryNum: Integer;
EntryValue: string;
statistic: TiniFile;
begin
statistic:= TIniFile.Create(ExtractFilePath(ParamStr(0))+'statistic.ini');
try
// read number of entries
EntryNum := statistic.ReadInteger('Playerlist', 'count', 0);
selstart := Combobox.SelStart;
sellength := Combobox.SelLength;
Combobox.Items.Clear;
Combobox.Items.BeginUpdate;
// add items
for i := 1 to EntryNum do
begin
EntryValue := statistic.ReadString('Playerlist', IntToStr(i), '');
if ((EntryValue = '') or (Pos(EntryValue, Combobox.Text) > 0)) then
begin
Combobox.Items.Add(EntryValue);
end;
end;
Combobox.Items.EndUpdate;
finally
statistic.Free;
Combobox.SelStart := selstart;
Combobox.SelLength := sellength;
showmessage(inttostr(entrynum)+entryvalue); // gibt immer "3Bert" aus
end;
end;
Und die existierende ini dazu:
Delphi-Quellcode:
[Playerlist]
count=3
1=Hartmund
2=Albert
3=Bert
eingebunden durch:
Delphi-Quellcode:
procedure TForm2.CBplayer1Change(Sender: TObject);
begin
Autocomplete(sender as Tcombobox);
end;
So das hab ich draus gemacht. Aber im Moment wird eine leeres Dropdownmenü angezeigt, ohne einen einzigen Eintrag. Außerdem wird der Eintrag den man eintippt immer gleich gelöscht, nach durchlauf der prozedur. Die Datei heißt auch wirklich "statistic.ini" und liegt im selben Ordner wie die .exe .
mfg Kahpee