Seite 1 von 1

DCBROWSECOL und Sort die 2.

Verfasst: Mi, 17. Mär 2021 14:51
von Manfred
ich habe einen DCBROWSE, der zwischendurch einige Spalten hat, die hide() sind. Leider Gottes scheint aber der Browser damit nicht klar zu kommen beim Sort. Wenn der Browser mit z.B. 10 Spalten aufgebaut ist, aber Spalte 3 und 4 z.B. hide() sind passiert folgendes:
Wenn der Header von Spalte 5 angeklickt wird für den Sort, dann wird zwar in dem SOrt Codeblock die richtige Spalte genommen (5), aber der Sort wird auf Spalte 6 oder 7 durchgeführt. Gibt es dafür eine Lösung?

Re: DCBROWSECOL und Sort die 2.

Verfasst: Mi, 17. Mär 2021 15:26
von Tom
Ja. Im Sort-Codeblock mitzählen. Du bekommst ja die Ordinalposition der Spalte als ersten Parameter rein.

Re: DCBROWSECOL und Sort die 2.

Verfasst: Mi, 17. Mär 2021 15:32
von Manfred
also meinst Du statt

Code: Alles auswählen

SORT {|aMousePos, nColPos, self| oDialogZusatz:MausImKopf(nColPos,"flu_s")};
nColPos ermitteln zu lassen die wirkliche Position händisch eintragen?

Code: Alles auswählen

SORT {|aMousePos, nColPos, self| oDialogZusatz:MausImKopf(5,"flu_s")};

Re: DCBROWSECOL und Sort die 2.

Verfasst: Mi, 17. Mär 2021 15:35
von Tom
Genau so!

Re: DCBROWSECOL und Sort die 2.

Verfasst: Mi, 17. Mär 2021 15:38
von Manfred
hm,
dann muß ich das nochmal kontrollieren. Die idee hatte ich auch schon, hat aber nicht geklappt. Habe wohl einen zu wenig abgezogen

Re: DCBROWSECOL und Sort die 2.

Verfasst: Mi, 17. Mär 2021 15:59
von Tom
BTW, geiler Methodenname "MausImKopf". :lol:

Re: DCBROWSECOL und Sort die 2.

Verfasst: Mi, 17. Mär 2021 16:03
von Manfred
klappt nicht.

Re: DCBROWSECOL und Sort die 2.

Verfasst: Mi, 17. Mär 2021 16:42
von Tom
Der Parameter ist meines Erachtens die Position im gebrausten Array. Das stimmt mit der Spaltenposition nur überein, wenn das Array in der Reihenfolge der Spalten angezeigt wird. Aber was machst Du denn in der MausImKopf-Methode? Da ist doch irgendwo ein ASort() enthalten, oder? Du musst wissen, welche Spalte welche Arrayspalte anzeigt. Und das verändert sich ja nie.

Re: DCBROWSECOL und Sort die 2.

Verfasst: Mi, 17. Mär 2021 16:46
von Manfred
ich mache das hier

Code: Alles auswählen

METHOD Dialogflaechen_menu:MausImKopf(nColPos,cSpalte,lWechsel)
       LOCAL nI
       DEFAULT lWechsel TO .T.

       IF At(Alltrim(STR(nColPos)),::cBrowseSort) = 0
          ::cBrowseSort := "Spalte" + Alltrim(Str(nColPos)) + "rauf"
       ENDIF
       IF Lower(cSpalte) == "an"
          IF ::cBrowseSort == "Spalte" + Alltrim(Str(nColPos)) + "rauf"
             ASort(::aBrowse,,,{|x,y| x:an < y:an})
             ::cBrowseSort := "Spalte" + Alltrim(Str(nColPos)) + "runter"
          ELSE
             ASort(::aBrowse,,,{|x,y| x:an > y:an})
             ::cBrowseSort := "Spalte" + Alltrim(Str(nColPos)) + "rauf"
          ENDIF
       ENDIF
       ::cBrowseSortDoName := cSpalte
       FOR nI := 1 TO Len(::oRahmenBrowse:childlist())
           ::oRahmenBrowse:childlist()[nI]:gotop()
           ::oRahmenBrowse:childlist()[nI]:refreshall()
       NEXT
RETURN self