Forum | | | | - Seite 1 - |
| Julian Schmidt | Hallo, ich würde gerne ein Listbox erstellen welche Zahlen in der Richtigen Reihenfolge anzeigt. Etwa..
1,2,3...100,...1001,....9999 Oder auch umgekehrt. Eine ganz normale 'SortedListBox' zeigt Zahlen in dieser Reihenfolge....
0,1,100,1000,2,200,2000,5000... Falls so etwas nicht möglich ist würde ich gerne den höchsten Wert einer Listbox(über eine Prozedur)ermitteln. KompilierenMarkierenSeparieren LG
Julian57 |
| | | | |
| | « Dieser Beitrag wurde als Lösung gekennzeichnet. » | | Julian Schmidt | hmmmmmm....so kann man auch die Zahlen in einer Listbox sortieren, sieht nur nicht schön aus :p Voraussetzung ist natürlich eine 'UnsortedListbox'. KompilierenMarkierenSeparierenWindowstyle 24
Window 100,200 - 100,200
Windowtitle "Beispiel zum Sortieren von Zahlen in einer Listbox"
var Liste&=Create("ListBox", %hwnd, 0, 0, 0, width(%hwnd), height(%hwnd)-40)
whileloop 100
AddString(Liste&,Str$((Rnd(20)*&loop)))
Endwhile
var sort_list&=Create("Button",%hwnd,"Sortieren",5,height(%hwnd)-35,width(%hwnd)-10,30)
while 1
waitinput
if getfocus(sort_list&)
Sort_Listbox_by_Number(Liste&)
EnableWindow sort_list&,0
Endif
Endwhile
Proc Sort_Listbox_by_Number
Parameters hdl&
declare index%
var num%=99999999999999999
var numbersortedlist&=Create("List", 0)
while GetCount(hdl&)<>0
whileloop GetCount(hdl&)
if num%>Val(GetString$(hdl&,&loop-1))
num%=Val(GetString$(hdl&,&loop-1))
index%=&loop-1
Endif
Endwhile
AddString(numbersortedlist&,Str$(num%))
DeleteString(hdl&,index%)
num%=99999999999999999
Endwhile
Whileloop GetCount(numbersortedlist&)
AddString(hdl&,GetString$(numbersortedlist&,&loop-1))
Endwhile
destroywindow(numbersortedlist&)
Return 1
EndProc
Nachtrag: Fünf Zeilen mehr, aber dafür sieht das sortieren besser aus xD KompilierenMarkierenSeparierenWindowstyle 24
Window 100,200 - 100,200
Windowtitle "Beispiel zum Sortieren von Zahlen in einer Listbox"
var Liste&=Create("ListBox", %hwnd, 0, 0, 0, width(%hwnd), height(%hwnd)-40)
whileloop 100
AddString(Liste&,Str$((Rnd(20)*&loop)))
Endwhile
var sort_list&=Create("Button",%hwnd,"Sortieren",5,height(%hwnd)-35,width(%hwnd)-10,30)
while 1
waitinput
if getfocus(sort_list&)
Sort_Listbox_by_Number(Liste&)
EnableWindow sort_list&,0
Endif
Endwhile
Proc Sort_Listbox_by_Number
Parameters hdl&,num%
declare index%
var numbersortedlist&=Create("List", 0)
var copy_orginal_list&=Create("List", 0)
Whileloop GetCount(hdl&)
AddString(copy_orginal_list&,GetString$(hdl&,&loop-1))
Endwhile
while GetCount(copy_orginal_list&)<>0
num%=99999999999999999
whileloop GetCount(copy_orginal_list&)
if num%>Val(GetString$(copy_orginal_list&,&loop-1))
num%=Val(GetString$(copy_orginal_list&,&loop-1))
index%=&loop-1
Endif
Endwhile
AddString(numbersortedlist&,Str$(num%))
DeleteString(copy_orginal_list&,index%)
Endwhile
ClearList hdl&
Whileloop GetCount(numbersortedlist&)
AddString(hdl&,GetString$(numbersortedlist&,&loop-1))
Endwhile
destroywindow(numbersortedlist&)
destroywindow(copy_orginal_list&)
Return 1
EndProc
Meine Frage habe ich damit zu meiner 100% Zufriedenstellung beantwortet. Der Thread ist damit geschlossen! |
| | | | | |
| | Dietmar Horn | Hallo Julian,
ich würde die zu sortierenden Zahlen mit führenden Nullen auffüllen und sie so einer sortierte Listbox zum Anzeigen werfen.
Um die Sortierung umzukehren würde ich jede der Zahlen von 1000, 10000, 100000, oder so subtrahieren, und mit diesen dann .die sortierte Listbox füllen.
Gruß Dietmar |
| | | Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 17.08.2011 ▲ |
| |
| | Julian Schmidt | Dietmar Horn (17.08.11)
Ich würde die zu sortierenden Zahlen mit führenden Nullen auffüllen und sie so einer sortierte Listbox zum Anzeigen werfen.
Welchen Befehl kann man zu solch einem Zweck verwenden? Etwa Format$(...)?
Nachtrag: Hab jetzt einfach mal eine Prozedur geschrieben welcher die höchste Zahl einer Listbox ermittelt. Das ist für mein Problem schon die Lösung! KompilierenMarkierenSeparierencls
var Liste&=Create("ListBox", %hwnd, 1, 0, 0, 100, height(%hwnd))
whileloop 100
AddString(Liste&,Str$((Rnd(20)*&loop)))
Endwhile
Create("Text",%hwnd,"Largest Number of Listbox: "+Str$(Listbox_Largest_Number(Liste&)),110,10,230,18)
Create("Text",%hwnd,"Smallest Number of Listbox: "+Str$(Listbox_Smallest_Number(Liste&)),110,30,230,18)
while 1
waitinput
Endwhile
Proc Listbox_Largest_Number
Parameters hdl&
declare num%
whileloop GetCount(hdl&)
case num%<Val(GetString$(hdl&,&loop-1)) : num%=Val(GetString$(hdl&,&loop-1))
Endwhile
Return num%
EndProc
Proc Listbox_Smallest_Number
Parameters hdl&
var num%=99999999999999999
whileloop GetCount(hdl&)
case num%>Val(GetString$(hdl&,&loop-1)) : num%=Val(GetString$(hdl&,&loop-1))
Endwhile
Return num%
EndProc
|
| | | | |
| | Julian Schmidt | hmmmmmm....so kann man auch die Zahlen in einer Listbox sortieren, sieht nur nicht schön aus :p Voraussetzung ist natürlich eine 'UnsortedListbox'. KompilierenMarkierenSeparierenWindowstyle 24
Window 100,200 - 100,200
Windowtitle "Beispiel zum Sortieren von Zahlen in einer Listbox"
var Liste&=Create("ListBox", %hwnd, 0, 0, 0, width(%hwnd), height(%hwnd)-40)
whileloop 100
AddString(Liste&,Str$((Rnd(20)*&loop)))
Endwhile
var sort_list&=Create("Button",%hwnd,"Sortieren",5,height(%hwnd)-35,width(%hwnd)-10,30)
while 1
waitinput
if getfocus(sort_list&)
Sort_Listbox_by_Number(Liste&)
EnableWindow sort_list&,0
Endif
Endwhile
Proc Sort_Listbox_by_Number
Parameters hdl&
declare index%
var num%=99999999999999999
var numbersortedlist&=Create("List", 0)
while GetCount(hdl&)<>0
whileloop GetCount(hdl&)
if num%>Val(GetString$(hdl&,&loop-1))
num%=Val(GetString$(hdl&,&loop-1))
index%=&loop-1
Endif
Endwhile
AddString(numbersortedlist&,Str$(num%))
DeleteString(hdl&,index%)
num%=99999999999999999
Endwhile
Whileloop GetCount(numbersortedlist&)
AddString(hdl&,GetString$(numbersortedlist&,&loop-1))
Endwhile
destroywindow(numbersortedlist&)
Return 1
EndProc
Nachtrag: Fünf Zeilen mehr, aber dafür sieht das sortieren besser aus xD KompilierenMarkierenSeparierenWindowstyle 24
Window 100,200 - 100,200
Windowtitle "Beispiel zum Sortieren von Zahlen in einer Listbox"
var Liste&=Create("ListBox", %hwnd, 0, 0, 0, width(%hwnd), height(%hwnd)-40)
whileloop 100
AddString(Liste&,Str$((Rnd(20)*&loop)))
Endwhile
var sort_list&=Create("Button",%hwnd,"Sortieren",5,height(%hwnd)-35,width(%hwnd)-10,30)
while 1
waitinput
if getfocus(sort_list&)
Sort_Listbox_by_Number(Liste&)
EnableWindow sort_list&,0
Endif
Endwhile
Proc Sort_Listbox_by_Number
Parameters hdl&,num%
declare index%
var numbersortedlist&=Create("List", 0)
var copy_orginal_list&=Create("List", 0)
Whileloop GetCount(hdl&)
AddString(copy_orginal_list&,GetString$(hdl&,&loop-1))
Endwhile
while GetCount(copy_orginal_list&)<>0
num%=99999999999999999
whileloop GetCount(copy_orginal_list&)
if num%>Val(GetString$(copy_orginal_list&,&loop-1))
num%=Val(GetString$(copy_orginal_list&,&loop-1))
index%=&loop-1
Endif
Endwhile
AddString(numbersortedlist&,Str$(num%))
DeleteString(copy_orginal_list&,index%)
Endwhile
ClearList hdl&
Whileloop GetCount(numbersortedlist&)
AddString(hdl&,GetString$(numbersortedlist&,&loop-1))
Endwhile
destroywindow(numbersortedlist&)
destroywindow(copy_orginal_list&)
Return 1
EndProc
Meine Frage habe ich damit zu meiner 100% Zufriedenstellung beantwortet. Der Thread ist damit geschlossen! |
| | | | |
| | Julian Schmidt | Dietmar Horn (17.08.11)
Um die Sortierung umzukehren würde ich jede der Zahlen von 1000, 10000, 100000, oder so subtrahieren, und mit diesen dann .die sortierte Listbox füllen.
Subtrahieren? Multiplizieren! |
| | | | |
| | Thomas Freier |
ich würde die zu sortierenden Zahlen mit führenden Nullen auffüllen und sie so einer sortierte Listbox zum Anzeigen werfen.
Meist ist ein Font mit gleicher Laufweite vorhanden, dann geht's auch mit Leerzeichen. KompilierenMarkierenSeparierencls
var LB&=Create("ListBox", %hwnd, 1, 10, 10, 224, 400)
var LBfont&=CreateFont("DejaVu Sans Mono",14,0,0,0,0)
SetFont LB&,LBfont&
var a$=space$(20)
AddString(LB&,right$(a$+"100",20))
AddString(LB&,right$(a$+"1",20))
AddString(LB&,right$(a$+"11",20))
AddString(LB&,right$(a$+"4",20))
waitinput
DeleteObject LBfont&
end
Nachtrag: Oder heute mit der Gridbox und jedem Font: KompilierenMarkierenSeparieren $H commctrl.ph
cls
var LB&=Create("GridBox", %hwnd,";1;220;"; 1, 10, 10, 224, 400)
setstyle LB&,getstyle(LB&) | ~LVS_NOCOLUMNHEADER
var LBfont&=CreateFont("Arial",14,0,0,0,0)
SetFont LB&,LBfont&
var a$=space$(20)
AddString(LB&,right$(a$+"100",20))
AddString(LB&,right$(a$+"1",20))
AddString(LB&,right$(a$+"11",20))
AddString(LB&,right$(a$+"4",20))
waitinput
DeleteObject LBfont&
end
|
| | | | |
|
AntwortenThemenoptionen | 10.395 Betrachtungen |
ThemeninformationenDieses Thema hat 3 Teilnehmer: |