hier steht mal wieder einer auf dem berühmten Schlauch:
Eine kleine Anwendung dient zur Verwaltung/Protokollierung von Softwareinstallationen auf diversen Windows-Rechnern. Auf dem ersten von zwei Tabsheets zeigt sie eine tabellarische Übersicht der installierten Anwendungen und ihrer Versionen in einem DBGrid. Auf dem zweiten Sheet findet sich zum Hinzufügen weiterer Versionen die Versionshistorie der auf dem ersten Tab gerade aktivierten Software. Die Daten stecken bzw. landen via UNC-Pfad in einer sqlite3-Datenbank auf dem Fileserver, wo auch die diversen Installationspakete vorgehalten werden. Angebunden ist es über die ZEOS-Komponenten, laufen tut's auf Windows 8.1 64bit.
So weit, so gut. Ich wollte nun noch die Caption von TabSheet2 bei jedem Datensatzwechsel der Softwaretabelle entsprechend ändern, um dort etwas wie 'Versionen von '+DBEditSoftwareName.Text anzeigen zu lassen. Auf der Suche nach dem passenden Ereignistyp glaubte ich bei .DataSource.Dataset.AfterScroll richtig zu liegen, doch - o Wunder - wird das augenscheinlich NIE ausgelöst, und wenn man im DBGrid noch so munter scrollt.
Als nächstes habe ich .BeforeScroll versucht (auch wenn das vermutlich keinen Sinn macht): trage ich hier ein ShowMessage('blablubb'); ein, kompiliert es zwar und läßt sich auch starten, aber das Programmfenster wird gar nicht mehr angezeigt!
Das .AfterScroll der Datasource im DataModule als Stelle, wo ich zuallerst die Ereignisprozedur eintragen wollte, dürfte ja nicht nutzbar sein, weil ein "uses Form1" in dieser Unit eine zirkuläre Referenz erzeugen würde und man anderenfalls wohl auf die visuellen Komponenten von Form1 nicht zugreifen kann.
Füge ich in den Uses-Abschnitt des Datenmoduls "Dialogs" ein, so hindert ein
Code: Alles auswählen
procedure Tdm1.zqUebersichtAfterScroll(DataSet: TDataSet);
begin
ShowMessage('zqUebersichtAfterScroll');
end;
Der Laie staunt, der Fachmann kommt ins Grübeln?
Hat jemand eine Idee, wie man die "Ereignisbehanlung Datensatzwechsel" anders besser lösen kann oder wie man das AfterScroll-Ereignis doch ausgelöst bekommt?