Ich hatte schon länger mal geplant, bzw. mir gewünscht, dass die
DP-Profis mal gemeinsam ein entsprechendes Demoprojekt aufbauen, damit man als Einsteiger mal einen Zugang dazu findet. Wer wäre dabei? Man könnte mal ein paar Kriterien zusammenstellen...
Ehm ja. Ich wäre eigentlich dabei - hab ja die Frage quasi mal wieder aufgegriffen / ins Rollen gebracht. Auch brauche ich selbst eine Lösung. Zwei Ansätze habe ich ja schon gebracht. Beim Drüberlesen über deinen Beitrag hören sich unsere Vorschläge ein wenig identisch an. Kann aber auch vielleicht nur Einbildung sein, weil ich gerade nur die Hälfte verstanden habe
Meine Idee wäre folgende (unrein, ungetestet)
Objekte: TFahrzeuge, TAuto, TFahrrad, TPersonen, THalter, TFahrer
Komponenten: chkboxFahrzeugtyp, cbAutos, cbFahrraeder, cbHalter, cbFahrer
User-Möglichkeiten: Fahrzeug hinzufügen (LKW), Auto/Fahrrad hinzufügen, Personen (Vor/Nachname) hinzufügen
Objektverwaltung: TFahrzeug und TPersonen sind global und von TObjectList abgeleitet.
Problem: Wird ein neues Auto hinzugefügt, wird auch das globale Auto-Objekt neu geladen => neue Speicheradressen
Nun muss jede Komponente bescheid gesagt bekommen, dass deren Inhalt veraltet ist und sich eben verändert hat. Meine erste(!) Idee wäre nun diese, dass jede Komponente einem "Verwalter" (Broker) sagt: Ich möchte wissen, wenn sich was ändert. Dies könnte in einem Array gespeichert werden oder so. Bei einer Änderung beliefert der Verwalter die Komponenten, die für "TAuto" zuständig ist, mit allen neuen Daten.
Das hätte sogar den Vorteil, dass man das in eine
Unit auslagern kann und demnach alle Ladevorgänge an einem Ort hat. Quasi eine weitere Ebene zwischen Objekten und
GUI. Ich nehme dabei an, dass sowieso eine
Unit nur für Objekte exisitert.
Ich hoffe, das war jetzt nicht zu umständlich?
Wobei ich auch sagen muss, dass diese Variante ziemliche Tipparbeit sein könnte. Aber das könnte man ja alles selbst in eine tolle Klasse verpacken, die Methoden wie "addListener(obj: TObject)" bereitstellt. So kann eine Komponente mit einem Objekt für den Listener "verlinkt" werden. Einmalig. Den Rest übernimmt die Klasse. Also nur einmal Tipparbeit und alle Projekte dürften davon profitieren (mit minimaler Anpassung). VSS: Das ausgedachte System würde funktionieren
Grüße