Hallo,
folgende Ausgangs-Situation: Ein Datenmodul mit einer TQuery/TTable und ein Formular mit einem DBGrid und einem DBNavigator. Also Datenzugriff und
GUI sauber getrennt, wie es sich gehört.
Der User hat mehrere Möglichkeiten in der
DB zu navigieren:
- Mit der Tastatur
- Click auf den Navigator
- Mausclick irgendwo im DBGrid
Angenommen der User hat eine Kundentabelle zur Ansicht auf dem Bildschirm und nun möchte ich wissen, wann sich der angezeigte Inhalt eines bestimmten Datenbank-Feldes ändert, z.B. der Ort. Ist das der Fall, soll eine bestimmte Aktion im Formular stattfinden.
Der klassische Weg den ich kenne und derzeit benutze ist der Event "AfterScroll" der
Query bzw. Table. Im Formular löse ich dann die entsprechende Aktion aus.
Datamodule.Table.AfterScroll := Form1.MeineAfterScrollProc;
So weit so gut, aber, umständlich wird das, wenn der AfterScroll im Datamodule auch vorhanden ist, und ausgeführt werden soll. Oder wenn ein weiteres Formular geöffnet ist, dass die selbe TTable benutzt, und eine ganz andere (oder überhaupt keine) AfterScroll-Action ausgeführt werden soll. Alles machbar wie gesagt, aber eben umständlich.
Abhilfe wäre eine nicht visuelle Komponente mit den Eigenschaften
Enabled: Boolean;
DataSet: TDataSet;
DataField: String; (das zu überwachende Feld)
und dem Ereignis "OnFieldValueChange".
Meine Frage nun: Gibt es so was schon fertig?
Wenn nein, würde ich es gerne selber machen. Habe aber mit Komponentenentwicklung nichts bzw. nur sehr wenig am Hut. Wie würdet ihr es anfangen: ableiten ja/nein, wenn ja, von welcher Komponente?