tja, das ist wieder mal eine richtig schöne, klassische Philosophiefrage, auf die es einfach keine einfache Antwort gibt.
Ich mache es meistens so, dass ich die eigentliche Verbindung zur Datenbank im für alle zentralen Datenmodul aufbaue. Ebenfalls dorthin kommen diejenigen Komponenten, die nur so ne Art temporäre Bedeutung haben, aber für alle vorhanden sein sollten. Beispielsweise Tabellen zum schnellen Nachschlagen. Da ich normalerweise nicht gleichzeitig an verschiedenen Datensätzen der selben Tabelle arbeite, stelle ich auch noch jeweils einen Table in der normalerweise verwendeten Sortierung dort hinein. Wenn ich dann unterwegs mal was in der selben Tabelle nachschauen muss, verwende ich eine formulareigene Komponente dafür. Damit behalte ich meine aktuelle Position bei und habe trotzdem Zugriff auf das, was ich benötige. Und die Übersicht versuche ich eher durch sprechende Namen herzustellen.
Aber wie du schon richtig sagtest, musst du, falls du in mehreren Fenstern an der selben Tabelle rumbastelst, die zugehörigen Tables bzw. Queries natürlich jeweils im Formular mitführen, da sich ja sonst beispielsweise die aktuelle Satznr. ständig ändern würde.
Was Änderungen angeht, müsste es dann eigentlich langen, ab und zu mal Application.ProcessMessages aufzurufen (z.B. beim Activate), um die letzten Änderungen auch mitzubekommen.
Fazit: kommt halt wie immer wieder drauf an, was du eigentlich willst!