Weit mehr Komponenten haben das OnChange() Ereignis. Wenn du zudem noch die Property "Tag" nicht anderweitig nutzt, und sonst auch nichts im OnChange mancher Komponenten machst, könntest du für alle einen gemeinsamen Handler machen, der einfach das Tag des Senders auf 1 setzt, und die Speichern-Routine setzt die wieder auf 0.
Sperrung ist da etwas komplizierter: Im Grunde müsstest du für jede Komponente einen Buffer machen, der die Werte beinhaltet, die die Maske zum letzten Speicherzeitpunkt oder bei der letzten Anzeige in der
DB standen. Vor dem Speichern kannst du dann diese mit den dann aktuellen in der
DB vergleichen, und ggf. Warnungen und Aktualisierungen machen. Das wäre zumindest eine Möglichkeit, wie man es ganz allgemein und mit allen Komponenten machen könnte, selbst wenn sie selbst keinen Mechanismus dafür vorsehen. Interessant wird dabei dann jedoch, wie man seinen Buffer umsetzt. Da fiele mir jetzt hier spontan noch kein wirklicher Königsweg ein. Zumindest kein schneller, einfacher und eleganter, der nicht schon fast Framework/ORM-Charakter hätte.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)