Deutsch
Forum

Gridboxen

 

Abigail
Hallo Leute,
ich habe mal ein etwas geändertes Beispiel für eine Sortierung nach Substrings verwendet. Im Prinzip klappt das ja auch ganz wunderbar, aber ab einer gewissen Größe, bei mir Satzgröße 248 Byte * ca. 400 Sätze, funktioniert die Sortierung der GRIDBOX ganz einfach nicht mehr. So zwischen 400 und 500 Datensätzen ist einfach eine Sortierung nur nach oftmaligem Betätigen (wenn überhaupt) des 'Sortierbuttons' möglich.
Ist das ein Bug oder habe ich da irgendwo eine Beschränkung überlesen??

Unten das Original Programm aus der Hilfe
Declare Handle Grid, btn1, btn2, btn3, btn4, btn5
WindowTitle "Sortiertes Grid"
Window 600, 400
Grid  = Create("Gridbox", %HWnd, "Nummer;0;60;Name;0;100;Ort;0;120;Gehalt;0;60", 0, 10, 50, 340, 200)
btn1  = Create("Button",  %HWnd, "Sort", 10, 10, 60, 25)
btn2  = Create("Button",  %HWnd, "Sort", 75, 10, 60, 25)
btn3  = Create("Button",  %HWnd, "Sort", 170, 10, 60, 25)
btn4  = Create("Button",  %HWnd, "Sort", 290, 10, 60, 25)
btn5  = Create("Button",  %HWnd, "Ende", 500, 10,60, 25)
AddString(Grid, "500|Maier|Köln|4000")
AddString(Grid, "400|Schmidt|Hamburg|3000")
AddString(Grid, "300|Bauer|Mannheim|3500")
AddString(Grid, "200|Klein|Düsseldorf|3000")
AddString(Grid, "100|Fuchs|Stuttgart|7500")

WhileNot Clicked(btn5)

    WaitInput
    ClearList 0
    Move("HandleToList", Grid)

    If Clicked(btn1)

        SortList 5

    ElseIf Clicked(btn2)

        SortList "|", 2, 1

    ElseIf Clicked(btn3)

        SortList "|", 3, 1

    ElseIf Clicked(btn4)

        SortList "|", 4, 5

    EndIf

    ClearList Grid
    Move("ListToHandle", Grid)
    Case %Key = 2 : Break

EndWhile


Danke für Eure Antwort,

Abigail
 
04.07.2016  
 




Jörg
Sellmeyer
Ich glaube, da bist du einfach zu ungeduldig. Wenn viele Datensätze vorhanden sind, dauert der Sortiervorgang einfach etwas länger. Besonders im Interpretermodus macht sich das dann bemerkbar.

Ich hab dein Programm mal noch etwas geändert, damit es "ruhiger" läuft.
So wird die Sortierroutine nur aufgerufen, wenn einer der Buttons geklickt wird.
Declare Handle Grid, btn1, btn2, btn3, btn4, btn5
WindowTitle "Sortiertes Grid"
Window 600, 400
Grid = Create("Gridbox", %HWnd, "Nummer;0;60;Name;0;100;Ort;0;120;Gehalt;0;60", 0, 10, 50, 340, 200)
btn1 = Create("Button", %HWnd, "Sort", 10, 10, 60, 25)
btn2 = Create("Button", %HWnd, "Sort", 75, 10, 60, 25)
btn3 = Create("Button", %HWnd, "Sort", 170, 10, 60, 25)
btn4 = Create("Button", %HWnd, "Sort", 290, 10, 60, 25)
btn5 = Create("Button", %HWnd, "Ende", 500, 10,60, 25)
var handle btn6 = Create("Button", %HWnd, "Test", 400, 10,60, 25)

Proc SortMyList

    Parameters Int SortString
    ClearList 0
    Move("HandleToList", Grid)
    SortList "|",SortString,1
    ClearList Grid
    Move("ListToHandle", Grid)

EndProc

Randomize

