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
#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
;##################################
; Variablen
;##################################
$HDDPath = "C:\" ; Path to select a file - VARIABEL
$WorkDir = @WorkingDir
;##################################
; 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
;##################################
; Script GUI
;##################################
GUICreate("Tabs", 460, 660)
GUISetIcon("SHELL32.dll", 255)
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)
GUICtrlCreateGroup("Bemerkungen", 10, 450, 440, 130)
$inREMARK = GUICtrlCreateEdit("", 20, 470, 420, 100, 0x1000) ;$ES_WANTRETURN
GUICtrlSetState(-1, $GUI_ENABLE)
$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)
GUICtrlCreateTab(5, 55, 452, 332)
[/autoit] [autoit][/autoit] [autoit];TAB erste Datei
GUICtrlCreateTabItem(" erste Datei ")
GUICtrlCreateGroup("Langtext", 10, 210, 440, 50)
$inLONG1 = GUICtrlCreateEdit("", 20, 230, 420, 20, 0x1000) ;$ES_WANTRETURN
GUICtrlSetState(-1, $GUI_ENABLE)
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)
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)
;TAB zweite Datei
GUICtrlCreateTabItem(" zweite Datei ")
GUICtrlCreateGroup("Langtext", 10, 210, 440, 50)
$inLONG2 = GUICtrlCreateEdit("", 20, 230, 420, 20, 0x1000) ;$ES_WANTRETURN
GUICtrlSetState(-1, $GUI_ENABLE)
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)
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)
;TAB dritte Datei
GUICtrlCreateTabItem(" dritte Datei ")
GUICtrlSetState(-1, $GUI_ENABLE)
;TAB vierte Datei
GUICtrlCreateTabItem(" vierte Datei ")
GUICtrlSetState(-1, $GUI_DISABLE)
;TAB schließen
GUICtrlCreateTabItem('')
GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
$MSG = GUIGetMsg()
Select
Case $MSG = $GUI_EVENT_CLOSE Or $MSG = $BTNEXIT
Exit
Case $MSG = $BTNFILE1
$File1 = FileOpenDialog("Datei auswählen", $HDDPath, "(*.zip)", 1 + 2) ; Datei muß existieren + Pfad muß existieren
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
Case $MSG = $BTNFILE2
$File2 = FileOpenDialog("Datei auswählen", $HDDPath, "(*.zip)", 1 + 2) ; Datei muß existieren + Pfad muß existieren
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
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)
GUICtrlSetState($BTNEXIT, $GUI_DISABLE)
$NowDate = _DateTimeFormat(_NowCalc(), 0)
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
;##################################
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
Exit
[/autoit]