Hallo
if Form1.CB1.Checked=true then
Überprüfe nicht auf
= true. Das mag hier zwar gehen, ist jedoch schlecht, sich das so anzugewöhnen. Wieso, steht
hier und das ist ganz interessant und sollte man wissen. Mit deinem Problem hat dies allerdings nichts zu tun.
Du greifst jedoch im Thread (Execute) direkt auf die
VCL zu beim Ansprechen der CheckBoxen und das ist alles andere als gut. Genauso beim TMediaPlayer. Der Zugriff auf die
VCL aus einem Thread sollte generell nur mittels
Synchronize erfolgen. Hierzu findest du auch einige Beispiele in der
DP. Ich könnte mir vorstellen, dass dies mit deinem Problem zusammenhängt.
Mir persönlich erscheint es auch nicht sinnvoll, in jedem Schleifendurchlauf zu prüfen, welche CheckBox nun gesetzt ist, denn das kostet auch nur Rechenzeit, jedesmal auf die
VCL zugreifen zu müssen. Vielleicht wäre es auch sinnvoll, einzulesen, welche CheckBoxen gesetzt sind und den Thread dann mit entsprechenden Parametern zu starten, es sei denn, man soll während des Threads auch eine CheckBox anklicken dürfen und die Änderungen direkt übernommen werden müssen.
Falls das ganze für eine Visualisierung sein soll, tust du dir sicher leichter, wenn du die
bass.dll nutzen würdest. Für diese
dll gibt es einige Units und Beispiele in der
DP, mit denen sich diese sehr einfach ansprechen lässt. Visualisierungen sind damit ein Kinderspiel.
Eine nette Übung ist es natürlich, selbst eine zu schreiben, das ist keine Frage.