Ich habe in Delphi eine TComboBox verwendet, in welche ich z.B. Nummern eingebe.
Die Combobox klappt automatisch auf und wählt den (je nach weite der Eingabe) passensten Eintrag schon aus.
Soweit so gut. Ich habe dann eine Prüfung eingebaut, das wenn der eingegebene Text zu keinem Eintrag in der Combobox passt, dieser um 1 Zeichen (das letzte eingegebene) gekürzt wird.
Jetzt stehe ich wie der Ochse vorm Berg:
Problem in
Lazarus ist jedoch, das er immer sagt das der eingegebene Text nicht passt, da er immer nur die eingegebenen Zeichen prüft, nicht aber die "Vorauswahl".
Dadurch lösche ich natürlich immer die komplette Eingabe und man hängt quasi fest.
Delphi-Quellcode:
procedure TTools.ChooseFChange(Sender: TObject);
var
LandD, IPD, IPT, DeviceD, puffer : string;
i : integer;
begin
if (ChooseF.Text <> '') and
(ChooseF.Items.IndexOf(ChooseF.Text) <> -1) then
begin
//Bedingungen wenn der Text passt.
end else
begin //Wenn der Text nicht passt
puffer := choosef.Text;
choosef.Text := '';
for i := 1 to length(puffer) - 1 do
begin
Choosef.Text := Choosef.Text + puffer[i];
end;
choosef.SelStart := length(choosef.text);
end;
end;
Jemand eine Idee wie man das in Lazarus hin bekommt? Die Combobox scheint sich anders zu verhalten.