Einzelnen Beitrag anzeigen

guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#14

Re: Formular neu zeichnen erzwingen

  Alt 13. Aug 2009, 09:42
1. Kann diese Methode in einer Komponente sein z.B. Componente.update oder muss diese sich im Programm direkt befinden?

Verstehe die Frage nicht ganz, aber die Methode muss eine Ereignisbehandlungsprozedur sein.

2. Wie melde ich diese Methode in meine Liste an bzw. ab?

Das Subject hat dafür die beiden Methoden "MeldeAn" und "MeldeAb" (Aus dem Beispiel entnommen).

3. Wie wird mein Überwachungsobjekt benachrichtigt, dass es etwas tun muss?

Das Subject benachrichtigt die angemeldeten Beobachter (d.h. es ruft die angemeldeten Ereignisbehandlungen auf). Das Subject selbst sollte natürlich das Objekt sein, in dem die sich ändernden Daten gehalten werden und dementsprechend "merken", wenn sich daran was ändert.

Beispielsweise könnte das Subject eine TCollection enthalten, die hat dann auch ein Ereignis "Changed", in dem du entsprechend reagieren kannst. "Changed" wird immer aufgerufen, wenn sich an einem TCollectionItem etwas ändert (TCollection speichert TCollectionItems).



Zitat von Optiplex:
ich habe z.B. zwei Objekte TPerson und TPersonList und zwei Komponenten eine TPersonEdit und TPersonScrollbox jetzt wird eine Person geändert z.B. Namen innerhalb der Objekte klappt das, nur der Bildschirm wird nicht aktualisiert. Wie kann ich das mit einem Observer lösen?
Ich nehme an TPersonList enthält eine gewisse Anzahl von TPerson.

Das heisst dann, dass TPersonList das Subject ist und TPersonEdit und TPersonScrollbox sind Beobachter. Ändert sich jetzt etwas an der Personenliste, dann werden die Beobachter benachrichtigt und können sich aktualisieren.
  Mit Zitat antworten Zitat