Habe nun eine Lösung gefunden....
performantere Vorschläge werden gerne entgegengenommen!
Delphi-Quellcode:
procedure TForm1.CheckBoxKeyPress(Sender: TObject; var Key: Char);
var
idx : integer;
actPos : integer;
ItemText : String;
InputText : String;
begin
if Ord(Key)>31 then
begin
actPos:= (Sender as TCombobox).SelStart + 1;
if actPos>0 then
begin
InputText:=Copy((Sender as TCombobox).Text,1,actPos-1) + Key ;
for idx:=0 to (Sender as TCombobox).Items.Count-1 do
begin
ItemText:=copy((Sender as TCombobox).Items.Strings[idx],1,actPos);
if CompareText(ItemText,InputText)=0 then
begin
Exit;
end;
end;
Key:=#0;
end;
end;
end;
danke an M_CLOSE, das war leider nicht die Lösung, da hier auch alle Steuerzeichen etc. blockiert werden und IndexOf den gesamten String vergleicht!
Selbst im
OnKeyPress
prüfen, ob der eingegebene String in der Liste ist.
Delphi-Quellcode:
if (sender as TComboBox).Items.IndexOf((Sender as TCombobox).text)+Key=-1 then
begin
Key:=0;
end;