Auch ich habe mir den Source angeschaut, allerdings mit Lazarus.
Dabei habe ich festgestellt, dass die Property .ItemIndex im OnChange-Ereignis hinterherhinkt, wenn man zum Beispiel den Letzten Buchstaben eines Eintrages im Eingabefeld löscht.
Auch bei anderen Events ist ein "Fehlverhalten" zu entdecken.
Folgende Lösung funktioniert im OnChange (und in den anderen Events):
Im
OI die Property AutoComplete der ComboBox auf "false" setzen.
Im OnChange-Ereignis nicht die Property ItemIndex verwenden, sondern den ItemIndex, welcher zum Text passt, selbst ermitteln.
Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
case ComboBox1.Items.IndexOf(ComboBox1.Text) of
14: begin
ComboBox3.Items.Clear;
ComboBox3.Items.Add('Nanometer');
ComboBox3.Items.Add('Mikrometer');
ComboBox3.Items.Add('Millimeter');
ComboBox3.Items.Add('Zentimeter');
ComboBox3.Items.Add('Dezimeter');
ComboBox3.Items.Add('Meter');
ComboBox3.Items.Add('Dekameter');
ComboBox3.Items.Add('Hektometer');
ComboBox3.Items.Add('Kilometer');
end;
else
begin
ComboBox3.Items.Clear;
end;
end;
end;
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.