DBNavigator action abbrechen

Rund um die LCL und andere Komponenten
Antworten
slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

DBNavigator action abbrechen

Beitrag von slai »

Hallo zusammen

Ich muss bei teils records in einer Buchhaltungstabellen, also die die automatisch vom programm erfasst worden sind, aktionen vom dbnavigator abbrechen, weil die nicht erlaubt sind. wie kann ich nun eine solche aktion wirklich abbrechen. Ausserdem funktioniert irgendwie das setzen von ReadOnly nicht Hier mal ausschnitte aus meinem code:

Code: Alles auswählen

procedure TFrmFibu.DBNavigator1BeforeAction(Sender: TObject;
  Button: TDBNavButtonType);
begin
  if Button = nbInsert then begin
     if DBGFIBU.ReadOnly then
        DBGFIBU.ReadOnly:=False;
  end;
  if (Button = nbDelete) and (DBDataMod.ZTblBU_FIBU_BUTRANSAKTIONEN.FieldByName('BOLAUTOMATISCH').AsBoolean) then begin
     //Aktion abbrechen
  end;
end;
 
 
procedure TFrmFibu.DBGFIBUColEnter(Sender: TObject);
var
   tempquery : TZQuery;
   sKontonummer : String;
begin
   if DBDataMod.ZTblBU_FIBU_BUTRANSAKTIONEN.FieldByName('BOLAUTOMATISCH').AsBoolean then begin
      DBGFIBU.ReadOnly:=True;
   end else begin
      DBGFIBU.ReadOnly:=False;
   end;  
end;
Danke schon im voraus für antworten
gruss
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Beitrag von slai »

Ok das mit dem readonly habe ich nun mit den options gelöst:

DBGFIBU.Options :=[dgEditing,dgTitles,dgIndicator,dgColumnResize,dgColumnMove,dgColLines,dgRowLines,dgTabs,dgAlwaysShowSelection,dgConfirmDelete,dgCancelOnExit];


das mit dem abbrechen hab ich jedoch immer noch nich herausgefunden
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Wiso versteckst du nicht die bearebitungsbuttons bei den entsprecehnden Datensätzen. Kannst ja in OnScroll des DataSets prüfen...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Beitrag von slai »

Hy christian

Das hab ich nun auch so gemacht, das problem ist einfach das wenn man nun einen neuen eintrag erfasst und dann auf den delete knopf drückt macht das dbnavigator teil einen cancelupdates auf dem table und danach fürt es den delete aus, was mir dann einen Eintrag löschen kann den man gar nich löschen will.
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Das ist aber ein Bug, der auch berichtet werden sollte.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Beitrag von slai »

ok dies kann man nun so lösen das man einfach noch den state des tables abfragt.

ich habs nun geschafft das es funktioniert, finde meine lösung jedoch ein wenig unschön, also wenn jemand weiss wie mann eine action auf einem dbnavigator abbrechen kann....

gruss
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Muss man doch nur mal schnell in den Code schaun und der schaut so aus:

Code: Alles auswählen

if (DataSource<>nil) and (DataSource.State<>dsInactive) then begin
    if not (csDesigning in ComponentState) and Assigned(BeforeAction) then
      BeforeAction(Self,Index);
    with DataSource.DataSet do begin
      case Index of
      nbPrior:  Prior;
      nbNext:   Next;
Also no Way !!
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mr.mc.mauser
Beiträge: 33
Registriert: Di 8. Jun 2010, 19:38

Re: DBNavigator action abbrechen

Beitrag von mr.mc.mauser »

Hallo,

ich habe auch nach einer Lösung für dieses Problem gesucht (auch wenn dieser Thread schon etwas Älter ist) und bin fündig geworden....

schaut mal hier: http://delphi.about.com/od/adptips2005/ ... 0205_3.htm

Gruß
Robert

P.S. ich hoffe ich habe mit dem Link gegen keine Forenregeln verstoßen, falls ja bitte ich um Nachsicht

Antworten