ListIconGadget sortieren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

Ich habe vielleicht einen etwas unkonventionellen Ansatz, der zumindest für das Kegelbeispiel funktionieren könnte.
Falls effektiv derjenige gewinnt mit den meisten Punkten bzw. Kegeln,
dann könnte man ein zusätzliche (unsichtbare) Spalte für die Summe (Punkte/Kegel) bilden und diese dann sortieren, womit dann auch der Sieger oben landen müsste.
Funktioniert aber nur, wenn die Gesamtpunktzahl den Sieger bestimmt oder sich die Spalten entsprechend gewichten lassen.
Wisimita
Beiträge: 13
Registriert: 03.10.2005 13:07

Beitrag von Wisimita »

Hallo,
erst noch einmal vielen Dank für die vielen hilfsbereiten User hier im Forum.
Was in VB.NET geht, geht aber sicherlich auch in PureBasic.
Hier der Code in VB für mein Problem:

Code: Alles auswählen

Public Sub VBTest()
        Titel = "XYZ"
        Dim dt As DataTable
        Dim dr As DataRow
        dt = New DataTable("MeineDaten")
        dt.Columns.Add(New DataColumn("Ergebnis01", GetType(Integer)))
        dt.Columns.Add(New DataColumn("Ergebnis02", GetType(Integer)))
        dt.Columns.Add(New DataColumn("Ergebnis03", GetType(Integer)))
        dt.Columns.Add(New DataColumn("Ergebnis04", GetType(Integer)))
        dt.Columns.Add(New DataColumn("Ergebnis05", GetType(Integer)))
        dt.Columns.Add(New DataColumn("Ergebnis06", GetType(Integer)))
        dt.Columns.Add(New DataColumn("Ergebnis07", GetType(Integer)))
        dt.Columns.Add(New DataColumn("Ergebnis08", GetType(Integer)))
        dt.Columns.Add(New DataColumn("Prozent", GetType(Single)))
        For i = 1 To k
            dr = dt.NewRow
            dr(0) = XYZ01(i)
            dr(1) = XYZ02(i)
            dr(2) = XYZ03(i)
            dr(3) = XYZ04(i)
            dr(4) = XYZ05(i)
            dr(5) = XYZ06(i)
            dr(6) = XYZ07(i)
            dr(7) = XYZ08(i)
            Prozent(i) = XYZ08(i) / YYYY
            dr(8) = Prozent(i)
            dt.Rows.Add(dr)
            Prozent(i) = Prozent(i) * 100
        Next
        FileClose(7)
        dr = dt.NewRow()
        dr(0) = DBNull.Value
        dr(1) = DBNull.Value
        dr(2) = DBNull.Value
        dr(3) = DBNull.Value
        dr(4) = DBNull.Value
        dr(5) = DBNull.Value
        dr(6) = DBNull.Value
        dr(7) = ZZZZ
        dr(8) = 1
        dt.Rows.Add(dr)
        Dim dv As New DataView(dt)
        Dim dc As New DataColumn()
        Dim tempstr As String
        Dim myGridStyle As DataGridTableStyle = New DataGridTableStyle()
        myGridStyle.DataGrid = Me.dg
        myGridStyle.MappingName = "MeineDaten"
        For Each dc In dv.Table.Columns
            tempstr = tempstr + dc.ColumnName + " DESC, "
            Dim myDgTbc As DataGridTextBoxColumn = New DataGridTextBoxColumn()
            myDgTbc.MappingName = dc.ColumnName
            myDgTbc.HeaderText = myDgTbc.MappingName
            myDgTbc.NullText = ""
            If dc.ColumnName = "Prozent" Then
                myDgTbc.Format() = "p"
                Dim nfi As NumberFormatInfo = New CultureInfo(System.Threading. _
                Thread.CurrentThread.CurrentCulture.ToString(), False).NumberFormat
                nfi.PercentDecimalDigits = 4
                myDgTbc.FormatInfo = nfi
            End If
            myDgTbc.Alignment = HorizontalAlignment.Right
            myDgTbc.Width = 75.0
            myGridStyle.GridColumnStyles.Add(myDgTbc)
        Next
        tempstr = tempstr.Substring(0, tempstr.Length - 2)
        dv.Sort() = tempstr

        dg.TableStyles.Add(myGridStyle)
        dg.TableStyles("MeineDaten").GridColumnStyles(8).Width = 90
        dg.DataSource = dv

        dg.Visible = True
        dg.Size = New Size(784, 448)

    End Sub
Antworten