Moin Zusammen,
ich stelle den Inhalt eines TWordField mit Hilfe von TRadioButton dar.
Um diese Beiden Komponenten zu verbinden, verwende ich das TWordField.OnChange- und das TRadioButton.OnClick-Ereignis.
Diese Events werden beim Programmstart im TForm.OnCreate (TRadioButton) bzw. TDataModule.OnCreate (TWordField) zugewiesen.
Zum Testen habe ich es auch schon mit dem entsprechenden TADODataSet.FieldByName(...).OnChange versucht.
Die Datenbankkomponenten habe ich auf einem TDataModule zusammengefasst.
Im TWordField.OnChange wird eine Prozedur aufgerufen, die bei dem entsprechenden RadioButton die Eigenschaft Checked auf true setzt, und im TRadioButton.OnClick wird der jeweilige Wert dem TWord.Field.Value zugewiesen.
Um keine Endlosschleife zu erhalten, merken sich die Routinen die Adresse des Eventhandlers und setzen die jeweilige Eigenschaft auf nil. Am Ende der Routine wird der Eventhandler dann wieder eingetragen.
Wenn ich einen RadioButton anklicke klappt auch alles wie es soll, und der TDBNavigator meldet auch, dass sich der Datensatz geändert hat.
Weise ich dem TWordField.Value bei aktivem OnChange-Eventhandler einen Wert zu so wird diese Routine auch aufgerufen.
Starte ich das Programm, so wird diese Routine allerdings nie aufgerufen
Es ist sichergestellt, dass TWordField.OnChange auch auf die Routine verweist, bevor noch der TADODataSet geöffnet wird.
Auch wenn ich mit dem TDBNavigator durch die Sätze durchgehe passiert dort nichts.
Ich habe es auch schon mit verschiedenen Events des TADODataSets probiert (OnWillChangeField, OnRecordSetChangeComplete, OnFieldChangeComplete):
Sie werden niemals ausgelöst...
Auch hier ist sichergestellt, dass Eigenschaften vor dem Zugriff auf die Datenbank korrekt gesetzt sind.
Mache ich hier irgendwo einen grundsätzlichen Fehler?
Hat noch jemand eine Idee, was ich noch ausprobieren könnte?
Danke.