Problem mit CallBack: ONDataChange

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Problem mit CallBack: ONDataChange

Beitrag von Lorca »

Hallo zusammen :)

um TDataSource und TDataSet zu bündeln habe ich eine Klasse (TCL_Dao) angelegt. Im Constructor dieser Klasse werden TDataSource und TDataSet übergeben. Die Klasseneigene Methode: ON_DataChange wird mit der TDataSource.OnDataChange := @ON_DataChange
verbunden.

Die Attribute für diese Klasse liegen alle in TDataModul. (mo_DAO_Namen)
Über den Public Bereich im TDataModul liefere ich die Dao's als Property's nach aussen.
( DAO_Namen : TCL_Dao READ mo_DAO_Namen ).


Nun stellt diese Dao Klasse ebenfalls ein Property: OnDataChange zur Verfügung.
Obwohl ich dieses Property in der Klasse setze ( Dao_Namen,ONDataChange := @EVTHDL_OnDataChange ) in welcher dieses Property benötigt wird, ist bei Aufruf von z.B. DAO.Open( Methode ist implementiert) wird zwar der Eventhandler TCL_Dao.ON_DataChange gerufen,
jedoch das Property OnDataChange welches in diesem Handler gerufen wird ist immer NIL.

Gibt es im Debugger die Möglichkeit, das dieser immer dann anhält, wenn das Property auf NIL gesetzt wird?

Ich habe eine kleine Test Version aus dem riesigen Programm erstellt. Aber hier funzt alles so wie erwartet. Kann somit also nicht mit einem Beispiel dienen.

Dennoch Sende ich mal dieses Beispiel. Im Coding ist es dokumentiert.
Hat jemand eine Idee wie ich diesen (meinen) Fehler ausfindig machen kann?

Viele Grüße
Lorca :)
TEST_Dao_Event_DataChange.zip
(142.6 KiB) 62-mal heruntergeladen

charlytango
Beiträge: 845
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Problem mit CallBack: ONDataChange

Beitrag von charlytango »

Erstmal verstehe ich nicht, dass du wohlüberlegte Konzepte über den Haufen werfen willst. Was möchtest du damit erreichen ?

Dein Datenmodul wird nach dem Formular erzeugt.
Drehe die Reihenfolge mal um. Besonders in großen Programmen ist es IMHO keine gute Idee (außer dem Hauptformular) die Formulare automatisch erstellen zu lassen. Damit hat man keine Kontrolle über die zeitlichen Abläufe der Erstellung.

Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Re: Problem mit CallBack: ONDataChange

Beitrag von Lorca »

Hallo zusammen :)

zunächst danke für Deine Antwort.
Jedoch werfe ich nicht "Wohlüberlegte Konzepte" über den Haufen :)
Vielmehr erweitre ich diese.
Aus meiner Sicht bilden TDataSource und TZQUERY (bzw. TZTable) eine Einheit und sollten auch genau deshalb "gewrapt" werden.

Ich habe keine Ahnung warum dieser Fehler aufgetreten ist. Nachdem ich meine Komponenten neu gemacht habe, hat es funktioniert.

Viele Grüße
Lorca :)

Antworten