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 | 11.457 Betrachtungen |  
 ThemeninformationenDieses Thema hat 3 Teilnehmer:  |