ListviewItems im nachhinein noch ändern, ohne das skript zu verändern?

  • Hallo, ich hab ein Problem..möchte ein Listview in mein skript einbauen, dass soll die Elemente aus der Liste von einer .ini ziehen.
    weiß jemand wie das geht?
    Am besten so einfach wie möglich bin nämlich anfänger;-)

    Dake schon mal!

  • Ini in Array lesen,
    For - Schleife zum Bestücken des Listviews. ;)

    In der Hilfe lesen: IniReadSection, For-Next-Schleife, GuiCtrlCreateListViewItem, evtl Arrays generell, falls das noch fehlt.

    limette

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • Um meinen Vorpst mal in Code zu fassen:

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    $aIni = IniReadSection("Inidatei.ini","DeineSection") ; Ini in Array lesen
    If @error Then Exit MsgBox(0,"","Ini kann nicht gelesen werden")

    [/autoit] [autoit][/autoit] [autoit]

    Local $hListView = GUICtrlGetHandle($cListView)
    _GUICtrlListView_DeleteAllItems($hListView) ; Alle Items löschen

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $aIni[0][0]
    _GUICtrlListView_AddItem($hListView,$aIni[$i][0]) ; Item hinzufügen (Schlüssel)
    _GUICtrlListView_AddSubItem($hListView,$i-1,$aIni[$i][1],1) ; SubItem hinzufügen (Wert)
    Next

    [/autoit]

    LG

  • okay, aber was ist ein array?
    und geht das nicht so?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 1016, 807, 159, 112)
    $JuBi = GUICtrlCreateLabel(" JuBi Beachers-Cup", -13, -5, 1148, 101)
    GUICtrlSetFont(-1, 60, 400, 0, "Monotype Corsiva")
    GUICtrlSetColor(-1, 0xFFFF00)
    GUICtrlSetBkColor(-1, 0x316AC5)
    $Label1 = GUICtrlCreateLabel("Spielplan", 312, 104, 144, 41)
    GUICtrlSetFont(-1, 24, 800, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Gruppe A", 320, 168, 114, 33)
    GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
    $ListView1 = GUICtrlCreateListView("Team 1 | Team 2", 24, 208, 506, 590)
    $ListView1_0 = GUICtrlCreateListViewItem($a "|" $b , $ListView1) <-----
    $a ist noch nicht definiert aber wird es noch
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]
  • und geht das nicht so?


    Nein so gehts nicht.

    Hier mal mein post von eben in dein Script integriert (das geht sogar per Copy n paste ;) - mit 2 kleinen "manuellen" Änderungen )

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GuiListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 1016, 807, 159, 112)
    $JuBi = GUICtrlCreateLabel(" JuBi Beachers-Cup", -13, -5, 1148, 101)
    GUICtrlSetFont(-1, 60, 400, 0, "Monotype Corsiva")
    GUICtrlSetColor(-1, 0xFFFF00)
    GUICtrlSetBkColor(-1, 0x316AC5)
    $Label1 = GUICtrlCreateLabel("Spielplan", 312, 104, 144, 41)
    GUICtrlSetFont(-1, 24, 800, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Gruppe A", 320, 168, 114, 33)
    GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
    $ListView1 = GUICtrlCreateListView("Team 1 | Team 2", 24, 208, 506, 590)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $aIni = IniReadSection("Inidatei.ini","DeineSection") ; Ini in Array lesen
    If @error Then Exit MsgBox(0,"","Ini kann nicht gelesen werden")

    [/autoit] [autoit][/autoit] [autoit]

    Local $hListView = GUICtrlGetHandle($ListView1)
    _GUICtrlListView_DeleteAllItems($hListView) ; Alle Items löschen

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $aIni[0][0]
    _GUICtrlListView_AddItem($hListView,$aIni[$i][0]) ; Item hinzufügen (Schlüssel)
    _GUICtrlListView_AddSubItem($hListView,$i-1,$aIni[$i][1],1) ; SubItem hinzufügen (Wert)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]

    So?


    //EDIT gerade auch mal getestet mit folgender Ini:

    Code
    [DeineSection]
    Deutschland=Ghana
    Afrika=Frankreich
  • j, danke das kommt der sache schon nächer aber ich versteh nicht ganz, was du mir dem

    Spoiler anzeigen
    [autoit]

    For $i = 1 To $aIni[0][0]
    _GUICtrlListView_AddItem($hListView,$aIni[$i][0]) ; Item hinzufügen (Schlüssel)
    _GUICtrlListView_AddSubItem($hListView,$i-1,$aIni[$i][1],1) ; SubItem hinzufügen (Wert)
    Next

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]

    meinst...
    Soll ich vielleicht mal erzählen, wofür ich mein Skript mache?

  • Okay mache ich jetzt..
    also meine Ini sieht so aus:

    [Gruppe A]
    1)=Homies
    2)=Nüsse
    3)=Chipmunks


    Nun möchte ich dass alle mal gegeneinander spielen, und der Spielplan in einer Liste angezeigt wird..
    wie bekomme ich das dann hin?

  • So müsste das funktionieren.
    - Natürlich noch an Listview & Ini anpassen & die deklaration von $player rausnehmen, das war nur zum Testen. =)

    [autoit]

    ;$player = IniReadSection( 'deine.ini', 'player' )

    [/autoit][autoit][/autoit][autoit]

    Local $player[5][2] = [ [ 4, 0 ], [ 0, 'a' ], [ 0, 'b' ], [ 0, 'c' ], [ 0, 'd' ] ]

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To $player[0][0]
    For $j = $i To $player[0][0]
    If $i = $j Then ContinueLoop
    ;GUICtrlCreateListViewItem( $player[$i][1] & '|' & $player[$j][1], $ListView1 )
    ConsoleWrite( $player[$i][1] & ' - ' & $player[$j][1] & @CRLF )
    Next
    Next

    [/autoit]


    Zorro, mir sind die UDF-Befehle zur Listview nicht geläufig,... ;)

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • Okay cool danke;-)
    Also das mache ich dann halt mit allen anderen Elementen..
    wenn ich das habe, möchte ich, dassIch den Spielstand eintippen kann und er mit dann sagt wer am meisten Punkte hat..
    geht das auch?(sorry, dass ich jetzt vom eigentllichen Thema abweiche..)

  • Hm. Dazu würde ich einen extra Bereich erstellen - zwei Inputfelder, einen Absenden-Button, ein Label mit Text wie "Spielstand für das Spiel: a - b eintragen".
    Dann halt bei Klick auf ein ListViewItem den Text des Labels aktualisieren - Hinweis: OnEventMode dürfte da angebracht sein ^^ - Und in der Ini extra die Punkte der Mannschaften passend aufaddieren.
    Dann kannst du die Mannschaften & Werte in eine extra Listview eintragen und die nach Größe sortieren lassen...

    Ist etwas mehr, wo du dich reinlesen musst.. ;)

    Aber das ist ja auch dein Projekt, nicht unseres :D
    Vielleicht bastelt dir SeuBo ja noch was zusammen ;)

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • Soo hier jetzt nochmal dein Script von eben auf deine Ini angepasst.

    Viel Spaß :D

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 1016, 807, 159, 112)
    $JuBi = GUICtrlCreateLabel(" JuBi Beachers-Cup", -13, -5, 1148, 101)
    GUICtrlSetFont(-1, 60, 400, 0, "Monotype Corsiva")
    GUICtrlSetColor(-1, 0xFFFF00)
    GUICtrlSetBkColor(-1, 0x316AC5)
    $Label1 = GUICtrlCreateLabel("Spielplan", 312, 104, 144, 41)
    GUICtrlSetFont(-1, 24, 800, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Gruppe A", 320, 168, 114, 33)
    GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
    $ListView1 = GUICtrlCreateListView("Team 1 | Team 2", 24, 208, 506, 590)
    $hListView = GUICtrlGetHandle($ListView1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Von hier
    _GUICtrlListView_SetColumnWidth($hListView,0,253)
    _GUICtrlListView_SetColumnWidth($hListView,1,253)

    [/autoit] [autoit][/autoit] [autoit]

    $sIniDatei = @ScriptDir & "\Gruppen.ini"
    $aGruppe = IniReadSection($sIniDatei, "Gruppe A")
    Dim $aTmp[$aGruppe[0][0]]
    For $j = 1 To $aGruppe[0][0] ; in Temp-Array übertragen
    $aTmp[$j - 1] = $aGruppe[$j][1]
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $aTmp = _ArrayCombinations($aTmp, 2, "=")
    For $j = 1 To $aTmp[0]
    $aSplit = StringSplit($aTmp[$j], "=", 3)
    _GUICtrlListView_AddItem($hListView,$aSplit[0])
    _GUICtrlListView_AddSubItem($hListView,$j-1,$aSplit[1],1)
    Next
    ; Bis hier

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Ich geh jetzt erstmal in die Sonne :party:

  • Also ich hab das jetzt so gemacht:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 1016, 807, 159, 112)
    $JuBi = GUICtrlCreateLabel(" JuBi Beachers-Cup", -13, -5, 1148, 101)
    GUICtrlSetFont(-1, 60, 400, 0, "Monotype Corsiva")
    GUICtrlSetColor(-1, 0xFFFF00)
    GUICtrlSetBkColor(-1, 0x316AC5)
    $Label1 = GUICtrlCreateLabel("Spielplan", 312, 104, 144, 41)
    GUICtrlSetFont(-1, 24, 800, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Gruppe A", 320, 168, 114, 33)
    GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
    $ListView1 = GUICtrlCreateListView("Team 1 | Team 2", 24, 208, 506, 590)
    $a1 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "1)","error")
    $a2 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "2)","error")
    $a1 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "3)","error")
    $a1 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "4)","error")
    $a1 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "5)","error")
    $a1 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "6)","error")
    $a1 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "7)","error")
    $List1 = GUICtrlCreateListViewItem( $a7 "|" $a2 ,$ListView1 ) <---------- hier hab ich das so probiert

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]

    Aber das klappt bei mir in der 20. Zeile nicht..
    Was kann ich da machen???
    Bitte helft mir,denn so bekomme ich das nicht hin, wie das oben angeboten wurde...
    danke

  • Das macht doch jetzt grad keinen Sinn mehr - warum hast du unsere Lösungen nicht verwendet ?
    Sondern beharrst immer noch auf deinem ersten Versuch, der bereits als nicht angemessen abgestempelt wurde ?

    Deine Version ist einfach nur undynamisch, funktioniert zumindest teils, wenn du die Variablen richtig benennst.

    [autoit]

    $a1 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "1)","error")
    $a2 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "2)","error")
    $a3 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "3)","error")
    $a4 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "4)","error")
    $a5 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "5)","error")
    $a6 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "6)","error")
    $a7 = IniRead ( @Scriptdir & "\Teams.ini", "Gruppe A", "7)","error")

    [/autoit]

    Aber wie gesagt, das ist äußerst unpassend für dein Vorhaben.... -.-

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • Weil ich eure Version nicht verstehe mit den Arrays..habe mir schon alles zu den arrays durchgelesen...

  • Wenn du dir das alles mit Verstand durchgelesen - und nicht nur überflogen - hast, dann dürftest du mit etwas Nachlesen in der Hilfe auch unsere Lösungen verstehen.

    Aber dass du jetzt unsere Lösungen einfach ignorierst und deinen Fehler wiederholst..

    unfassbar.

    Wir müssen dir nicht helfen. Ist 'ne freiwillige Sache, aber sowas vermiest einen echt den Spaß am Helfen -.-


    Arrays - einfach mal Beispiele durchprobieren, selber tüfteln, dann kriegst du das auch raus. Aber ohne wirst du wohl erstmal nicht weiterkommen.
    Sind übrigens in gefühlten hundermillionen anderen Topics bis ins kleinste Detail erklärt... und wenn nach dem Tut von Bugfix noch Unklarheiten sind, die du auch via Google & Forensuche nicht beseitigen kannst - was ziemlich unwahrscheinlich ist - dann kannst du auch einfach nochmal nachfragen.

    Aber nein - was ich nicht verstehe schmeiß ich in die Ecke und spiel mit dem fehlerhaften Mist weiter rum.
    Bitte... mach doch... -.-

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • Hab mir das gerade nocheinmal durchgelesen..also bei mir ist das Problem, dass er Meine Ini falsch anzeigt..wie kann ich machen, dass er iniread("Teams.ini","Gruppe A", "7) ausliest?
    das kann ich nicht machen..also dass er genau dieses Element in der 7. Zeile der Ini nimmt und gegen das z.B. 2. Element stellt...

    Bitte helft mir doch...

  • Um ehrlich zu sein versteh ich kein Stück von dem, was du eigentlich willst...

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.