Probleme mit Treeview und Event

  • Hallo erst einmal.

    Bisher habe hier immer wieder Hilfe/Anregungen/Tipps gefunden, um mein AI-Probleme zu lösen. Aber nun ist der Zeitpunkt gekommen, um mich mal direkt an euch zu wenden.
    Ich habe zwar die Suchfunktion benutzt, aber keine Lösung für mein Problem gefunden. Sollte ich etwas übersehen haben, dann sorry. ;)

    Es geht um folgendes:
    Ich habe eine Textdatei, in der ich meine Bootleg-DVD`s (+ weitere Infos) gelistet habe. Nun gehe ich hin, lese die Datumsangaben aus, schreibe diese in ein Array und erstelle daraus dann ein TreeView. Das sieht dann so aus:

    2007
    |
    |- 16-06-2007
    |- 17-06-2007
    |- 18-06-2007
    |- 19-06-2007
    |- 20-06-2007

    Soweit funktioniert das auch.
    Nun möchte ich, dass ein Screenshot zu der jeweiligen Show angezeigt wird, sobald ich diese im TV auswähle.

    Ein Problem ist, dass ich keine Idee habe, wie ich die Show (z.B. 16-06-2007) abfragen kann, um daraufhin ein Event auszulösen.
    Bisher habe ich es so gelöst, dass ich die Show makiere und über einen Button abfrage. (ich weiß, Newbie-Lösung ;) )

    Und da komme ich dann zu meinem nächsten Problem.
    Bei der ersten Abfrage erscheint das richtige Bild.
    Frage ich aber dann eine weitere Show ab, erscheint erneut das Bild von der ersten Show. Erst beim zweiten Abfragen der Show wird das korrekte Bild angezeigt.
    Und das Problem besteht dann permanent. Erst bei der zweiten Abfrage bekomme ich das richtige Bild angezeigt.

    Ich hoffe, dass ich mich halbwegs verständlich ausgedrückt habe.

    Aber eine letzte Frage hätte ich da noch. Es sind insgesamt ca 550 DVD`s, die ich auflisten möchte. Wenn ich da mit Array und Treeview arbeiten möchte, kann es da zu irgendwelchen Performance-Problemen kommen?

    Ich danke euch schon mal im voraus.

    MgG


    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <TreeViewConstants.au3>
    #include <StaticConstants.au3>
    #include <INet.au3>
    #include <String.au3>
    #include <File.au3>
    #include <array.au3>
    #include <GUIConstants.au3>
    #include <GuiTreeView.au3>
    #include <GuiConstants.au3>

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

    Dim $Allarray, $array2, $a, $b, $s, $t, $u, $v, $w, $x, $y, $z, $arrayPic, $showtemp, $iIndex

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

    $GUI = GUICreate("List", 1200, 750, -1, -1)
    $TreeView = GUICtrlCreateTreeView(6, 6, 350, 700, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
    $TreeItem2007 = GUICtrlCreateTreeViewItem("2007", $TreeView)
    $Button = GUICtrlCreateButton("go", 370, 675, 70, 25)

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

    GUICtrlSetState($TreeItem2007, BitOR($GUI_FOCUS, $GUI_DEFBUTTON))

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

    GUISetState(@SW_SHOW, $GUI)

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

    ReadArray2007()

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button
    $v = (StringFormat("%s", GUICtrlRead($TreeView, 1)))
    MsgBox(64,"",$v)
    GUICtrlCreatePic ($v & ".jpeg", 370, 5, 800 , 650)
    EndSelect
    WEnd

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

    Func ReadArray2007()
    _FileReadToArray("2007.txt",$Allarray)
    For $a = 1 to $Allarray[0]
    $array2 = _StringBetween($Allarray[$a],'(', ')')
    _GUICtrlTreeView_InsertItem($TreeView, $array2[0], $TreeItem2007)
    next
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von bjhunnicut (30. Juli 2009 um 11:41)

  • Ups, ich wusste, ich habe was vergessen.

    Sie sieht wie folgt aus:
    (16-06-2007);[Colonial Center, Columbia, SC, USA];[1 cameras];[5 DVD];[16-06-2007.jpeg]
    ....

  • Hab ein paar Sachen umgestellt. Im OnEventMode ist alles einfacher ;)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <TreeViewConstants.au3>
    #include <StaticConstants.au3>
    #include <INet.au3>
    #include <String.au3>
    #include <File.au3>
    #include <array.au3>
    #include <GUIConstants.au3>
    #include <GuiTreeView.au3>
    #include <GuiConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    Dim $Allarray, $array2, $a, $b, $s, $t, $u, $v, $w, $x, $y, $z, $arrayPic, $showtemp, $iIndex

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

    $GUI = GUICreate("List", 1200, 750, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ende")

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

    Global $TreeView = GUICtrlCreateTreeView(6, 6, 350, 700, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
    $TreeItem2007 = GUICtrlCreateTreeViewItem("2007", $TreeView)
    $Pic = GUICtrlCreatePic("", 370, 5, 800, 650)

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

    ReadArray2007()

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

    GUICtrlSetState($TreeItem2007, BitOR($GUI_FOCUS, $GUI_EXPAND))

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

    GUISetState(@SW_SHOW, $GUI)

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

    While 1
    Sleep(100000)
    WEnd

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

    Func ReadArray2007()
    _FileReadToArray("2007.txt", $Allarray)
    For $a = 1 To $Allarray[0]
    $array2 = _StringBetween($Allarray[$a], '(', ')')
    GUICtrlCreateTreeViewItem($array2[0], $TreeItem2007)
    GUICtrlSetOnEvent(-1, '_ReadTree')
    Next
    EndFunc ;==>ReadArray2007

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

    Func _Ende()
    Exit
    EndFunc ;==>_Ende

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

    Func _ReadTree()
    Local $v = GUICtrlRead($TreeView, 1)
    GUICtrlSetImage($Pic, $v & ".jpeg")
    MsgBox(64, "", $v)
    EndFunc ;==>_ReadTree

    [/autoit]