2 mit Koda erstellte Fenster in einem Script

  • So erst mal Code, Erklärung folgt unten:

    [autoit]


    #include <GUIConstants.au3>
    ; ------------------------ Hauptfenster -----------
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Beispiel", 116, 68, 193, 125)
    $Label1 = GUICtrlCreateLabel("Test", 32, 8, 44, 28)
    GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
    $MenuItem1 = GUICtrlCreateMenu("Optionen ")
    $MenuItem2 = GUICtrlCreateMenuItem("Optionen", $MenuItem1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $MenuItem2
    _Optionen ()
    EndSwitch
    WEnd
    ;--------------------------------------------------

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

    Func _Optionen ()
    #include <GUIConstants.au3>
    ;---------------------- Optionsfenster --------------
    #Region ### START Koda GUI section ###
    $FormOptionen = GUICreate("Optionen", 213, 159, 193, 125)
    $Label1 = GUICtrlCreateLabel("Bitte wählen sie ihre Auflösung des Spiels:", 8, 8, 202, 17)
    $InputAufloesungsAuswahlA = GUICtrlCreateRadio("z.b. Auf. 1", 24, 32, 73, 17)
    $InputAufloesungsAuswahlB = GUICtrlCreateRadio("z.b. Auf. 2", 24, 56, 73, 17)
    $InputAufloesungsAuswahlC = GUICtrlCreateRadio("z.b. Auf. 3", 24, 80, 73, 17)
    $InputAufloesungsAuswahlD = GUICtrlCreateRadio("z.b. Auf. 4", 24, 104, 73, 17)
    $InputAufloesungsAuswahlE = GUICtrlCreateRadio("z.b. Auf. 5", 120, 32, 73, 17)
    $InputAufloesungsAuswahlF = GUICtrlCreateRadio("z.b. Auf. 6", 120, 56, 73, 17)
    $InputAufloesungsAuswahlG = GUICtrlCreateRadio("z.b. Auf. 7", 120, 80, 73, 17)
    $InputAufloesungsAuswahlH = GUICtrlCreateRadio("z.b. Auf. 8", 120, 104, 73, 17)
    $EinstellSpeichern = GUICtrlCreateButton("Einstellung speichern", 48, 128, 115, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $EinstellSpeichern
    _SaveAufloesungsAuswahl ()

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

    EndSwitch
    WEnd
    ;------------------------------------------------
    EndFunc

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

    Func _SaveAufloesungsAuswahl ()
    If GUICtrlRead($InputAufloesungsAuswahlA) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "A"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlB) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "B"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlC) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "C"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlD) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "D"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlE) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "E"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlF) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "F"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlG) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "G"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlH) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "H"
    EndIf

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

    IniWrite(@ScriptDir & "\Config.ini", "Einstellungen", "Aufloesung", ""&$SaveAufloesungsAuswahl &"")
    IniWrite (@ScriptDir & "\Config.ini", "Einstellungen", "SchonMalGestartet", "1")
    GUISetState(@SW_HIDE)
    EndFunc

    [/autoit]


    So, es soll eig. folgendes passieren:
    Man startet das script, und öffnet sich das Haupt-fenster
    Wenn man jetzt oben in der Leiste Optionen wählt soll sich ein zweites Fenster öffnen
    In den Fenster soll man dan was Einstellen können (<--- kann man ja auch schon^^)
    Wenn man dan jetzt auf Einstellung speichern geht, soll sich das Optionen Fenster wieder schließen
    (das Haupt-Fenster soll die ganze Zeit offen bleiben, <-- wenn aber verlangt wird das es geschlossen werden muss ist das auch nicht so schlimm.

    Einmal editiert, zuletzt von TheLol (13. April 2008 um 18:26)

  • Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    ; ------------------------ Hauptfenster -----------
    Global $InputAufloesungsAuswahlA, $InputAufloesungsAuswahlB, $InputAufloesungsAuswahlC, $InputAufloesungsAuswahlD, $InputAufloesungsAuswahlE, $InputAufloesungsAuswahlF
    Global $InputAufloesungsAuswahlG, $InputAufloesungsAuswahlH
    Global $FormOptionen
    #region ### START Koda GUI section ### Form=
    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Beispiel", 116, 68, 193, 125)
    $Label1 = GUICtrlCreateLabel("Test", 32, 8, 44, 28 )
    GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
    $MenuItem1 = GUICtrlCreateMenu("Optionen ")
    $MenuItem2 = GUICtrlCreateMenuItem("Optionen", $MenuItem1)
    GUISetState(@SW_SHOW)
    #endregion ### START Koda GUI section ### Form=

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
    GUICtrlSetOnEvent($MenuItem2, "_Optionen")

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

    While 1
    Sleep(100)
    WEnd

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

    ;--------------------------------------------------

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

    Func _Optionen()
    ;---------------------- Optionsfenster --------------
    #region ### START Koda GUI section ###
    $FormOptionen = GUICreate("Optionen", 213, 159, 193, 125)
    $Label1 = GUICtrlCreateLabel("Bitte wählen sie ihre Auflösung des Spiels:", 8, 8, 202, 17)
    $InputAufloesungsAuswahlA = GUICtrlCreateRadio("z.b. Auf. 1", 24, 32, 73, 17)
    $InputAufloesungsAuswahlB = GUICtrlCreateRadio("z.b. Auf. 2", 24, 56, 73, 17)
    $InputAufloesungsAuswahlC = GUICtrlCreateRadio("z.b. Auf. 3", 24, 80, 73, 17)
    $InputAufloesungsAuswahlD = GUICtrlCreateRadio("z.b. Auf. 4", 24, 104, 73, 17)
    $InputAufloesungsAuswahlE = GUICtrlCreateRadio("z.b. Auf. 5", 120, 32, 73, 17)
    $InputAufloesungsAuswahlF = GUICtrlCreateRadio("z.b. Auf. 6", 120, 56, 73, 17)
    $InputAufloesungsAuswahlG = GUICtrlCreateRadio("z.b. Auf. 7", 120, 80, 73, 17)
    $InputAufloesungsAuswahlH = GUICtrlCreateRadio("z.b. Auf. 8", 120, 104, 73, 17)
    $EinstellSpeichern = GUICtrlCreateButton("Einstellung speichern", 48, 128, 115, 25, 0)
    GUISetState(@SW_SHOW)
    #endregion ### START Koda GUI section ###

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "Optdel")
    GUICtrlSetOnEvent($EinstellSpeichern, "_SaveAufloesungsAuswahl")
    ;------------------------------------------------
    EndFunc ;==>_Optionen

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

    Func Optdel()
    GUIDelete($FormOptionen)
    EndFunc ;==>Optdel

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

    Func _SaveAufloesungsAuswahl()
    If GUICtrlRead($InputAufloesungsAuswahlA) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "A"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlB) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "B"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlC) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "C"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlD) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "D"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlE) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "E"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlF) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "F"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlG) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "G"
    ElseIf GUICtrlRead($InputAufloesungsAuswahlH) = $GUI_CHECKED Then
    Global $SaveAufloesungsAuswahl = "H"
    EndIf

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

    IniWrite(@ScriptDir & "\Config.ini", "Einstellungen", "Aufloesung", "" & $SaveAufloesungsAuswahl & "")
    IniWrite(@ScriptDir & "\Config.ini", "Einstellungen", "SchonMalGestartet", "1")
    GUIDelete($FormOptionen)
    EndFunc ;==>_SaveAufloesungsAuswahl

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

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit]

    Ist im OnEventMode geschrieben, finde ich lassen sich die Fenster besser koordinieren und ist auch übersichtlicher :) Klappt nun so wie du möchtest.

    • Offizieller Beitrag

    Schrumpfe deine Funktion _SaveAufloesungsAuswahl() mal. Den If-Then-ElseIf Konstrukt bekommst du in eine Zeile:

    [autoit]

    For $i = 'A' To 'H'
    Execute('If BitAnd(GUICtrlRead($InputAufloesungsAuswahl' & $i & '), $GUI_CHECKED) Then Global $SaveAufloesungsAuswahl = ' & $i &')'
    Next

    [/autoit]
  • ähh, seit wann kann man Buchstaben einfach so in eine Schleife setzen?
    Muss man da nicht Asc und Chr nehmen?

    [autoit]

    For $i = Asc('A') To Asc('H')
    Execute('If BitAnd(GUICtrlRead($InputAufloesungsAuswahl' & Chr($i) & '), $GUI_CHECKED) Then Global $SaveAufloesungsAuswahl = ' & Chr($i) &')'
    Next

    [/autoit]
  • Thx an alle :D besonders an Ritzelrocker04, das Beispiel hat mir übelst geholfen :D
    Na ja und der OnEventMode ist nicht so wirklich was für mich^^

    PS: Die Buchstaben werden einwandfrei abgespeichert :-P, ich will ja keine key´s speichern sondern die buchstaben stehen dann im späteren verlauf für etwas bestimmts

    Also zum Beispiel: A = lol, B = xD usw...

  • Dann zumindest mit Select... Case ... Endselect arbeiten. Es kann ja nur 1 gewählt sein :)