Input kann nicht beschrieben werden

  • Also ich habe ein ganz normales Input gemacht

    [autoit]

    $path = GuiCtrlCreateInput("Pfad", 30, 50, 300, 20)

    [/autoit]

    Darin soll man den Pfad zu einer Datei angeben (erkennbar an $path und "Pfad")
    Nur in dem Gui kann man in dasInput nicht reinschreiben. Also es ist da, aber man kann so oft draufklicken wie man will und versuchen reinzutippen.
    Es geht einfach nicht.
    Das Feld ist genauso wie in dem Example Gui von Autoit, also was stimmt da nicht.

    Danke im Vorraus,
    Ben

    Einmal editiert, zuletzt von 946ben (18. April 2011 um 11:45)

  • [autoit]

    GuiCreate("Installation", 400, 200)
    GUISetState(@SW_SHOW)
    $path = GuiCtrlCreateInput("Pfad", 30, 50, 300, 20)
    $weiter = GuiCtrlCreateButton("Weiter", 280, 165, 100, 25)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $weiter
    IniWrite(@ScriptDir & "\settings.ini", "Settings", "path", GUICtrlRead($path))
    EndSwitch
    WEnd

    [/autoit]

    Edit: habe includes ma rausgelassen und zwischendurch ein paar label (denke ma die sind unwichtig dafür)

  • Ohne includes funktioniert dein Script nicht. Wenn du willst das sich jemand ernsthaft damit beschäftigt dann komplett und nicht verstümmelt. Ich habe keine Lust erst rumzusuchen welche GUI relevanten includes fehlen um das zu testen.

  • [autoit]

    #include <GuiConstantsEx.au3>
    GuiCreate("Install", 400, 200)
    GUISetState(@SW_SHOW)
    $weiter = GuiCtrlCreateButton("Weiter", 280, 165, 100, 25)
    $weiternum = "1"

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $weiter
    if $weiternum = "2" Then
    IniWrite(@ScriptDir & "\settings.ini", "Settings", "gtapath", GUICtrlRead($path))
    MsgBox(0,"Abgeschlossen","Die Installation wurde erfolgreich" & @CRLF & "abgeschlossen")
    Exit
    EndIf
    if $weiternum = "1" Then
    GuiCtrlCreateLabel(" ", 0, 0, 400, 200)
    GuiCtrlCreateLabel("Bitte geben sie in dem folgendem Textfeld den Pfad ein.", 0, 0)
    $path = GuiCtrlCreateInput("Pfad", 30, 50, 300, 20)
    $weiternum = "2"
    endif
    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
    • Offizieller Beitrag

    Der Fehler liegt hier:

    [autoit]

    GuiCtrlCreateLabel(" ", 0, 0, 400, 200)

    [/autoit]


    Das Label liegt über dem Input.

    [autoit]

    GUICtrlSetState(-1,$GUI_DISABLE)

    [/autoit]


    Nach dem Label sollte das Problem lösen.
    Oder gleich das Label löschen, kann keinen Grund erkennen, wofür dieses Label gut sein soll.

  • es soll einen später hinzugefügten einführungstext überdecken, wusste nicht wie es sonst gehen soll

  • Wurde zwar schon gesagt worans lag (Label hatte alle anderen Elemente überdeckt), aber hier dann mal noch eine aufgeräumte Fassung. Gui Elemente sollte man immer am Anfang erstellen und nicht erst in der GUI Schleife. Es ist wesentlich besser die Elemente aus und einzublenden oder zu Verändern, siehe meine Fassung:

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

    #include <GuiConstantsEx.au3>

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

    Global $weiternum = "1"

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

    $GUI = GuiCreate("Install", 400, 200)

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

    $weiter = GuiCtrlCreateButton("Weiter", 280, 165, 100, 25)
    $path = GuiCtrlCreateInput("Pfad", 30, 50, 300, 20)
    $label = GuiCtrlCreateLabel("Start Seite - Blabla...", 0, 0,400,40) ; kann auch einfach einen leeren string enthalten wenn du garnix auf der ersten seite anzeigen willst

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

    GUICtrlSetState($path,$gui_hide) ; macht das input unsichtbar, da es ja erst auf Seite 2 zu sehen sein soll
    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $weiter
    if $weiternum = "2" Then
    IniWrite(@ScriptDir & "\settings.ini", "Settings", "gtapath", GUICtrlRead($path))
    MsgBox(0,"Abgeschlossen","Die Installation wurde erfolgreich" & @CRLF & "abgeschlossen")
    Exit
    EndIf
    if $weiternum = "1" Then
    ;GuiCtrlCreateLabel(" ", 0, 0, 400, 200) ; auskommentiert weil ich keinen sinn hinter einem leeren label sehe, ausserdem überdeckte es dein input
    GUICtrlSetState($path,$gui_show) ; macht das input sichtbar
    GUICtrlSetData($label,"Bitte geben sie in dem folgendem Textfeld den Pfad ein.") ; ändert den Text deine labels
    $weiternum = "2"
    endif
    EndSwitch
    WEnd

    [/autoit]