![]() |
DBGrid und automatisches Einfügen verhindern
Ich nutze ein DBGrid zum Editieren einer Datenbanktabelle. Nun möchte ich vermeiden, dass durch einfaches Runterscrollen bis zum Recordsetende automatisch ein neuer Datensatz eingefügt wird. Ich möchte dies nur erlaube, wenn in einem DBNavigator ausdrücklich ein neuer Datensatz angelegt werden soll, d.h. beim Scrollen soll immer nur bis zum letzten Datensatz geblättert werden, nicht mehr und nicht weniger.
|
Re: DBGrid und automatisches Einfügen verhindern
Hallo Tom,
du benötigst einen Schalter, den du umlegst, wenn du bewusst einen Datensatz einfügen willst. Ich verwende in meinem Beispiel die property Tag des DataSets, aber du kannst auch einfach eine Zustandsvariable AutoInsert in deine Form aufnehmen.
Delphi-Quellcode:
Grüße vom marabu
procedure TDataForm.DBNavigatorClick(Sender: TObject;
Button: TNavigateBtn); begin with Sender as TDBNavigator do DataSource.DataSet.Tag := Ord(Button = nbInsert); end; procedure TDataForm.DataSetAfterCancel(DataSet: TDataSet); begin DataSet.Tag := 0; end; procedure TDataForm.DataSetAfterPost(DataSet: TDataSet); begin DataSet.Tag := 0; end; procedure TDataForm.DataSetBeforeInsert(DataSet: TDataSet); begin if DataSet.Tag = 0 then Abort; end; |
Re: DBGrid und automatisches Einfügen verhindern
Danke marabu, klappt so fast.
Nur lautet das richtige Event BeforeAction und nicht OnClick. Das OnClick Event wird nach der Standardaktion ausgeführt, was mir in diesem Fall ja nix nützt... BeforeAction hingegen wird vor der Standardaktion ausgeführt. |
Re: DBGrid und automatisches Einfügen verhindern
Hast Recht - war beim Kopieren meines eigenen Codes etwas unkonzentriert.
marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz