DCBROWSECOL im Editmodus mit TAB verlassen

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

DCBROWSECOL im Editmodus mit TAB verlassen

Beitrag von Manfred »

Hallo,

ich stelle gerade fest, dass es wohl einen gravierenden Unterschied geben muß, ob ich in einem Browse eine Zelle, die editiert wurde, mit RETURN oder TAB verlasse.

das steht hier unter DCBROWSECOL

Code: Alles auswählen

@ 15,5 DCBROWSE oBrowse;
                     DATA oStrecken:cAlias;
                     EDIT xbeBRW_ItemSelected MODE DCGUI_BROWSE_EDITDOWN;
                     EVAL {|| pruefeAufSpaltenEnde(oBrowse,@lAnfang,@lEnde),dc_getrefresh(getlist) } ;
               FREEZELEFT {1,2};
                HEADLINES 2;
              NOSOFTTRACK;
                   PARENT oGruppeBrowse;
                  PREEVAL {|| oBrowse:headerRbDown := {|aMousePos, nColPos, self| SpaltenHeaderNeu(nColPos,oBrowse,oRouten) },;
                              oBrowse:ItemRbDown   := {|aMousePos, aRowCol, self| zeitenUebernahme(oBrowse,aRowCol,(oRouten:nArea)->id,(oStrecken:nArea)->folge),;
                                                        oBrowse:refreshAll();
                                                      };
                          };
                     SIZE DCGUI_PARENTWIDTH-15,DCGUI_PARENTHEIGHT-60
das steht in DCBROWSECOL

Code: Alles auswählen

FOR nI := 1 TO nMengeSpalten
              cNi      := Alltrim(Str(nI))
              bColData := &("{||(oVarianten"+cNi+":nArea)->abfahrt}")
              cHeader  := IF( ! Empty((oVarianten&cNi:nArea)->tagesart),"Var" + cNi +';'+ (oVarianten&cNi:nArea)->tagesart,"Var" + cNi)
              DCBROWSECOL DATA bColData;
              DATATOOLTIP {|| .T.} TIPBLOCK {|| "RETURN oder Doppelklick linke Maustaste = Editmodus;rechte Maustaste = Übernahme der Zeit in ausgewählte Zelle"};
                 GOTFOCUS {|| pruefeAufSpaltenEnde(oBrowse,@lAnfang,@lEnde),dc_getrefresh(getlist) } ;
                   HEADER cHeader;
                   PARENT oBrowse;
                  PICTURE "@R 99:99";
                  TOOLTIP "rechte Maustaste um die Tagesart einzugeben oder zu ändern";
                    VALID {|c,o| validcol(oBrowse,o) };
                    WIDTH 50
          NEXT

Code: Alles auswählen

********************************************************************************
STATIC FUNCTION validcol(oBrowse,oGet)
                LOCAL cZeit   := oGet:editBuffer()
                LOCAL lErfolg := .T.

                MEMVAR cNr

                cNr := Alltrim(Str(oBrowse:colpos-2))                           // mal sehen, was mir zu der 2 noch einfällt u es variabler zu halten
                oVarianten&cNr:felderlesen()
                oVarianten&cNr:abfahrt := Charrem(":",cZeit)
                oVarianten&cNr:felderschreiben(oVarianten&cNr)
                RETURN(lErfolg)
Wenn ich die Zelle editiert habe und sie mit RETURN verlasse, dann ist alles OK, sobald ich aber den Editiermodus mit TAB verlassen will, kommt in der Funktion statt einem oGet Objekt ein logischer Wert an und zwar .F. Das knallt dann. Was passiert denn hier komisches?
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
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSECOL im Editmodus mit TAB verlassen

Beitrag von Manfred »

Hm,

ich stelle gerade fest, dass die TAB Taste generell Probleme in dem Browse macht. Mit ihr kann man gar nicht ins nächste Feld wechseln, bzw. wenn ich die Taste drücke, dann geht danach keine andere Taste mehr, außer ich arbeite mit der Maus. Dann klappen auch die anderen Tasten wieder.
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
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 392
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCBROWSECOL im Editmodus mit TAB verlassen

Beitrag von Armin »

Hallo Manfred,

da Du noch keine Reaktion bekommen hast und ich gerade am Einarbeiten in eXpress++ bin...

Code: Alles auswählen

VALID {|c,o| validcol(oBrowse,o) };
laut Doku:
The edit buffer is passed to the code block
was doch soviel bedeutet wie:
oGet:editBuffer()

Dann brauchst Du eigentlich kein oGet in der Valid-Funktion...
:|
Gruß, Armin
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSECOL im Editmodus mit TAB verlassen

Beitrag von Manfred »

Hm,

habe ich jetzt nicht verstanden...

Ich weiß nur, dass eben bei TAB in dem "o" ein logischer Wert steht. Das kann man auch über den Debugger nachvollziehen, wenn man die Routine von Roger durchläuft. Ich habe nur keine Ahnung, warum das so ist.
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
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 392
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCBROWSECOL im Editmodus mit TAB verlassen

Beitrag von Armin »

Hallo Manfred,

Code: Alles auswählen

LOCAL cZeit   := oGet:editBuffer()
ist doch eigentlich überflüssig....

wenn:

Code: Alles auswählen

VALID {|c,o| validcol(c,oBrowse) };
und

Code: Alles auswählen

STATIC FUNCTION validcol(cZeit,oBrowse)
Wenn ich die Zelle editiert habe und sie mit RETURN verlasse, dann ist alles OK, sobald ich aber den Editiermodus mit TAB verlassen will, kommt in der Funktion statt einem oGet Objekt ein logischer Wert an und zwar .F. Das knallt dann. Was passiert denn hier komisches?
Naja, Du benutzt einen nicht dokumentierten Parameter - oder :?:

Gruß, Armin
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSECOL im Editmodus mit TAB verlassen

Beitrag von Manfred »

Hi Armin,

ich merke schon, Du hast die Vorgeschichte nicht mitbekommen?

http://www.xbaseforum.de/viewtopic.php?f=36&t=3973
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
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 392
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCBROWSECOL im Editmodus mit TAB verlassen

Beitrag von Armin »

Hallo Manfred,

ok - diese Verbindung hatte ich nicht... :o
ein Versuch war´s wert...

Gruß, Armin
Antworten