Hallo Chrissi,
Es hat tatsächlich eine Stunde gebraucht, bis ich den Fehler
gefunden habe. Weiter oben in der Procedure stand ein
with ListBox do
darf ich Dir einen Tip geben? Meide „WITH…DO“! Am besten, Du verwendest es niemals! Die Gefahr, daß es durch das „WITH…DO“-Konstrukt unbemerkt zu einer unerwünschten „Variablenüberdeckung“ (so nennt man das, was den Fehler in Deinem Code verursacht hat) kommt, ist einfach zu groß. Man könnte fast sagen, diese Art von Bugs ist durch „WITH…DO“ geradezu prädestiniert.
Ich selbst habe mich vor Jahren aufgrund eigener leidvoller Erfahrungen zur totalen „WITH…DO“-Abstinenz entschlossen. Dabei habe ich festgestellt, daß das problemlos möglich ist. Man hat lediglich ein bischen mehr Schreibarbeit, wobei ich jedoch den Gewinn an Sicherheit durch Eliminierung der Fehlerquelle „WITH…DO“ viel höher bewerte. Die Zeilen müssen übrigens nicht ellenlang werden: Das betreffende Codestück wird einfach in eine Prozedur auslagert und fertig. Das kommt auch der Übersichtlichkeit des Codes zugute. Probier es aus, und Du wirst sehen, daß es nicht nur ausgezeichnet funktioniert, sondern man sich auch sehr gut fühlt mit der Gewißheit, sich nie mehr mit solchen Fehlern plagen zu müssen.
Mit freundlichem Gruß
Martin
PS: In den Sprachen C/C++ steht ein „WITH…DO“ übrigens von vornherein nicht zu Verfügung; sie kennen dieses Konstrukt nicht.