Gestern hatte ich keine Zeit mehr diese Sache anzugehen. Soeben habe ich das Vorgehen etwas genauer unter die Lupe genommen und bin auf folgende Schwierigkeiten gestoßen:
- Es gibt mehrere Referenzen auf die Instanz von T(String)Field: Einmal Query.Fields['MEINFELD'] und einmal die persistenten Objekte im Datenmodul (QueryMEINFELD). Beide müssten auf das neue Objekt umgebogen werden. Ich glaube auch, dass dann jedes mit diesem Feld verbundene datensensitive Steuerelement (wovon wir viele in vielen verschiedenen anderen Units haben) neu verbunden werden muss. Soweit ich mich erinnere, werden diese Verknüpfungen beim Instanzieren vorgenommen.
- Es gibt einige Eigenschaften von TField, die bei der Aktion nicht verloren gehen dürfen. Dazu zählen z.B. die Ereignisse und DisplayLabel.
Den zweiten Punkt sehe ich als weniger kritisch an, vorausgesetzt die Assign-Methode ist ordentlich implementiert (das unterstelle ich bei diesen Klassen einfach mal). Allerdings ist der erste Punkt für mich ein Killerkriterium, das wird mir einfach zu heiß. Wahrscheinlich lauern auch noch mehr versteckte Fallen. Da das Programm bereits zum Tode verurteilt ist, werde ich diesen Weg nicht umsetzen, da er potenziell zu viel Arbeit macht und zu viele Fallen bereithält. Wir werden bis zum Tod des Programms die Umsetzung mit der Meldung behalten.
Trotzdem danke für die Idee.
"Seit er seinen neuen Computer hat, löst er alle seine Probleme, die er vorher nicht hatte."