Einzelnen Beitrag anzeigen

Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

OOP, Objekte neu laden, Komponenten aktualisieren

  Alt 12. Apr 2012, 15:51
Delphi-Version: 2009
Hallo,

ich weis, dass es ein richtig schlechter Titel ist, aber mir fällt keine prägnante Beschreibung ein.

Ich programmiere objektorientiert. Angenommen, ich habe das globale Objekt "TFahrzeuge", welches alle Fahrzeuge enthält. Diese Objekte werden auf 3 Forms benutzt zB in einer ListView, Combobox und TreeView.
Nun führt ein Benutzerverhalten (ändern/löschen etc.) dazu, dass die Liste komplett neu geladen wird, in meinem Fall aus der DB.
Das wiederrum führt dazu, dass ich als Programmierer sicherstellen muss, dass alle drei Komponenten gleichzeitig aktualisiert werden. Vergesse ich eine, tritt bei dieser eine AV auf, weil die Speicherbereiche sich geändert haben.

Jetzt könnte man sagen, dass man halt daran denken muss - aber wenn das Projekt wächst, dann wird's unübersichtlich.

Wie machen das andere / Wie löst ihr dieses Problem?

Ich dachte an eine Art "Listener". Jede Komponente, die die Aufgabe hat etwas mit Objekten zu tun, kann sich "registrieren". Wird jetzt das Objekt "TFahrzeuge" geändert - also neu geladen, wird allen Objekten bescheid gegeben und alle Objekte aktualisieren sich. Problem ist aber, dass - je nach Programmgröße und Anzahl der registrierten Objekte - dies unnötig lange dauern kann.

Eine andere Idee wäre es, die Komponenten immer im OnActivate einer Form zu aktualisieren. Aber das könnte den Programmablauf verzögern und das Programm würde immer kurz hängen, wenn man die Forms wechselt.

Ich hoffe, ihr versteht was ich meine und könnt mir ein paar Tipps geben.

Danke im Voraus!
  Mit Zitat antworten Zitat