| |
|
|
 p.specht
 | Gridboxversuch: Jetzt auch alphanumerisch abwärts sortierbar ============================================== Der sortierte Gridbox-Style sortiert automatisch alphanumerisch aufwärts. Will man das ganze umkehren, ist eine Umwandlung in der nicht angezeigten ersten Spalte mit dem Sortierschlüssel vorzunehmen.
Hinweis von Michael Wodrich: Das Selectstring müsste auch noch angepasst werden, um Deutschland und Schweiz auch bei inverser Sortierung zu kennzeichnen - und nicht fälschlicher Weise andere Einträge!
Danke, Michael, für die Hinweise! Auch suche ich noch nach einer Möglichkeit, die aktuellen Spaltenbreiten nach einer Veränderung mit der Maus festzustellen. Bei der nachstehenden Variante bleiben die "Sensorfelder" zur Änderung der Sortierreihenfolge in der obersten Spalte nämlich auf den Werten, die zu Beginn eingestellt waren... Kann sehr verwirrend sein!
Da Sonderzeichen z.B. (ÄäÖöÜüß) vom Gridbox-Sortieralgorithmus als (AaOoUuss) behandelt werden, um Telefonbuch-Sortierung zu erreichen, genügt es nicht, die Zeichen einfach als chr$(255-ord("x")) herumzudrehen. Letztlich blieb nur über A...Z auf Z...A, a...z auf z...a und 0..9 auf 9...0 zu spiegeln. Die Sonderzeichen müssen vorher selbst auf AOUaouss gemappt werden - eine Behelfslösung halt, auf Neudeutsch: Ein "Workaround"...
WindowTitle upper$("Gridboxtest Nr.3: Spaltensort up/down jetzt auch Alphanumerisch")
var data$=\
"01|Singapur|108|20.994 €|745 €|31,5 °C#"+\
"07|Schweiz|102|41.319 €|2.040 €|12,7 °C#"+\
"08|Niederlande|102|27.585 €|1.388 €|14,3 °C#"+\
"13|Kanada|101|22.761 €|1.366 €|7,4 °C#"+\
"14|Belgien|100|25.417 €|1.388 €|14,5 °C#"+\
"15|Deutschland|100|25.548 €|1.150 €|13,5 °C#"+\
"16|Vereinigtes Königreich|100|25.524 €|1.204 €|12,8 °C#"+\
"17|Österreich|100|26.442 €|1.456 €|13,0 °C#"+\
"200|osterinseln|100|26.442 €|1.456 €|13,0 °C#"+\
"20|Schweden|99|30.087 €|1.932 €|9,4 °C#"+\
"22|Dänemark|99|32.333 €|2.583 €|11,9 °C#"+\
"108|Äquatorialguinea|56|2.757 €|119 €|30,2 °C#"+\
"300|äquatorialguiness|56|2.757 €|119 €|30,2 °C"
Windowstyle 24':window 0,0-640,480
CLS
var srt$=""
var t$=\
";1;0;"+\
"Platz;1;40;"+\
"Land;0;180;"+\
"Ø IQ;2;80;"+\
"Ø Einkommen;1;80;"+\
"Bildungsausg/EW;2;110;"+\
"Ø Tageshöchsttemp;2;130"
var sort&=1:var multi&=2
var gbhdl&=@Create("GridBox",%hwnd,t$,sort&+multi&, 0,0,width(%hwnd),height(%hwnd))
declare tmp$[],mx%,my%,down&,spalte&
tmp$[]=explode(data$,"#"):clear data$
spalte&=2
MAKEGRID:
whileloop 0,sizeof(tmp$[])-1
Addstring(gbhdl&,num$(tmp$[&Loop],spalte&,down&)+"|"+tmp$[&Loop])
endwhile
@SelectString(gbhdl&,-1,"Schweiz")
@SelectString(gbhdl&,-1,"Deutschland")
@SelectString(gbhdl&,-1,"Österreich")
repeat
waitmouse
mx%=%mousex:my%=%mousey
' Windowtitle str$(mx%)+","+str$(my%)
if my%<23 : down&=0:case my%<12:down&=1
if mx%<42:spalte&=1
elseif mx%<222:spalte&=2
elseif mx%<300:spalte&=3
elseif mx%<382:spalte&=4
elseif mx%<490:spalte&=5
elseif mx%>=490:spalte&=6
endif
clearlist gbhdl&
goto "MAKEGRID"
endif
until %key=27
END
proc num$ :parameters z$,sp&,down&
var s$=substr$(z$,sp&,"|")
s$=translate$(s$," €","")
s$=translate$(s$," °C","")
s$=translate$(s$,".","")
s$=translate$(s$,",","")
if val(s$)<>0
s$=right$("0000000000"+s$,10)
case down&:s$=str$(2147483647-val(s$))
else
s$=substr$(z$,sp&,"|")
s$=translate$(s$,"Ä","A")
s$=translate$(s$,"Ö","O")
s$=translate$(s$,"Ü","U")
s$=translate$(s$,"ä","a")
s$=translate$(s$,"ö","o")
s$=translate$(s$,"ü","u")
s$=translate$(s$,"ß","ss")
if down&=1
var y&=0:var p$=""
whileloop len(s$):y&=ord(mid$(s$,&loop,1))
if between(y&,65,90):y&=155-y&
elseif between(y&,48,57):y&=105-y&
elseif between(y&,97,122):y&=219-y&
endif
p$=p$+chr$(y&)
endwhile:s$=p$
endif
endif
return s$
endproc
|
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 27.05.2021 ▲ |
|
|
|