Paradox Community

Items in pnews.paradox-intl-se

Subject:Re: Sortering
Date:Mon, 15 Jun 2020 11:04:06 +0200
From:Anders Jonsson <andersREMOVETHIS@jonssondata.se>
Newsgroups:pnews.paradox-intl-se
Den 2020-05-13 kl. 11:31, skrev Bengt Ahling:
> Hej
> 
> Jag har ett formulär med en tabell. Hur ska jag göra om jag vill att 
> användaren ska kunna sortera en viss kolumn t ex i bokstavsordning eller 
> sifferordning? Helst skulle man vilja kunna klicka på rubriken så att 
> sorteringen sker.
> 
> Hälsningar
> Bengt


Hej

Detta går att göra men det beror lite på din setup.

Själv jobbar jag med lokala tabeller som är svar på SQL-frågor. De är 
alltså alltid "frikopplade" och jag kan sortera hur jag vill med kod.

Jag misstänker att du jobbar direkt mot datatabellerna och då krävs ett 
sekundärt index för att det skall fungera.

Jag har kod på formulärets action metod som ser ut så här:

method mouseClick(var eventInfo MouseEvent)
var
	uiTarget, uiCont uiObject
	stText, stKolumn string
endvar

if eventInfo.isPreFilter() then
   	;// This code executes for each object on the form
	eventinfo.GetTarget(uiTarget)
	if uiTarget.Class="Text"
		then
		uiCont.attach(uiTarget.ContainerName)
	
		if uiCont.class="Header"	
			then
			;man har klickat på en text i tabell headern
                   	;det innebär att man vill sortera
			stKolumn=uiTarget.HotKeyTarget
                   	
			cmSortera(stKolumn)
		else
		;inte i en Header	
		endif
			
			else
				;inte en text
		endif
			
	else
		;// This code executes only for the form
		
	endIf


endMethod


Det intressanta är alltså "HotKeyTarget" som är egenskap som normalt 
sett ger fältnamnet på kolumnen och därmed vet man generellt vilken 
kolumn man har klickat på!


Metoden för sorteringe ser ut så här:

method cmSortera(stKolumn string)


if stKolumn.isblank()
	then
		MsgInfo("Går ej","Inte ett möjligt sorteringsbegrepp.")
       return
	else
endif


;Man vill sortera

;if stKolumn="Kommentar" then MsgInfo("Går ej","Detta fält är inte 
sorteringsbart.") return endif ;går inte att sortera på memo fält

setMouseShape(MouseWait)


if stKolumn=stSorteradPa
	then ;samma sortering - byt bara riktning

		if stSorteringsRiktning="ASC"
			then
				stSorteringsRiktning="DESC"
			else
				stSorteringsRiktning="ASC"
		endif
	else
    	;ny kolumn
       stSorteradPa=stKolumn
       stSorteringsRiktning="ASC"
endif



if libGeneral.TFsortera(stMaster,stKolumn+" "+stSorteringsRiktning)
	then
		;sorteringen gick bra
		uiMaster.postAction(DataBegin)
	else
		MsgStop("FEL","Kunde inte sortera.")
endif

setMouseShape(MouseArrow)

endMethod

Och som du ser här så är det ett library som utför sorteringen men det 
har du nog ingen nytta av eftersom jag som sagt använder lokala tabeller.

Sorry om det är lite rörigt men här har du i alla fall något att börja med.

Jag läser bara newsgroupen då och då så svaren kan ta lite tid.

Ha en fin midsommar!

Anders



Copyright © 2004 thedbcommunity.com