Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Verlassen von dbGrid erzeugt BeforePost (https://www.delphipraxis.net/200388-verlassen-von-dbgrid-erzeugt-beforepost.html)

norwegen60 16. Apr 2019 08:36

Datenbank: MsSQL • Version: 2008R2 • Zugriff über: ADO

Verlassen von dbGrid erzeugt BeforePost
 
Hallo zusammen,

ich editiere teilweise DB-Daten direkt in einem dbAdvGrid. Wenn ich nun auf einen [Cancel]-Button klicke, wird automatisch das OnBeforPost der verknüpften Tabelle aufgerufen. Ich gehe davon aus, dass durch das Verlassen des Grid und der gerade editieren Zeile/Zelle automatisch ein Post aufgerufen wird (wie im SQL-Manager auch).

Gibt es eine Möglichkeit, dies zu verhindern?

Vielen Dank
Gerd

stifflersmom 16. Apr 2019 09:18

AW: Verlassen von dbGrid erzeugt BeforePost
 
In den Optionen:
CancelOnExit oder so ähnlich

norwegen60 17. Apr 2019 10:36

AW: Verlassen von dbGrid erzeugt BeforePost
 
So einfach ist es nicht. Auch der Klick auf btnSave führt ja zu einem exit. Und das BeforePost kommt vor dem OnClick.

Das Programm ist nicht von mir und ziemlich viel drum rum programmiert. Bis jetzt ist mir noch nicht klar, wann er beim Exit überhaupt ein Post macht. Auf manchen Rechnern immer, bei andern eher zufällig. Werde die DbAdvGrid mal solo testen, wie die sich normalerweise verhält.

Delphi.Narium 17. Apr 2019 11:08

AW: Verlassen von dbGrid erzeugt BeforePost
 
Das Post hat nix mit dem Exit zu tun.

Wurde ein Datensatz geändert, wird beim Wechsel eines Datensatzes (gewöhnlich) ein Post ausgelöst, was den Aufruf von BeforePost impliziert.

Ja nach verwendetem DB-Grid kann man in den Optionen z. B. dgCancelOnExit aktivieren oder eben nicht aktivieren, sie steuert das Verhalten des Grids beim Verlassen.

Die mit dem Grid verbundene DataSource hat auch noch ein paar Eigenschaften und Ereignisse. Z. B. AutoEdit, dann kommt noch die passende TDataSet-Komponente oder einer ihrer Nachfolger dazu.

Dein Problem ist: So wie momentan die Einstellungen von DBGrid und Co. sind, sorgt jede Interaktion im Programm, die zu einem Verlassen des Grids führt, zu einem automatischen Speichern des aktuellen Datensatzes, deshalb kommt das Ereignis BeforePost vor dem Klick auf irgendeinen beliebigen Button ... außerhalb des Grids.

Statt der Buttons könntest Du es ja mal mit 'nem DBNavigator versuchen, der bringt von Hause aus die Buttons für Cancel, Save ... mit. Welche Buttons angezeigt werden, kann man konfigurieren. Da der DBNavigator mit der gleichen DataSource verbunden ist, wie das DBGrid, tritt der von Dir festgestellte Effekt nicht auf. (Jedenfalls ist er mit in den letzten 20 Jahren so noch nicht begegnet.)

Statt eines Cancelbuttons benutze ich einfach die Taste ESC, hat die gleiche Wirkung und ist deutlich schneller erreicht ;-)

hoika 22. Apr 2019 08:40

AW: Verlassen von dbGrid erzeugt BeforePost
 
Hallo,
welche TMS-Version hast Du?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 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