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".
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