Das Problem ist dass ich nicht so einfach ein berechnetes Feld rein machen kann wie du es dir denkst. Es sind sehr viele Tabellen mit zig Spalten. Und bei jeder einzelnen Tabelle kann man sich die Spalten Ein-/Ausblenden wie man mag (auch die Größe und Position verändern) und das wird je User gemerkt so dass jeder seine Ansicht hat.
Mit Rechtsklick in die Titelleiste kommt immer ein automatisch generiertes Popup-Menü wo man sich die Spalten wählen kann. Und das neue berechnete Feld würde hier mit erscheinen, sowie das Original Feld.
Jedoch braucht es nur das extra berechnete, damit man im Grid den Text sauber anschauen kann und das Memo bekommt das orignal Feld damit TDBMemo richtig geht. Damit würden alle Memo Felder der Tabelle gedoppelt werden.
Ja, bei TDBEdit sollte das auch mit rein und bei TDBGrid natürlich auch. Daher habe ich die Events "TDBCtrlsGetTextEvent " und "TDBCtrlsSetTextEvent " benannt, damit eben man diesen Event-Typ für die anderen Sachen auch verwenden kann.
In meinem Beispiel habe ich bereits das OnSetText schon einprogrammiert.
Ein OnChange hat das TDBMemo bereits, braucht es also nicht noch extra, ein OnValidate wüsste ich jetzt nicht für was man das brauchen würde, dafür hat man das OnSetText.
Das händische Füllen in ein TMemo ist auch wieder nur ein Notbehelf. Alles richtig abfragen, das TDataset in Edit versetzen bei Änderung, immer richtig speichern ist nicht so leicht erledigt.
Bei super kleinen Hobby Miniprogrämmchen mag das mit berechneten Feldern ja, gehen, da kann man sich das TDBGrid im Lazarus Designer sich das Design so zusammen schieben wie man mag, aber bei komplexen Amatuerprogrammen wie meiner geht das nicht.
Aktuell habe ich alle mit ein paar wenigen Routinen behandelt und geht gut, wenn ich jedoch entweder das TDBMemo in ein TMemo wandeln muss oder eine extra Spalte einbauen muss, dann ist jede Tabelle eine Sonderbehandlung. Sonderprogrammierung, Spaghetticode und genau damit habe ich ein Problem.
Mit nur diesen 2 kleinen Eingriffen in die Komponente, mit nur diesen paar Codezeilen kann man das vermeiden.