WhileLoop 1,1500,5

    AddString(Grid, Format$("000",&Loop) + "|Maier|Köln|" + Str$(Rnd(8000)))
    AddString(Grid, Format$("000",&Loop + 1) + "|Schmidt|Hamburg|" + Str$(Rnd(8000)))
    AddString(Grid, Format$("000",&Loop + 2) + "|Bauer|Mannheim|" + Str$(Rnd(8000)))
    AddString(Grid, Format$("000",&Loop + 3) + "|Klein|Düsseldorf|" + Str$(Rnd(8000)))
    AddString(Grid, Format$("000",&Loop + 4) + "|Fuchs|Stuttgart|" + Str$(Rnd(8000)))

Wend

While 1

    WaitInput
    Case Clicked(btn5):Break

    If Clicked(btn1)

        SortMyList 1

    ElseIf Clicked(btn2)

        SortMyList 2

    ElseIf Clicked(btn3)

        SortMyList 3

    ElseIf Clicked(btn4)

        SortMyList 4

    ElseIf Clicked(btn6)

        print "a"

    EndIf

    Case %Key = 2 : Break

EndWhile


Jetzt wäre es natürlich noch interessant zu wissen, was genau du geändert hast, um ausschließen zu können, ob es an diesen Änderungen liegt.
 
XProfan X3
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
04.07.2016  
 




Abigail
Hallo Jörg, danke für die Info, bzw Verbesserung. Meine Änderungen waren eigentlich nur marginal. 1. Insgesamt 7 spalten in der Tabelle, 2. natürlich Benennung und Größe der einzelnen Spalten. Dazu natürlich für jede Spalte Auf und Ab Sortier-Button, also insgesamt 14 Stück.
Nun, ich habe mittlerweile eine Lösung gefunden, die zwar ein wenig umständlich erscheint, aber funktioniert. Trotz der Menge der Sätze, ich habe es bis 5000 probiert, in einer Zehntelsekunde sortiert.
Sieht dann ungefähr so aus:

If Clicked(SORT[1])
ClearList 0
Move("HandleToList", GRID)
SortList "|", 1 ,5
ClearList Grid
Move("ListToHandle", Grid)
ElseIf Clicked(SORT[2])

und so weiter bis SORT[14]
Das funktioniert wirklich ohne jede Verzögerung selbst im Interpreter Modus.

Warum die Beispielroutine wie

While ...
ClearList 0
Move("HandleToList", GRID)

If Clicked(SORT[1])
SortList "|", 1 ,5
ElseIf Clicked(SORT[2])
SortList "|", 2 ,5
"" ""
ElseIf Clicked(SORT14])
SortList "|", 7 ,-3
ENDIF

ClearList Grid
Move("ListToHandle", Grid)

ENDWHILE

so unendlich träge ab einer gewissen Größe, bzw. gar nicht funktioniert, erschließt sich mir nicht ganz.

Trotzdem Danke für Deine Tips, werde ich mal morgen einsetzen um zu sehen, ob es damit auch funktioniert.

Gruß,
Abigail
 
04.07.2016  
 




maroro
Hallo in die Runde ...Gridboxen sortieren ist auch gerade mein Thema.
Dabei klappt das sortieren wunderbar einzig die Lösung jeder Spalte einen Knopf zu spendieren gefällt mir garnicht. Wie ist es möglich einen Klick auf die Spaltenüberschrift zu erkennen auch dann noch korrekt wenn die Größe der Spalte verändert wurde?

Bin gespannt auf euere Vorschläge

maroro
 
25.11.2017  
 




Thomas
Freier
Ist hier enthalten:  [...] 
 
Gruß Thomas
Windows XP SP2, XProfan X2
27.11.2017  
 




maroro
Habe es gefunden ...Danke Thomas
und wenn ich darf würde ich den entsprechenden Quelltext auch posten.
 
28.11.2017  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.915 Betrachtungen

Unbenanntvor 0 min.
RudiB.13.02.2024
Stringray05.01.2022
H.Brill01.10.2021
Langer11.01.2021
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie