Hallo,
ich habe da eine Klasse, die Daten verwalten soll. In Private sind einige Propertys, und wenn man die (in der Instanz) ändert, soll eine Prozedur aufgerufen werden. Geht ja ganz Prima: Ich weise der Property bei "Write" eine prozedur zu:
Delphi-Quelltext
1: 2: 3: 4:
| TMorphProject = class public property Width: Word read FWidth write SetWidth; |
SetWidth() ruft dann die besagte Änderungs-Prozedur auf.
So, jetzt soll aber noch eine Klasse als Property hinzukommen:
Delphi-Quelltext
1: 2: 3: 4:
| TMorphProject = class public property Blending: TMorphBlending read FBlend write SetBlend; |
TMorphBlending ist ebenfalls eine Klasse mit Propertys.
Nun das Problem: Wenn ich eine Property in der Property "Blending" ändere, wird SetBlend() NICHT aufgerufen. Also kann ich nicht auf Änderungen reagieren.
Ich habe da jetzt nur eine GANZ triviale Lösung gefunden:
Delphi-Quelltext
1: 2: 3: 4: 5:
| TMorphBlending = class private FOnChange: TProcedureOfObject; public constructor Create(OnChange: TProcedureOfObject); |
Nun ruft TMorphBlending bei Änderungen die Methode OnChange() auf, und TMorphProject reagiert darauf.
Wie kann man das noch machen? Es geht so... aber haben die Borland-Developer da einen Mechanimus vorgesehen, der mir diese Umstände erspart? Oder wie macht ihr so was?