Entwickler-Ecke
Datenbanken - Problem mit Ereignissen einer datensensitiven Komponente
Daniel L. - Mo 08.11.10 23:31
Titel: Problem mit Ereignissen einer datensensitiven Komponente
Hi,
vorweg: ich bin nicht ganz sicher, zu welcher Rubrik mein Problem gehört.
Ich bastele an einer datensensitiven Kompononete, in dem ich eine existierende Komponente mittels TFieldDataLink erweitere.
Beispiel : TMyDBEdit = class (TEdit)
...Die Eigenschaften Datasource und DataField kommen dazu
Soweit geht alle gut, die registrierte Komponente kann aufs Formular gezogen werden und funktioniert.
Nun soll die Komponente zur Laufzeit auf die Events der DataSet reagieren können, Z.B. auf BeforePost oder AfterCancel, weil neben dem normalen datensensitiven Verhalten noch ander Aktionen ausgeführt werden sollen.
Wenn ich z.B schreibe:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TMyDBEdit.After_Cancel begin showmessage ('After Cancel'); end; |
und dann zuweise:
Delphi-Quelltext
1:
| After_Cancel := DataSource.DataSet.AfterCancel; |
so blockiere ich ja eine evtl. später vom User dieser Komponente geschriebene DataSet-Ereignissbehandlung AfterCancel.
So kann es also nicht gehen :?!?:
Gruss: Daniel
Moderiert von
Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 08.11.2010 um 22:58
jaenicke - Di 09.11.10 06:46
Über die DataLink-Klasse bekommst du ja Ereignisse von der DataSource. Dafür können mehrere DataLinks der DataSource hinzugefügt werden, damit eben nichts blockiert wird.
Wenn du irgendeine Aktion darüber nicht mitgeteilt bekommst (keine Ahnung, nie ausprobiert), kommst du nicht elegant da heran. Da bleibt dann vermutlich nur so etwas wie du es geschrieben hast, wenn du nicht auch die DataSource ändern willst.
// EDIT:
Ich hab mal kurz in den Quelltext geschaut:
Direkt an der Stelle, an der AfterCancel ausgelöst wird, wird direkt vorher das DataEvent der DataLinks ausgelöst (mit deDataSetChange als Event).
Daniel L. - Di 09.11.10 20:33
OK - hat ne Weile gedauert, aber jetzt hab ich's:
wenn ich DataChange aus der DataLink - Klasse mit Abfragen des States der DataSet kombiniere, kann ich die gewünschten Ereignisse abfangen.
Danke für Deine Hilfe, Gruss: Daniel
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!