Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Datenbank-Komponente die auf Feldinhalt-Änderung reagiert (https://www.delphipraxis.net/189395-datenbank-komponente-die-auf-feldinhalt-aenderung-reagiert.html)

mm1256 8. Jun 2016 09:52

Datenbank-Komponente die auf Feldinhalt-Änderung reagiert
 
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.

Delphi-Quellcode:
  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?

Uwe Raabe 8. Jun 2016 10:01

AW: Datenbank-Komponente die auf Feldinhalt-Änderung reagiert
 
Zitat:

Zitat von mm1256 (Beitrag 1339729)
Meine Frage nun: Gibt es so was schon fertig?

TDBUpdate von Breyten J. Ernsting auf http://torry.net/pages.php?id=556

Obwohl da Delphi 5 steht, habe ich diese Komponente bis einschließlich Berlin im Einsatz.

mm1256 8. Jun 2016 11:36

AW: Datenbank-Komponente die auf Feldinhalt-Änderung reagiert
 
Hallo Uwe,

runter geladen, ausprobiert...passt (fast) perfekt. Das Einzige was ich nachrüsten muss ist die Wechselbedingung. Ich brauche den Event ja nicht bei jedem Datensatz, sondern nur, wenn sich während des Scrollens der Inhalt des Feldes ändert, wenn z.B. aus dem Ort Berlin => Nürnberg wird. Aber das ist schnell nachgerüstet.

Vielen Dank für den sehr guten Tipp! :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz