DCBROWSE Satz löschen [erledgt]

Moderator: Moderatoren

Antworten
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

DCBROWSE Satz löschen [erledgt]

Beitrag von Ewald »

Hallo,
wie ich das verstehe, kann ich in einem DCBROWSE mit DELETE xbeK_Del die "Entf" Taste aktivieren.
Habe ich gemacht und eigentlich erwartet, dass ich jetzt beim Browsen mit der "Entf" Taste den markierten Satz (Zeile) löschen kann.
Pustekuchen. Es passiert nichts, wenn ich die Taste drücke.
Hat jemand einen Tip für mich ?
Gruß
Ewald

Code: Alles auswählen

#include "XBP.CH"
#include "APPEVENT.CH"
#include "DCDIALOG.CH"

procedure main
local getlist:={}

use firmtext index fitxnumm alias dbtext excl
go top

@ 0,0 dcbrowse obrowse alias "dbtext" size 100,25 ;
      EDIT   xbeBRW_ItemSelected ;
      MODE   DCGUI_BROWSE_EDITACROSSDOWN;
      DELETE xbeK_DEL  

dcbrowsecol field dbtext->nr          heading "Nummer " parent obrowse
dcbrowsecol field dbtext->text        heading "Text   " parent obrowse
dcbrowsecol data {||dbtext->(dele())} heading "Del"     parent obrowse

@ 27,01 dcpushbutton caption "Ende " size 10,1 ;
        action {||dc_readguievent(DCGUI_EXIT_OK,Getlist)}

dcread gui fit ;
       eval {||dc_getrefresh(getlist)}

close dbtext

return
Zuletzt geändert von Ewald am Sa, 30. Mai 2009 15:41, insgesamt 1-mal geändert.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: DCBROWSE Satz löschen

Beitrag von Tom »

SET DELETED ON
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSE Satz löschen

Beitrag von Manfred »

Und ein refresh des Browsers, oder bin ich blind?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: DCBROWSE Satz löschen

Beitrag von Tom »

@Manfred: Das ist implizit.
Herzlich,
Tom
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCBROWSE Satz löschen

Beitrag von Ewald »

Hallo Tom,
set dele hat keine Auswirkung. Das bewirkt doch nur, ob ich gelöschte sehen kann oder nicht - oder.
Mein Problem ist, dass die "Entf" Tast überhaupt nicht reagiert. Es wird nicht gelöscht, wenn ich die benutze.

Code: Alles auswählen

#include "XBP.CH"
#include "APPEVENT.CH"
#include "DCDIALOG.CH"

procedure main
local getlist:={}

set dele on

use firmtext index fitxnumm alias dbtext excl
go top

@ 0,0 dcbrowse obrowse alias "dbtext" size 100,25 ;
      EDIT   xbeBRW_ItemSelected ;
      MODE   DCGUI_BROWSE_EDITACROSSDOWN;
      DELETE xbeK_DEL  

dcbrowsecol field dbtext->nr          heading "Nummer " parent obrowse
dcbrowsecol field dbtext->text        heading "Text   " parent obrowse
dcbrowsecol data {||dbtext->(dele())} heading "Del"     parent obrowse

@ 27,01 dcpushbutton caption "Ende " size 10,1 ;
        action {||dc_readguievent(DCGUI_EXIT_OK,Getlist)}

dcread gui fit ;
       eval {||dc_getrefresh(getlist),;
               obrowse:hide(),obrowse:refreshall(),obrowse:show()}

close dbtext

return
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCBROWSE Satz löschen

Beitrag von Ewald »

Fällt mir noch ein, wenn ich ein array statt einer Datenbank "browse", funktioniert das mit delete und insert wie im Handbuch beschrieben.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: DCBROWSE Satz löschen

Beitrag von Tom »

Hallo, Ewald.

Ich hab's gerade ausprobiert, das scheint tatsächlich nicht zu funktionieren. Ich werde Roger mal im Webboard darauf aufmerksam machen.

Workaround:

Code: Alles auswählen

@ 0,0 dcbrowse obrowse alias "dbtext" size 100,25 ;
      EDIT   xbeBRW_ItemSelected ;
      MODE   DCGUI_BROWSE_EDITACROSSDOWN;
      cursormode XBPBRW_CURSOR_ROW ;
      DELETE xbeK_DEL ACTION {||DbDelete(),oBrowse:RefreshAll()}
Was Du in der EVAL-Klausel von DCREAD hast, ist übrigens überflüssig. Aber das hier macht Sinn:

Code: Alles auswählen

EVAL {||SetAppFocus(oBrowse)}
Herzlich,
Tom
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCBROWSE Satz löschen

Beitrag von Ewald »

Ich muss Meter machen und umgehe das Problem mit appevent und einer Funktion. Das geht so auch.
Fast denke ich, dass delete und insert im Zusammenhang mit DCBROWSE nur mit arrays funktionieren.
In ein Array schiebt die InsertTast life eine Leerzeile ein, die delete Tast löscht life die Zeile. Wie soll
das bei einer DBF ohne Index auch funktionieren.
Bin trotzdem für weiter Tips dankbar.
Gruß
Ewald

Code: Alles auswählen

#include "XBP.CH"
#include "APPEVENT.CH"
#include "DCDIALOG.CH"

procedure main
local getlist:={}

setappevent(xbeK_DEL,{||delrec(getlist)})

set dele off

use firmtext index fitxnumm alias dbtext excl
go top

@ 0,0 dcbrowse obrowse alias "dbtext" size 100,25 ;
      EDIT   xbeBRW_ItemSelected ;
      MODE   DCGUI_BROWSE_EDITACROSSDOWN // ;
    *  DELETE xbeK_DEL  

dcbrowsecol field dbtext->nr          heading "Nummer " parent obrowse
dcbrowsecol field dbtext->text        heading "Text   " parent obrowse
dcbrowsecol data {||dbtext->(dele())} heading "Del"     parent obrowse

@ 27,01 dcpushbutton caption "Ende " size 10,1 ;
        action {||dc_readguievent(DCGUI_EXIT_OK,Getlist)}

dcread gui fit 

close dbtext

return

function delrec(xlist)
if dele()
   recall
     else
   delete
endif
dc_getrefresh(xlist)
return .t.
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCBROWSE Satz löschen

Beitrag von Ewald »

Sorry Tom, da haben sich unsere Beiträge zeitlich überschnitten ...
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: DCBROWSE Satz löschen

Beitrag von Tom »

Das geht auch, wenn Du den Aufruf Deiner Funktion in den Action-Codeblock von DELETE nimmst, wie ich das oben gezeigt habe. Und Vorsicht mit DC_GetRefresh()! Das aktualisiert manchmal Browses nicht. Lieber oBrowse:RefreshAll() verwenden.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: DCBROWSE Satz löschen

Beitrag von Tom »

Hallo, Ewald.

Dies schrieb Roger im Webboard:

The INSERT and DELETE features were meant for browsing arrays only.
It seemed to me that the programmer would not want to leave such an
important task to the browser when working with databases.


Ich habe ihn gebeten, die Doku zu aktualisieren. Ganz unrecht hat er mit dieser Anmerkung nicht.
Herzlich,
Tom
Antworten