GUI - Textfeld & Checkbox

  • Hey,

    Ich bin gerade dabei mir ein Installer-GUI zuschreiben, in diesem GUI sind mehrere CheckBoxes und ein Installations Button mit Pause funktion (danke an Oscar & Micha_he). Wenn der InstallationsButton gedrückt wird, werden die Ausgewählen Scripte (Checkboxes) nach der Reihe abarbeitet! Aber ich möchte in dem GUI eine Textfeld haben in dem man selbst nicht reinschreiben kann, sondere nur das Script hineinschreibt. Also wenn das ScriptXY.exe ausgeführt wird (Checkbox muss ausgewählt sein), schreibt das GUIScript in das Text Feld "ScriptXY.exe wird installiert...." und wenn es beendet ist (fertig) in der selben Zeile "---> wurde installiert".

  • Und wie stelle ich das jetzt ein das hineingeschrieben wird? Und kann man auch Text-Farbe-Art-Größe ändern??

  • Den Text kannst du mit GuiCtrlSetData bzw ControlSetText setzen...
    Schrift kannste mit GuiCtrlSetFont ändern.. du kannst aber nur den ganzen Text einfärben.. wenn du nur bestimmte Teile einfärben willst musst du progandys RichEdit benutzen!

    Und als Beispiel empfehle ich dir die Install-O-Matic 4.0 ;)

  • So hab dir ebn nochn kleines Beispiel gemacht:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <Misc.au3>

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

    Global $x = 1
    Opt("GuiOnEventMode",1)
    GUICreate("My GUI edit",250,120)
    GuiSetOnEvent($GUI_EVENT_CLOSE, "Terminate")
    $myedit = GUICtrlCreateEdit("1. line", 110, 12, 121, 97, $ES_AUTOVSCROLL + $ES_READONLY)
    guictrlsetbkColor(-1,0xFFFFFF)
    $Color = GuiCtrlCreateButton("Color", 10, 15,90)
    GuiCtrlsetOnEvent(-1,"setCol")
    $Font = GuiCtrlCreateButton("Font", 10, 45,90)
    GuiCtrlsetOnEvent(-1,"setFont")
    $line = GuiCtrlCreateButton("Write", 10, 75,90)
    GuiCtrlsetOnEvent(-1,"setline")
    GUISetState()

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

    While 1
    sleep(100)
    WEnd

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

    Func setCol()
    $Col = _CHooseColor(2)
    If Not @error Then GuiCtrlSetColor($myEdit, $Col)
    EndFunc

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

    Func setFont()
    $Fon = _CHooseFont()
    If Not @error Then GuiCtrlSetFont($myEdit, $Fon[3],$Fon[4],$Fon[1],$Fon[2])
    EndFunc

    Func setline()
    $x +=1
    GuiCtrlSetData($myEdit, GuiCtrlRead($myEdit)&@CRLF&$x&". line")
    EndFunc

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

    Func Terminate()
    Exit
    Endfunc

    [/autoit]
  • Ich schaffe nicht mein Script zu vollenden!

    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    $hGUI = GUICreate("XY", 440, 260, -1, -1, $WS_CAPTION)
    GUISetState(@SW_SHOW)

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

    GUICtrlCreateGroup("X1", 25, 15, 190, 110)
    GUICtrlCreateCheckbox("1", 35, 32, 75, 20)
    GUICtrlCreateCheckbox("2", 35, 52, 75, 20)
    GUICtrlCreateCheckbox("3", 35, 72, 75, 20)
    GUICtrlCreateCheckbox("4", 35, 92, 75, 20)

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

    GUICtrlCreateGroup("X2", 225, 15, 190, 110)
    GUICtrlCreateCheckbox("1", 235, 32, 75, 20)
    GUICtrlCreateCheckbox("2", 235, 52, 75, 20)
    GUICtrlCreateCheckbox("3", 235, 72, 75, 20)
    GUICtrlCreateCheckbox("4", 235, 92, 75, 20)

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

    GUICtrlCreateGroup("X3", 25, 130, 190, 110)
    GUICtrlCreateCheckbox("1", 35, 147, 75, 20)
    GUICtrlCreateCheckbox("2", 35, 167, 75, 20)
    GUICtrlCreateCheckbox("3", 35, 187, 75, 20)
    GUICtrlCreateCheckbox("4", 35, 207, 75, 20)

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

    $InstallButton = GUICtrlCreateButton("Installieren", 230, 180, 100, 20)
    GUICtrlSetOnEvent(-1, "InstallPressed")
    $CancelButton = GUICtrlCreateButton("Abbrechen", 230, 210, 100, 20)
    GUICtrlSetOnEvent(-1, "CancelPressed")

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

    While 1
    Sleep(10)
    WEnd

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

    Func InstallPressed()
    GUIDelete($hGUI)
    GUICreate("XY", 250, 400, -1, -1, $WS_CAPTION)
    GUISetState(@SW_SHOW)
    GUICtrlCreateEdit("", -1, -1, 252, 402, $ES_READONLY + $ES_AUTOVSCROLL)
    EndFunc

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

    Func CancelPressed()
    If MsgBox(4, "XY", "Installation abbrechen?") = 6 Then Exit
    EndFunc

    [/autoit]

    Wenn zb bei X1 - 1 Check ist (also aktiviert), soll RunWait("CompiliertesAutoitScript.exe") davor in das Edit "1... installieren" wenns beendet ist "... wurde installiert" geschrieben werden, dann neue Zeile und die anderen Dinge sollen runterlaufen.

  • Also im ersten Fenster (GUI) werden Komponenten ausgewählt, die dann Installiert werden!

  • Hallo freakisch,

    Zitat

    Also im ersten Fenster (GUI) werden Komponenten ausgewählt, die dann Installiert werden!

    Du meintest wohl Installiert werden sollen. Dazu musst du aber den Status der Checkboxen abfragen, um dies zu können solltest du beim anlegen der auch die controlID's der Checkboxen in Variablen speichern. Wenn du es in Arrays machst, hast du weniger Tipparbeit. Mit GuiCtrlRead kannst du dann den Status abfragen und danach mit anhand des Beispiels von Chaoskeks den Fortschritt in ein Steuerelement schreiben. Die untertrichenen Stichwörter findest du alle in der Hilfe,

    mfg (Auto)Bert

  • Ahha okay.

    Also zb so?:

    [autoit]

    $CheckboxY1 = GUICtrlCreateCheckbox("1", 235, 32, 75, 20)
    If GUICtrlRead($CheckboxY1) = $GUI_CHECKED Then RunWait("XY.exe")

    [/autoit]

    Und in eimem Array so:

    [autoit]

    Dim $CheckboxX[4] = [GUICtrlCreateCheckbox("1", 35, 32, 75, 20), GUICtrlCreateCheckbox("2", 35, 52, 75, 20), GUICtrlCreateCheckbox("3", 35, 72, 75, 20), GUICtrlCreateCheckbox("4", 35, 92, 75, 20)]

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

    If GUICtrlRead($CheckboxX[1]) = $GUI_CHECKED Then RunWait("XY.exe")

    [/autoit]


    Aber beim Array müsste ich ja trotzdem jede (ka wie man das nennt) Variable überprüfen:

    [autoit]

    If GUICtrlRead($CheckboxX[1]) = $GUI_CHECKED Then RunWait("XY.exe")
    If GUICtrlRead($CheckboxX[2]) = $GUI_CHECKED Then RunWait("XY.exe")
    If GUICtrlRead($CheckboxX[3]) = $GUI_CHECKED Then RunWait("XY.exe")
    If GUICtrlRead($CheckboxX[4]) = $GUI_CHECKED Then RunWait("XY.exe")

    [/autoit]

    oder geht das auch einfacher?

    Einmal editiert, zuletzt von freakisch (10. Mai 2009 um 19:10)

  • Das funktioniert leider nicht so wie ich will...

    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    Global $hGUIX = GUICreate("XY", 440, 260, -1, -1, $WS_CAPTION)
    GUISetState(@SW_SHOW, $hGUIX)

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

    GUICtrlCreateGroup("X", 25, 15, 190, 110)
    Global $CheckboxX[4] = [GUICtrlCreateCheckbox("1", 35, 32, 75, 20), GUICtrlCreateCheckbox("2", 35, 52, 75, 20), GUICtrlCreateCheckbox("3", 35, 72, 75, 20), GUICtrlCreateCheckbox("4", 35, 92, 75, 20)]

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

    GUICtrlCreateGroup("Y", 225, 15, 190, 110)
    Global $CheckboxY[4] = [GUICtrlCreateCheckbox("1", 235, 32, 75, 20), GUICtrlCreateCheckbox("2", 235, 52, 75, 20), GUICtrlCreateCheckbox("3", 235, 72, 75, 20), GUICtrlCreateCheckbox("4", 235, 92, 75, 20)]

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

    GUICtrlCreateGroup("Z", 25, 130, 190, 110)
    Global $CheckboxZ[4] = [GUICtrlCreateCheckbox("1", 35, 147, 75, 20), GUICtrlCreateCheckbox("2", 35, 167, 75, 20), GUICtrlCreateCheckbox("3", 35, 187, 75, 20), GUICtrlCreateCheckbox("4", 35, 207, 75, 20)]

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

    Global $Button[2] = [GUICtrlCreateButton("Installieren", 230, 180, 100, 20), GUICtrlCreateButton("Abbrechen", 230, 210, 100, 20)]
    GUICtrlSetOnEvent($Button[0], "InstallPressed")
    GUICtrlSetOnEvent($Button[1], "CancelPressed")

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

    While 1
    Sleep(10)
    WEnd

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

    Func InstallPressed()
    Components()
    GUIDelete($hGUIX)
    Global $hGUIY = GUICreate("XY", 250, 400, -1, -1, $WS_CAPTION)
    GUISetState(@SW_SHOW, $hGUIY)
    Global $EditX = GUICtrlCreateEdit("", -1, -1, 252, 402, $ES_READONLY + $ES_AUTOVSCROLL)
    InstallComponents()
    EndFunc ;==>InstallPressed

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

    Func CancelPressed()
    If MsgBox(270628, "XY", "Installation abbrechen?") = 6 Then Exit
    EndFunc ;==>CancelPressed

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

    Func Components()
    If GUICtrlRead($CheckboxX[0]) = $GUI_CHECKED Then Global $X1 = 1
    If GUICtrlRead($CheckboxX[1]) = $GUI_CHECKED Then Global $X2 = 1
    If GUICtrlRead($CheckboxX[2]) = $GUI_CHECKED Then Global $X3 = 1
    If GUICtrlRead($CheckboxX[3]) = $GUI_CHECKED Then Global $X4 = 1

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

    If GUICtrlRead($CheckboxY[0]) = $GUI_CHECKED Then Global $Y1 = 1
    If GUICtrlRead($CheckboxY[1]) = $GUI_CHECKED Then Global $Y2 = 1
    If GUICtrlRead($CheckboxY[2]) = $GUI_CHECKED Then Global $Y3 = 1
    If GUICtrlRead($CheckboxY[3]) = $GUI_CHECKED Then Global $Y4 = 1

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

    If GUICtrlRead($CheckboxZ[0]) = $GUI_CHECKED Then Global $Z1 = 1
    If GUICtrlRead($CheckboxZ[1]) = $GUI_CHECKED Then Global $Z2 = 1
    If GUICtrlRead($CheckboxZ[2]) = $GUI_CHECKED Then Global $Z3 = 1
    If GUICtrlRead($CheckboxZ[3]) = $GUI_CHECKED Then Global $Z4 = 1
    EndFunc ;==>Components

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

    Func InstallComponents()
    Sleep(1000)
    If $X1 = 1 Then
    GUICtrlSetData($EditX, "X1...")
    ShellExecuteWait(@ScriptDir & "\X\X1\x1setup.exe")
    GUICtrlSetData($EditX, "...fertig", "...fertig")
    EndIf
    EndFunc ;==>InstallComponents

    [/autoit]

    Wie bekomme ich den Error weg wenn die Varibale nicht deklariert wird?!
    Scite:

    Code
    If $X1 = 1 Then
    If ^ ERROR


    Der Text wird immer überschreiben und in der Hilfe verstehe ich das Beispiel nicht ?(

  • Hallo freakisch,

    das was du machst nemmt man Doppelpost oder auch pushen, beides wird nicht gern gesehen. Hast du dir die Hilfe, zu allen Stichwörtern genau durchgelesen, wenn nein machs, wenn ja versuch die Beispiele nachzuvollziehen,

    mfg (Auto)Bert

  • Ja ich hab mir alles durch gelesen :D, mittlerweile bin ich auch schon weiter, nur die Funktion GUICtrlSetData() funktioniert bei mir nicht so wie ich will.

    [autoit]

    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    Global $hGUIY = GUICreate("XY", 250, 400, -1, -1, $WS_CAPTION)
    Global $EditX = GUICtrlCreateEdit("", -1, -1, 252, 402, $ES_READONLY + $ES_AUTOVSCROLL)
    Global $X1 = 1
    Global $X2 = 1
    GUISetState(@SW_SHOW, $hGUIY)

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

    ; erster Text soll nicht überschriebn werden "XY wird installiert...abgeschlossen!" soll stehen!
    If $X1 = 1 Then
    GUICtrlSetData($EditX, "XY wird installiert...")
    Sleep(1000)
    GUICtrlSetData($EditX, "abgeschlossen!")
    Sleep(1000)
    EndIf

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

    ; neue Zeile soll begonnen werden und wieder "YY wird installiert...abgeschlossen!" soll stehen!
    If $X2 = 1 Then
    GUICtrlSetData($EditX, "YY wird installiert...")
    Sleep(1000)
    GUICtrlSetData($EditX, "abgeschlossen!")
    EndIf

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

    While 1
    Sleep(10)
    WEnd

    [/autoit]

    Wie mach ich das der vorrige Text nicht überschrieben wird? Wie fangt es ne neue Zeile an?

    2 Mal editiert, zuletzt von freakisch (10. Mai 2009 um 20:58)

  • Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    Dim $CheckboxX[5],$CheckboxY[5], $CheckboxZ[5]

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

    $hGUIX = GUICreate("XY", 440, 260, -1, -1, $WS_CAPTION)
    GUISetState(@SW_SHOW, $hGUIX)

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

    GUICtrlCreateGroup("X", 25, 15, 190, 110)
    For $i = 1 To 4
    $CheckBoxX[$i] = GUICtrlCreateCheckbox($i, 35, 12 + $i*20, 75, 20)
    Next

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

    GUICtrlCreateGroup("Y", 225, 15, 190, 110)
    For $i = 1 To 4
    $CheckBoxY[$i] = GUICtrlCreateCheckbox($i, 235, 12 + $i*20, 75, 20)
    Next

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

    GUICtrlCreateGroup("Z", 25, 130, 190, 110)
    For $i = 1 To 4
    $CheckBoxZ[$i] = GUICtrlCreateCheckbox($i, 35, 127 + $i*20, 75, 20)
    Next

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

    $inst = GUICtrlCreateButton("Installieren", 230, 180, 100, 20)
    GUICtrlSetOnEvent(-1, "InstallPressed")
    $cancel = GUICtrlCreateButton("Abbrechen", 230, 210, 100, 20)
    GUICtrlSetOnEvent(-1, "CancelPressed")

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

    While 1
    Sleep(100)
    WEnd

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

    Func CancelPressed()
    If MsgBox(270628, "XY", "Installation abbrechen?") = 6 Then Exit
    EndFunc ;==>CancelPressed

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

    Func InstallPressed()
    GuIsetstate(@SW_HIDE,$hGUIX)
    $hGUIY = GUICreate("XY", 250, 400, -1, -1, $WS_CAPTION)
    Global $EditX = GUICtrlCreateEdit("", -1, -1, 252, 402, $ES_READONLY + $ES_AUTOVSCROLL)
    GUISetState(@SW_SHOW, $hGUIY)

    For $i = 1 TO 4
    If BitAnd(GuiCtrlread($CheckboxX[$i]),$GUI_CHECKED) = 1 Then InstallComponents("X",$i)
    Next
    For $i = 1 TO 4
    If BitAnd(GuiCtrlread($CheckboxY[$i]),$GUI_CHECKED) = 1 Then InstallComponents("Y",$i)
    Next
    For $i = 1 TO 4
    If BitAnd(GuiCtrlread($CheckboxZ[$i]),$GUI_CHECKED) = 1 Then InstallComponents("Z",$i)
    Next
    EndFunc ;==>Components

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

    Func InstallComponents($xyz, $i)
    Sleep(100)
    GUICtrlSetData($EditX, $xyz&$i&"...",1)
    ShellExecuteWait(@ScriptDir & "\"&$xyz& "\"&$xyz&$i&"\"&$xyz&$i&"setup.exe")
    ;~ Consolewrite(@ScriptDir & "\"&$xyz& "\"&$xyz&$i&"\"&$xyz&$i&"setup.exe"&@CRLF)
    GUICtrlSetData($EditX, "...fertig"&@CRLF, 1)
    EndFunc ;==>InstallComponents

    [/autoit]