Mehrere gleiche Einträge in Liste

  • Möchte in eine Liste mehrere gleiche Einträge anzeigen lassen können!
    Oder habt ihr eine Empfehlung wie ich das hier besser lösen könnte, also anstatt der Listen! (siehe Bild im Anhang)

    Gruß & danke im Vorraus!


    Edit:
    Zur Info. Wenn man Oben eine Übung eingibt und die entsprechende Radiobox drückt, dann auf "Neue Übung" klickt erscheint die links jeweils in der Liste des Entsprechenden Trainingstages (EInheit 1-3) (Wird noch mit Labels versehen!)
    Selektiert man Einträge, z.B. Bankdrücken und klickt auf den Pfeil wird diese Übung (multiple Selektion möglich) in den Momentanen Trainingstagplaner eingefügt. Selektiert man dann die Übung & klickt auf "Daten" kann man die Daten für Wiederholungen, Satzanzahl etc eingeben, die dann eingespeichert werden (in .ini und dann in die Liste eingelesen)

    Einmal editiert, zuletzt von CelloGrando (8. August 2010 um 18:38)

  • Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>
    $GUI = GUICreate("", 150, 170)
    $List1 = GUICtrlCreateList("", 10, 10, 130, 150)
    _GUICtrlListBox_AddString($List1, "Hallo")
    _GUICtrlListBox_AddString($List1, "Hallo")
    _GUICtrlListBox_AddString($List1, "Hallo")
    _GUICtrlListBox_AddString($List1, "Hallo")
    _GUICtrlListBox_AddString($List1, "Welt!")
    _GUICtrlListBox_AddString($List1, "Welt!")
    _GUICtrlListBox_AddString($List1, "Welt!")
    _GUICtrlListBox_AddString($List1, "Welt!")
    GUISetState(@SW_SHOW)

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

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

    [/autoit]

    Für den rechten Bereich (Übung, Sätze, Wiederholungen etc.) könntest du dich vlt. mit Listviews auseinandersetzen.
    Dadurch würde die GUI und warscheinlich auch dein Skript etwas übersichtlicher.

  • Also geht das ganze so einfach?
    Dann die Frage:
    Wieso funktioniert das so nicht, mit dem Popup, also wieso überschreibt er Dinge, sobald ich 2 Übungen habe und zb die gleiche Satzanzahl eingebe!

    Spoiler anzeigen
    [autoit]


    Rauseditiert :)

    [/autoit]

    2 Mal editiert, zuletzt von CelloGrando (8. August 2010 um 18:18)

  • Hallo CelloGrando,

    Das eine ListBox mehrere geleichartige Einträge haben kann, kannst du anhand dieses Beispiels nachvollziehen:

    Spoiler anzeigen
    [autoit]

    stants.au3>
    #Include <GuiListBox.au3>
    #include <ListboxConstants.au3>
    #include <File.au3>

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

    Global $szDrive,$szDir,$szFName,$szExt, $Ini = @ScriptDir & "\Flaggen.ini"

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

    $hGUI = GUICreate("Flaggen", 300, 130)
    $hListe = GUICtrlCreateList("", 10, 10, 180, 80,$LBS_NOTIFY)
    $hNeu = GUICtrlCreateButton("...",200,10,30,25)
    $hVorschau = GUICtrlCreatePic(@ScriptDir & "\Flaggen\NA.jpg", 210, 40, 36, 24)
    $hIniSave = GUICtrlCreateButton("&Speichern",10,100,80)
    $hIniLoad = GUICtrlCreateButton("&Laden",210,100,80)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $hIniLoad
    $aListe = IniReadSection($Ini,"Flaggen")
    for $i = 0 to UBound($aListe) -1
    if StringStripCR($aListe[$i][1]) <> "" Then _GUICtrlListBox_InsertString($hListe,$aListe[$i][1])
    Next
    case $hIniSave
    for $i = 0 to _GUICtrlListBox_GetCount($hListe) -1
    IniWrite($Ini,"Flaggen","Land"&$i,_GUICtrlListBox_GetText($hListe,$i))
    Next
    case $hNeu
    $sAlt = GUICtrlRead($hListe)
    $sPlus = FileOpenDialog("Land auswählen:",@ScriptDir & "\Flaggen","Bilder (*.jpg)",3,"",$hGUI)
    _PathSplit($sPlus,$szDrive,$szDir,$szFName,$szExt)
    ConsoleWrite($szFName & @CRLF)
    _GUICtrlListBox_InsertString($hListe,$szFName,0)
    Case $hListe
    GUICtrlSetImage($hVorschau, @ScriptDir & "\Flaggen\" & GUICtrlRead($hListe) & ".jpg")
    EndSwitch
    WEnd

    [/autoit]

    du benötigst dazu noch Flaggen.zip
    Ich schätze das Problem bei dir ist dein Aufbau der INI In dem Beispiel wird auch eine INI verwendet und trotzdem funktioniert es. Übrigens meine Aussage in der SB stimmt nicht, da obiges Skript auch mit

    [autoit]

    $idListe = GUICtrlCreateList("", 10, 10, 180, 80, BitOR($WS_VSCROLL, $LBS_NOTIFY, $LBS_SORT))

    [/autoit]

    funktioniert es.
    Im übrigen gebe ich i2c recht: eine Listview würde es übersichtlicher machen. Ich würde das ganze mit SQLite anstelle von INI lösen, es gibt hier im Forum auch ein schönes Beispiel von Oscar der eine Listview zusammen mit TXT-Files benutzt heist warscheins ListView Datenbank, kannst es dir ja einmal anschauen, damit du den Vorteil der Listview erkennst,

    Stelle doch bitte einmal ein INI-File ein,

    mfg (Auto)Bert

  • Hier die geforderte Ini-Datei:

    Spoiler anzeigen

    Er zeigt mir jetzt alles gescheit an, nur bei French Press die Notiz "gut" nicht, da schon enthalten und die Saetze "3" nicht, da schon enthalten.

    Schaue mir den Code morgen mal an den du gepostet hast, Listview hört sich aufjedenfall besser an. Mit Ini zu lösen war halt das einfachste, für mich zu dem Zeitpunkt. Muss dazu sagen bin erst vorgestern mit AutoIt angefangen "ernsthafter" zu programmieren, da mein Excel Trainingsplan einfach nicht mehr taugt.
    Eventuell werde ich nachher sogar noch ne Grafische Auswertung der Trainingseinheiten hinzufügen, aber erstmal muss der grobe Aufbau hinhauen :)


    EDIT:
    Habs jetzt mit Listview gelöst und habe nun KEINE Probleme mehr mit doppelten Einträgen! Sieht besser aus und funktioniert einwandfrei! Danke an euch 2.

    2 Mal editiert, zuletzt von CelloGrando (8. August 2010 um 18:14)