trm hat folgendes geschrieben : |
| Aber selbst als Array oder in einer anderen Liste, müsste diese syncronisiert werden, sollte eines der Instanzen gekillt werden. |
Umgekehrt, die GUI-Verwaltung, die auch die Liste enthält, bekommt den Befehl das entsprechende Feld zu entfernen. Den Rest übernimmt diese.
Das Feld selbst von der GUI zu entfernen und danach an die GUI-Oberflächenverwaltung den Befehl zu geben, dieses Feld auch dort zu löschen, ist natürlich doppelte Arbeit.
Ich benutze aber für den Zweck auch angepasste Klassen, die die entsprechenden Möglichkeiten bieten. Diese sind dann universell in meinen Programmen einsetzbar, so dass die Verwaltung einfacher wird. Und auch die vorhandenen Klassen können mit Hilfe von Class Helpern (ab Delphi 2006) auch um eine solche Funktionalität ergänzt werden (leider nicht bei generischen Typen).
Bei einzelnen Komponenten macht FindComponent jedenfalls keinen Sinn und bei einer Liste wird oft dann doch eine Schleife zum Ansprechen benutzt und in der ist FindComponent performancemäßig ungeeignet. Zudem reicht es aus aus Versehen den Namen der Komponente zu ändern und schon funktioniert vielleicht irgendetwas nicht mehr. Da man es aber auf diese Art und Weise macht, hat der Compiler keinerlei Möglichkeit, dies zu erkennen. Deshalb gibt es zwar Anwendungsfälle, in denen es Sinn macht, aber man muss aufpassen, dass man sich damit kein Bein stellt.