Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi DBGrid und automatisches Einfügen verhindern (https://www.delphipraxis.net/70019-dbgrid-und-automatisches-einfuegen-verhindern.html)

Jelly 23. Mai 2006 15:40


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.

marabu 23. Mai 2006 16:39

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:
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;
Grüße vom marabu

Jelly 23. Mai 2006 16:50

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.

marabu 23. Mai 2006 16:54

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 20:05 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