gewählte Datei wird nicht den Tabs zugeordnet/aktualisiert

  • Ich habe bisher nur kleine Programme gescriptet und stoße nun wohl an meine Grenzen ;) Mit der Hilfe und der Suche im Forum konnte ich keine passende Lösung finden.

    Es soll eine GUI werden, in der die Tabs verschiedene ZIP-Dateien mit dazugehörigen Informationen aufnehmen. Leider wird entweder die Datei nicht angezeigt (wenn ich den GUICtrlCreateInput in der Buttonabfrage weglasse) oder es wird immer die zuletzt ausgewählte Datei in jedem Tab angezeigt. Tab drei und vier haben noch keinen Inhalt, der wäre dann natürlich eins und zwei ähnlich. Die Auswahl der Dateien funktioniert, File1 und File2 haben den entsprechenden Inhalt. Nur mit der Anzeige klappt es nicht. Die einzige Lösung die mir bisher einfiel, wäre die Dateiauswahl nicht mit in den Tabs unterzubringen. Aber dann sind sie ja von den Informationen getrennt. Die eingetragen Informationen werden den Tabs zugeordnet und auch richtig angezeigt, es ist nur die Anzeige der ausgewählten Datei, die mir Kopfzerbrechen bereitet.

    Irgendwie komme ich nicht drauf. Das Script ist um die weitere Verarbeitung nach der GUI gekürzt, denn die funktioniert. So ist es aber auch nachvollziehbar. Bei Start werden auch die ausgewählten Dateien angezeigt.

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon

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

    ;##################################
    ; Include
    ;##################################
    #include <file.au3>
    #include <GUIConstants.au3>
    #include <ProgressConstants.au3>
    #include <date.au3>
    #include <Misc.au3>
    ;##################################
    ; Global
    ;##################################
    Global $Date, $File1, $File2, $Remark ; GUI Input

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

    ;##################################
    ; Variablen
    ;##################################
    $HDDPath = "C:\" ; Path to select a file - VARIABEL
    $WorkDir = @WorkingDir

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

    ;##################################
    ; Termin berechnen
    ;##################################
    $iNewDate = _NowCalcDate()
    $iWeekday = _DateToDayOfWeek(@YEAR, @MON, @MDAY)
    If $iWeekday = 1 Then
    ; Add 2 days to today
    $iNewDate = _DateAdd('d', 2, _NowCalcDate())
    ElseIf $iWeekday >= 5 Then
    ; Add 3 days to today
    $iNewDate = _DateAdd('d', 3, _NowCalcDate())
    Else
    ; Add 1 days to today
    $iNewDate = _DateAdd('d', 1, _NowCalcDate())
    EndIf

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

    ;##################################
    ; Script GUI
    ;##################################
    GUICreate("Tabs", 460, 660)
    GUISetIcon("SHELL32.dll", 255)

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

    GUICtrlCreateGroup("Liefertermin", 10, 5, 440, 45)
    $inDATE = GUICtrlCreateDate($iNewDate(), 360, 20, 80, 20, 0x00) ;$DTS_SHORTDATEFORMAT
    GUICtrlSetState(-1, $GUI_SHOW)
    GUICtrlCreateLabel("An welchem Tag muß die Lieferung erfolgen?", 20, 25)

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

    GUICtrlCreateGroup("Bemerkungen", 10, 450, 440, 130)
    $inREMARK = GUICtrlCreateEdit("", 20, 470, 420, 100, 0x1000) ;$ES_WANTRETURN
    GUICtrlSetState(-1, $GUI_ENABLE)

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

    $BTNSTART = GUICtrlCreateButton("Start", 230, 625, 100)
    GUICtrlSetTip(-1, "Startet den Vorgang")
    $BTNEXIT = GUICtrlCreateButton("Abrechen", 350, 625, 100)
    GUICtrlSetTip(-1, "Beendet das Programm")
    GUICtrlSetState($BTNEXIT, $GUI_FOCUS)

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

    GUICtrlCreateTab(5, 55, 452, 332)

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

    ;TAB erste Datei
    GUICtrlCreateTabItem(" erste Datei ")

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

    GUICtrlCreateGroup("Langtext", 10, 210, 440, 50)
    $inLONG1 = GUICtrlCreateEdit("", 20, 230, 420, 20, 0x1000) ;$ES_WANTRETURN
    GUICtrlSetState(-1, $GUI_ENABLE)

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

    GUICtrlCreateGroup("Kurztext", 10, 270, 440, 50)
    $inSHORT1 = GUICtrlCreateEdit("", 20, 290, 230, 20, 0x1000) ;$ES_WANTRETURN
    GUICtrlSetState(-1, $GUI_ENABLE)
    GUICtrlSetTip(-1, "in Zahlen aus den Zahnschema")
    GUICtrlCreateLabel("Geben Sie hier nur die Kurzfom an.", 270, 295)

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

    GUICtrlCreateGroup("Datei", 10, 330, 440, 50)
    $BTNFILE1 = GUICtrlCreateButton("Auswählen", 375, 345, 65)
    GUICtrlSetTip(-1, "Datei auswählen")
    GUICtrlCreateInput($File1, 20, 350, 345, 20, 0x0800) ;0x0800 $ES_READONLY
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    ;TAB zweite Datei
    GUICtrlCreateTabItem(" zweite Datei ")

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

    GUICtrlCreateGroup("Langtext", 10, 210, 440, 50)
    $inLONG2 = GUICtrlCreateEdit("", 20, 230, 420, 20, 0x1000) ;$ES_WANTRETURN
    GUICtrlSetState(-1, $GUI_ENABLE)

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

    GUICtrlCreateGroup("Kurztext", 10, 270, 440, 50)
    $inSHORT2 = GUICtrlCreateEdit("", 20, 290, 230, 20, 0x1000) ;$ES_WANTRETURN
    GUICtrlSetState(-1, $GUI_ENABLE)
    GUICtrlCreateLabel("Geben Sie hier nur die Kurzfom an.", 270, 295)

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

    GUICtrlCreateGroup("Datei", 10, 330, 440, 50)
    $BTNFILE2 = GUICtrlCreateButton("Auswählen", 375, 345, 65)
    GUICtrlSetTip(-1, "Datei auswählen")
    GUICtrlCreateInput($File2, 20, 350, 345, 20, 0x0800) ;0x0800 $ES_READONLY
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    ;TAB dritte Datei
    GUICtrlCreateTabItem(" dritte Datei ")
    GUICtrlSetState(-1, $GUI_ENABLE)

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

    ;TAB vierte Datei
    GUICtrlCreateTabItem(" vierte Datei ")
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    ;TAB schließen
    GUICtrlCreateTabItem('')

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

    GUISetState(@SW_SHOW)

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

    While 1
    $MSG = GUIGetMsg()

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

    Select
    Case $MSG = $GUI_EVENT_CLOSE Or $MSG = $BTNEXIT
    Exit

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

    Case $MSG = $BTNFILE1
    $File1 = FileOpenDialog("Datei auswählen", $HDDPath, "(*.zip)", 1 + 2) ; Datei muß existieren + Pfad muß existieren

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

    If @error Then
    MsgBox(48, "Fehler", "Keine Datei ausgewählt")
    Else
    $File1 = StringReplace($File1, "|", @CRLF)
    GUICtrlCreateInput($File1, 20, 350, 345, 20, 0x0800) ;$ES_READONLY
    GUICtrlSetState(-1, $GUI_DISABLE)
    $FileSize1 = StringFormat("%.3f", (FileGetSize($File1) / 1048576))
    EndIf

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

    Case $MSG = $BTNFILE2
    $File2 = FileOpenDialog("Datei auswählen", $HDDPath, "(*.zip)", 1 + 2) ; Datei muß existieren + Pfad muß existieren

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

    If @error Then
    MsgBox(48, "Fehler", "Keine Datei ausgewählt")
    Else
    $File2 = StringReplace($File2, "|", @CRLF)
    GUICtrlCreateInput($File2, 20, 350, 345, 20, 0x0800) ;$ES_READONLY
    GUICtrlSetState(-1, $GUI_DISABLE)
    $FileSize2 = StringFormat("%.3f", (FileGetSize($File2) / 1048576))
    EndIf

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

    Case $MSG = $BTNSTART
    $ENDLOOP = 1
    If $File1 = "" Then $ENDLOOP = 0
    ;Lieferatum
    $Date = GUICtrlRead($inDATE)
    ;Langtext
    $LONG1 = GUICtrlRead($inLONG1)
    $LONG2 = GUICtrlRead($inLONG2)
    ;Kurztext
    $SHORT1 = GUICtrlRead($inSHORT1)
    $SHORT2 = GUICtrlRead($inSHORT2)
    ;Bemerkungen
    $Remark = GUICtrlRead($inREMARK)

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

    GUICtrlSetState($BTNEXIT, $GUI_DISABLE)
    $NowDate = _DateTimeFormat(_NowCalc(), 0)

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

    If $ENDLOOP = 0 Then MsgBox(48, "Fehler", "Keine Datei ausgewählt")

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

    If $ENDLOOP = 1 Then ExitLoop

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

    EndSelect

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

    WEnd

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

    $Error = 0

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

    ;##################################
    ; Script Bestätigung
    ;##################################

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

    If $Error = 0 Then
    MsgBox(262208, "", "Das Programm wird beendet." & @LF & $File1 & @LF & $File2)
    Else
    MsgBox(262192, "Fehler", "Es trat ein Fehler auf." & @LF & @LF & "Fehlercode: " & $Error & @LF & @LF & "Das Programm wird beendet.")
    EndIf

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

    Exit

    [/autoit]

    2 Mal editiert, zuletzt von MacG (19. November 2009 um 19:03)

  • 8o

    Nach dem Posten kam natürlich die Anzeige "Ähnlicher Themen". Da war die Lösung dabei unter "GUI Tab aktualisieren". Die leidigen Suchbegriffe, wenn man nicht drauf kommt, sucht man vergeblich.

    Vielen Dank ans Forum, ohne mein Posting hätte ich noch ewig drüber gebrütet. Sorry für den Alleinunterhalter ;)

    Hier das Script ohne Fehler, GUICtrlSetData() ist die Lösung.

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon

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

    ;##################################
    ; Include
    ;##################################
    #include <file.au3>
    #include <GUIConstants.au3>
    #include <ProgressConstants.au3>
    #include <date.au3>
    #include <Misc.au3>
    ;##################################
    ; Global
    ;##################################
    Global $Date, $File1, $File2, $Remark ; GUI Input

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

    ;##################################
    ; Variablen
    ;##################################
    $HDDPath = "C:\" ; Path to select a file - VARIABEL
    $WorkDir = @WorkingDir

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

    ;##################################
    ; Termin berechnen
    ;##################################
    $iNewDate = _NowCalcDate()
    $iWeekday = _DateToDayOfWeek(@YEAR, @MON, @MDAY)
    If $iWeekday = 1 Then
    ; Add 2 days to today
    $iNewDate = _DateAdd('d', 2, _NowCalcDate())
    ElseIf $iWeekday >= 5 Then
    ; Add 3 days to today
    $iNewDate = _DateAdd('d', 3, _NowCalcDate())
    Else
    ; Add 1 days to today
    $iNewDate = _DateAdd('d', 1, _NowCalcDate())
    EndIf

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

    ;##################################
    ; Script GUI
    ;##################################
    GUICreate("Tabs", 460, 660)
    GUISetIcon("SHELL32.dll", 255)

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

    GUICtrlCreateGroup("Liefertermin", 10, 5, 440, 45)
    $inDATE = GUICtrlCreateDate($iNewDate(), 360, 20, 80, 20, 0x00) ;$DTS_SHORTDATEFORMAT
    GUICtrlSetState(-1, $GUI_SHOW)
    GUICtrlCreateLabel("An welchem Tag muß die Lieferung erfolgen?", 20, 25)

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

    GUICtrlCreateGroup("Bemerkungen", 10, 450, 440, 130)
    $inREMARK = GUICtrlCreateEdit("", 20, 470, 420, 100, 0x1000) ;$ES_WANTRETURN
    GUICtrlSetState(-1, $GUI_ENABLE)

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

    $BTNSTART = GUICtrlCreateButton("Start", 230, 625, 100)
    GUICtrlSetTip(-1, "Startet den Vorgang")
    $BTNEXIT = GUICtrlCreateButton("Abrechen", 350, 625, 100)
    GUICtrlSetTip(-1, "Beendet das Programm")
    GUICtrlSetState($BTNEXIT, $GUI_FOCUS)

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

    GUICtrlCreateTab(5, 55, 452, 332)

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

    ;TAB erste Datei
    GUICtrlCreateTabItem(" erste Datei ")

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

    GUICtrlCreateGroup("Langtext", 10, 210, 440, 50)
    $inLONG1 = GUICtrlCreateEdit("", 20, 230, 420, 20, 0x1000) ;$ES_WANTRETURN
    GUICtrlSetState(-1, $GUI_ENABLE)

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

    GUICtrlCreateGroup("Kurztext", 10, 270, 440, 50)
    $inSHORT1 = GUICtrlCreateEdit("", 20, 290, 230, 20, 0x1000) ;$ES_WANTRETURN
    GUICtrlSetState(-1, $GUI_ENABLE)
    GUICtrlSetTip(-1, "in Zahlen aus den Zahnschema")
    GUICtrlCreateLabel("Geben Sie hier nur die Kurzfom an.", 270, 295)

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

    GUICtrlCreateGroup("Datei", 10, 330, 440, 50)
    $BTNFILE1 = GUICtrlCreateButton("Auswählen", 375, 345, 65)
    GUICtrlSetTip(-1, "Datei auswählen")
    $InFile1 = GUICtrlCreateInput($File1, 20, 350, 345, 20, 0x0800) ;0x0800 $ES_READONLY
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    ;TAB zweite Datei
    GUICtrlCreateTabItem(" zweite Datei ")

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

    GUICtrlCreateGroup("Langtext", 10, 210, 440, 50)
    $inLONG2 = GUICtrlCreateEdit("", 20, 230, 420, 20, 0x1000) ;$ES_WANTRETURN
    GUICtrlSetState(-1, $GUI_ENABLE)

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

    GUICtrlCreateGroup("Kurztext", 10, 270, 440, 50)
    $inSHORT2 = GUICtrlCreateEdit("", 20, 290, 230, 20, 0x1000) ;$ES_WANTRETURN
    GUICtrlSetState(-1, $GUI_ENABLE)
    GUICtrlCreateLabel("Geben Sie hier nur die Kurzfom an.", 270, 295)

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

    GUICtrlCreateGroup("Datei", 10, 330, 440, 50)
    $BTNFILE2 = GUICtrlCreateButton("Auswählen", 375, 345, 65)
    GUICtrlSetTip(-1, "Datei auswählen")
    $InFile2 = GUICtrlCreateInput($File2, 20, 350, 345, 20, 0x0800) ;0x0800 $ES_READONLY
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    ;TAB dritte Datei
    GUICtrlCreateTabItem(" dritte Datei ")
    GUICtrlSetState(-1, $GUI_ENABLE)

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

    ;TAB vierte Datei
    GUICtrlCreateTabItem(" vierte Datei ")
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    ;TAB schließen
    GUICtrlCreateTabItem('')

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

    GUISetState(@SW_SHOW)

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

    While 1
    $MSG = GUIGetMsg()

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

    Select
    Case $MSG = $GUI_EVENT_CLOSE Or $MSG = $BTNEXIT
    Exit

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

    Case $MSG = $BTNFILE1
    $File1 = FileOpenDialog("Datei auswählen", $HDDPath, "(*.zip)", 1 + 2) ; Datei muß existieren + Pfad muß existieren

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

    If @error Then
    MsgBox(48, "Fehler", "Keine Datei ausgewählt")
    Else
    $File1 = StringReplace($File1, "|", @CRLF)
    GUICtrlSetData($InFile1,$File1)
    $FileSize1 = StringFormat("%.3f", (FileGetSize($File1) / 1048576))
    EndIf

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

    Case $MSG = $BTNFILE2
    $File2 = FileOpenDialog("Datei auswählen", $HDDPath, "(*.zip)", 1 + 2) ; Datei muß existieren + Pfad muß existieren

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

    If @error Then
    MsgBox(48, "Fehler", "Keine Datei ausgewählt")
    Else
    $File2 = StringReplace($File2, "|", @CRLF)
    GUICtrlSetData($InFile2,$File2)
    $FileSize2 = StringFormat("%.3f", (FileGetSize($File2) / 1048576))
    EndIf

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

    Case $MSG = $BTNSTART
    $ENDLOOP = 1
    If $File1 = "" Then $ENDLOOP = 0
    ;Lieferatum
    $Date = GUICtrlRead($inDATE)
    ;Langtext
    $LONG1 = GUICtrlRead($inLONG1)
    $LONG2 = GUICtrlRead($inLONG2)
    ;Kurztext
    $SHORT1 = GUICtrlRead($inSHORT1)
    $SHORT2 = GUICtrlRead($inSHORT2)
    ;Bemerkungen
    $Remark = GUICtrlRead($inREMARK)

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

    GUICtrlSetState($BTNEXIT, $GUI_DISABLE)
    $NowDate = _DateTimeFormat(_NowCalc(), 0)

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

    If $ENDLOOP = 0 Then MsgBox(48, "Fehler", "Keine Datei ausgewählt")

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

    If $ENDLOOP = 1 Then ExitLoop

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

    EndSelect

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

    WEnd

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

    $Error = 0

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

    ;##################################
    ; Script Bestätigung
    ;##################################

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

    If $Error = 0 Then
    MsgBox(262208, "", "Das Programm wird beendet." & @LF & $File1 & @LF &$File2)
    Else
    MsgBox(262192, "Fehler", "Es trat ein Fehler auf." & @LF & @LF & "Fehlercode: " & $Error & @LF & @LF & "Das Programm wird beendet.")
    EndIf

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

    Exit

    [/autoit]

    Einmal editiert, zuletzt von MacG (19. November 2009 um 19:02)

    • Offizieller Beitrag

    Und damit dieser Thread nicht ganz umsonst war, lernst Du nun noch, dass man bei längeren Scripten zusätzlich zum AutoIt-Tag noch den Spoiler benutzt. :)
    autoit.de/wcf/attachment/6704/
    Das sieht dann so aus (ohne die Leerzeichen):
    [spoiler ][autoit ][/autoit ][/spoiler ]
    und zwischen die AutoIt-Tags fügst Du dann Dein Script ein.

    Du hast hier ja zwei Objekte zum "üben". :)

  • Hat mich schon gewundert, warum die nicht verkürzt wurden. Geht hier also nicht automatisch. Ich hab es korrigiert.

    Umsonst war es ja nicht, erst das Erstellen des Topics hat mich auf die Lösung gebracht. ;)