Seite 1 von 1

DCBROWSCOL Spalte ermitteln

Verfasst: Do, 20. Feb 2020 18:22
von Manfred
das hier ist gegeben

Code: Alles auswählen

DCBROWSECOL DATA {|| zeigeSpesen(oDialogZusatz,SPESEN) };         
                       EVAL {|x|x:dataArea:lbDblClick := {|a,b,o| aendereSpesen(oDialogZusatz,SPESEN)}};
                     HEADER "Spesen";
                     PARENT oDialogZusatz:oBrowseTagesdienste;
                    PROTECT {|| .T.};
                      WIDTH oSysPara:skaliereXbParts(50)
bisher habe ich über die SPESEN Konstante die Spalte angegeben, aber als ich ein Feld ins Array davor eingefügt hatte, knallte es. Meine Frage ist nun, wie kan man die Spalte ermitteln, aus der die Funktion aufgereufen wurde um somit die festen Spaltennummer flexibel zu gestalten? Zeile in der man im Browse steht geht ja mit DC_GETCOLARRAY() Gibt es da auch eine Funktion, die die aktuelle Spalt ermittelt?

Re: DCBROWSCOL Spalte ermitteln

Verfasst: Do, 20. Feb 2020 18:59
von Tom
oBrowse:ColPos sagt Dir, wo Du bist. Aber Du meinst nicht im Eventhandling, sondern aus dem Datencodeblock der Spalte heraus, richtig? Dafür gibt es verschiedene Methoden. Wenn ich Browserspalten in einer Iteration erzeuge, nehme ich den Cargo-Slot, um später auf die numerische Anordnung zugreifen zu können.

Re: DCBROWSCOL Spalte ermitteln

Verfasst: Do, 20. Feb 2020 19:05
von Manfred
ich glaube ich habe schon was gefunden.

Code: Alles auswählen

DCBROWSECOL OBJECTVAR gueltigbez;
                  DATATOOLTIP {|| .T.} TIPBLOCK{|nPos| oDialogZusatz:aTagesdienste[nPos]:gueltigbez};
                         EVAL {|x|x:dataArea:rbClick := {|a,b,o| zeigeDaten(oDialogZusatz,"Gültigkeitsbezeichnung",o)}};
                       HEADER "Gültigkeits-Bezeichnung";
                       PARENT oDialogZusatz:oBrowseTagesdienste;
                        VALID {|| oDialogZusatz:validcol("gueltigbez",GUELTIGBEZ) };
                        WIDTH oSysPara:skaliereXbParts(200)

Code: Alles auswählen

FUNCTION zeigeDaten(oDialog,cFeld,oZelle)
         LOCAL cText
         LOCAL nZeile := DC_GetColArray(0,oDialog:oBrowseTagesdienste)

         MEMVAR oSysPara

         IF ! Empty(oZelle:getcell(nZeile))
            cText := StrTran(oZelle:getcell(nZeile),";",CRLF)
            oSysPara:oMessage:anzeigen(cText,,,,,"Inhalt der Spalte: " + cFeld)
         ENDIF
         RETURN(.T.)
Das löst zumindest schonmal ein Problem.