Doppelte Tags sollten eigentlich kein Problem darstellen, die zugehörigen Buttons wurden bei meinen Versuchen richtig einsortiert und behalten ihre ursprüngliche Reihenfolge.
Die Notwendige Bedingung für eine Endlosschleife ist das Vertauschen mindestens eines Button-Paares in einem Durchlauf. Möglicherweise reicht die Anweisung zum Setzen von
btn2.Left in Delphi 3 nicht aus, um die Buttons wirklich zu vertauschen. Beim nächsten Durchlauf würde dann ein neuer Versuch gestartet. Ich konnte nur mit Delphi 6 testen.
Versuche einmal folgende Änderung:
Delphi-Quellcode:
// btn2.Left := btn1.Left;
btn2.Left := btn1.Left - 2;
Vielleicht kann man damit das Vertauschen eher erzwingen.
Gruß Hawkeye