2 Gui´s vom selben script erstellen mit jeweiliger While Schleife... Hilfe...```

  • Ich brauche bei diesem Problem mal wieder eure Hilfe,

    und zwar habe ich eine Gui worin ich auf buttondruck eine 2. erstelle.
    Soweit so gut, jedoch wenn ich von der 2. erstellten rüber in die 1. gehe und diese enable springt die vorgesehene While Schleife für die erste nicht an. (Beide Gui´s @SW_SHOW)
    Mit "ExitLoop" wäre dies natürlich leicht zu erreichen, jedoch fehlt mir ein Weg wie ich dann beim Wechsel in die 2. Gui die dortige Schleife wieder aktiviere. ;(

    Ich hoffe ich konnte euch mein Problem gut beschreiben. (ahja... Ich habe auch mit SEuBo´s Hilfe versucht dies über GuiGetMsg(1) zu lösen jedoch funktioniert diese Lösung nur
    wenn ein Fenster @SW_HIDE ist, ich möchte jedoch mit beiden zur selben Zeit, im selben Script arbeiten um mir den Weg der Variablenübergabe über eine "ini" zu ersparen. :wacko:

    Danke für eure Hilfe.....

    :edit

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $gui1 = GUICreate('HauptGUI', 500, 300, -1, -1)
    $button1 = GUICtrlCreateButton('2. GUI', 20, 20, 100, 21)
    GUISetState (@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg

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

    Case $button1
    profilfinder()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func profilfinder()

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

    $Form1_1 = GUICreate("Profilsuche", 974, 718, -1, -1, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_GROUP, $WS_CLIPSIBLINGS, $ES_AUTOHSCROLL, $ES_AUTOVSCROLL))
    $MenuItem4 = GUICtrlCreateMenu("&Datei")
    $MenuItem3 = GUICtrlCreateMenu("&Bearbeiten")
    $MenuItem2 = GUICtrlCreateMenu("&Optionen")
    $MenuItem1 = GUICtrlCreateMenu("&Hilfe")
    GUISetIcon("N:\neu.exe")
    GUISetBkColor(0xFFFFFF)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    $Text_Progname = GUICtrlCreateLabel("Profilsuche", 282, 48, 314, 30)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlSetFont(-1, 16, 800, 0, "MS Reference Sans Serif")
    GUICtrlSetColor(-1, 0x000080)

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

    $Pic1 = GUICtrlCreatePic(@ScriptDir & "\ESCO_2.l", 39, 39, 121, 40, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    $Pic2 = GUICtrlCreatePic("N:\profil.bmp", 3, 153, 956, 502, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    $Label1 = GUICtrlCreateLabel("Geben Sie bitte die benötigten Maße an:", 12, 129, 195, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    $Input1 = GUICtrlCreateInput("Flügel BT", 6, 327, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input2 = GUICtrlCreateInput("Überschl. Breite", 519, 591, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input3 = GUICtrlCreateInput("Bl.R. Freimaß", 642, 591, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input4 = GUICtrlCreateInput("Überschl.Überd.", 564, 555, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input5 = GUICtrlCreateInput("Kammermaß", 516, 393, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input6 = GUICtrlCreateInput("Rahmen BT", 834, 306, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input7 = GUICtrlCreateInput("Beschlagachse", 879, 420, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input8 = GUICtrlCreateInput("Falzluft", 516, 360, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input9 = GUICtrlCreateInput("Überschl.höhe", 627, 471, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Profil_finden = GUICtrlCreateButton("Profil finden", 21, 585, 99, 25, $WS_GROUP)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 129, 585, 99, 25, $WS_GROUP)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUISetState(@SW_SHOW)

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

    While 1
    $nmsg = GUIGetMsg()
    Switch $nmsg
    Case $GUI_EVENT_CLOSE
    GUIDelete()
    ExitLoop

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

    Case $Input1
    Case $Input2
    Case $Input3
    Case $Input4
    Case $Input5
    Case $Input6
    Case $Input7
    Case $Input8
    Case $Input9
    Case $Profil_finden
    ;~ profilliste()
    Case $Abbrechen
    EndSwitch

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

    WEnd
    EndFunc ;==>profilfinder

    [/autoit]
    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

    Einmal editiert, zuletzt von stinger2k (26. März 2010 um 02:27)

  • Hä,

    Wenn ich dich jetzt richtig verstanden habe, müsstes so dein Problem lösen.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form1_1 = GUICreate("Profilsuche", 974, 718, -1, -1, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_GROUP, $WS_CLIPSIBLINGS, $ES_AUTOHSCROLL, $ES_AUTOVSCROLL))
    $MenuItem4 = GUICtrlCreateMenu("&Datei")
    $MenuItem3 = GUICtrlCreateMenu("&Bearbeiten")
    $MenuItem2 = GUICtrlCreateMenu("&Optionen")
    $MenuItem1 = GUICtrlCreateMenu("&Hilfe")
    GUISetIcon("N:\neu.exe")
    GUISetBkColor(0xFFFFFF)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Text_Progname = GUICtrlCreateLabel("Profilsuche", 282, 48, 314, 30)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    GUICtrlSetFont( - 1, 16, 800, 0, "MS Reference Sans Serif")
    GUICtrlSetColor( - 1, 0x000080)
    $Pic1 = GUICtrlCreatePic(@ScriptDir & "\ESCO_2.l", 39, 39, 121, 40, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUICtrlSetState( - 1, $GUI_DISABLE)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Pic2 = GUICtrlCreatePic("N:\profil.bmp", 3, 153, 956, 502, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUICtrlSetState( - 1, $GUI_DISABLE)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Label1 = GUICtrlCreateLabel("Geben Sie bitte die benötigten Maße an:", 12, 129, 195, 17)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Input1 = GUICtrlCreateInput("Flügel BT", 6, 327, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor( - 1, 0xFFFF00)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Input2 = GUICtrlCreateInput("Überschl. Breite", 519, 591, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor( - 1, 0xFFFF00)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Input3 = GUICtrlCreateInput("Bl.R. Freimaß", 642, 591, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor( - 1, 0xFFFF00)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Input4 = GUICtrlCreateInput("Überschl.Überd.", 564, 555, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor( - 1, 0xFFFF00)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Input5 = GUICtrlCreateInput("Kammermaß", 516, 393, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor( - 1, 0xFFFF00)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Input6 = GUICtrlCreateInput("Rahmen BT", 834, 306, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor( - 1, 0xFFFF00)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Input7 = GUICtrlCreateInput("Beschlagachse", 879, 420, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor( - 1, 0xFFFF00)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Input8 = GUICtrlCreateInput("Falzluft", 516, 360, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor( - 1, 0xFFFF00)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Input9 = GUICtrlCreateInput("Überschl.höhe", 627, 471, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor( - 1, 0xFFFF00)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Profil_finden = GUICtrlCreateButton("Profil finden", 21, 585, 99, 25, $WS_GROUP)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 129, 585, 99, 25, $WS_GROUP)
    GUICtrlSetResizing( - 1, $GUI_DOCKALL)
    $gui1 = GUICreate('HauptGUI', 500, 300, -1, -1)
    $button1 = GUICtrlCreateButton('2. GUI', 20, 20, 100, 21)
    GUISetState(@SW_SHOW, $gui1)

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

    While 1
    $msg = GUIGetMsg()

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

    Switch $msg

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

    Case $button1
    GUISetState(@sw_SHOW, $Form1_1)

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

    Case $GUI_EVENT_CLOSE

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

    If WinActive($Form1_1) Then
    GUISetState(@sw_HIDE, $Form1_1)

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

    Else
    Exit

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

    EndIf

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

    Case $Input1

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

    Case $Input2

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

    Case $Input3

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

    Case $Input4

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

    Case $Input5

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

    Case $Input6

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

    Case $Input7

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

    Case $Input8

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

    Case $Input9

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

    Case $Profil_finden
    ;~ profilliste()

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

    Case $Abbrechen

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

    EndSwitch

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

    WEnd

    [/autoit]
  • Hallo Stinger2k,

    eine Möglichkeit (falls du die 2. Gui nur bei Bedarf erzeugen möchtest):

    Spoiler anzeigen
    [autoit]

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

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

    Global $Form1_1 = -1, $MenuItem4, $MenuItem3, $MenuItem2, $MenuItem1, $Text_Progname, $Pic1, $Pic2, $Profil_finden
    Global $Label1, $Input1, $Input2, $Input3, $Input4, $Input5, $Input6, $Input7, $Input8, $Input9, $Abbrechen

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

    Global $gui1 = GUICreate('HauptGUI', 500, 300, -1, -1)
    $button1 = GUICtrlCreateButton('2. GUI', 20, 20, 100, 21)
    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg(1)
    If $msg[1] = $gui1 Then
    Switch $msg[0]

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

    Case $button1
    profilfinder()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    ElseIf $msg[1] = $Form1_1 Then
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE
    GUIDelete($Form1_1)
    $Form1_1 = -1
    GUISetState(@SW_SHOW, $Form1_1) ;evtl. nur verstecken
    Case $Input1
    Case $Input2
    Case $Input3
    Case $Input4
    Case $Input5
    Case $Input6
    Case $Input7
    Case $Input8
    Case $Input9
    Case $Profil_finden
    ;~ profilliste()
    Case $Abbrechen
    EndSwitch
    EndIf
    WEnd

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

    Func profilfinder()
    If $Form1_1 = -1 Then
    $Form1_1 = GUICreate("Profilsuche", 974, 718, -1, -1, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_GROUP, $WS_CLIPSIBLINGS, $ES_AUTOHSCROLL, $ES_AUTOVSCROLL))
    $MenuItem4 = GUICtrlCreateMenu("&Datei")
    $MenuItem3 = GUICtrlCreateMenu("&Bearbeiten")
    $MenuItem2 = GUICtrlCreateMenu("&Optionen")
    $MenuItem1 = GUICtrlCreateMenu("&Hilfe")
    GUISetIcon("N:\neu.exe")
    GUISetBkColor(0xFFFFFF)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    $Text_Progname = GUICtrlCreateLabel("Profilsuche", 282, 48, 314, 30)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlSetFont(-1, 16, 800, 0, "MS Reference Sans Serif")
    GUICtrlSetColor(-1, 0x000080)

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

    $Pic1 = GUICtrlCreatePic(@ScriptDir & "\ESCO_2.l", 39, 39, 121, 40, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    $Pic2 = GUICtrlCreatePic("N:\profil.bmp", 3, 153, 956, 502, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    $Label1 = GUICtrlCreateLabel("Geben Sie bitte die benötigten Maße an:", 12, 129, 195, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    $Input1 = GUICtrlCreateInput("Flügel BT", 6, 327, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input2 = GUICtrlCreateInput("Überschl. Breite", 519, 591, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input3 = GUICtrlCreateInput("Bl.R. Freimaß", 642, 591, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input4 = GUICtrlCreateInput("Überschl.Überd.", 564, 555, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input5 = GUICtrlCreateInput("Kammermaß", 516, 393, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input6 = GUICtrlCreateInput("Rahmen BT", 834, 306, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input7 = GUICtrlCreateInput("Beschlagachse", 879, 420, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input8 = GUICtrlCreateInput("Falzluft", 516, 360, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input9 = GUICtrlCreateInput("Überschl.höhe", 627, 471, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Profil_finden = GUICtrlCreateButton("Profil finden", 21, 585, 99, 25, $WS_GROUP)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 129, 585, 99, 25, $WS_GROUP)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    Else
    WinActivate("Profilsuche")

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

    EndIf
    GUISetState(@SW_SHOW)
    EndFunc ;==>profilfinder

    [/autoit]

    normalerweise solltest du sie aber am Anfang erzeugen und HIDEn,

    mfg (Auto)Bert

  • Mach doch das im OnEvent-Modus. Hier ein Beispiel.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $Gui1 = GUICreate("Erste GUI", 200, 200, 100, -1)
    $Button1_1 = GUICtrlCreateButton("Zweite GUI öffnen", 10, 30, 120, 25)
    $Button1_2 = GUICtrlCreateButton("Zweite GUI schließen", 10, 80, 120, 25)
    GUISetState()

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

    $Gui2 = GUICreate("Zweite GUI", 200, 200, 400, -1)
    $Button2_1 = GUICtrlCreateButton("Erste GUI öffnen", 10, 30, 120, 25)
    $Button2_2 = GUICtrlCreateButton("Erste GUI schließen", 10, 80, 120, 25)
    GUISetState(@SW_HIDE)

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_ExitGui", $Gui1)
    GUICtrlSetOnEvent($Button1_1, "_ZweiteGuiOeffnen")
    GUICtrlSetOnEvent($Button1_2, "_ZweiteGuiSchliessen")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_ExitGui", $Gui2)
    GUICtrlSetOnEvent($Button2_1, "_ErsteGuiOeffnen")
    GUICtrlSetOnEvent($Button2_2, "_ErsteGuiSchliessen")

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

    While 1
    Sleep(10)
    WEnd

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

    Func _ExitGui()
    Exit
    EndFunc

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

    Func _ZweiteGuiOeffnen()
    GUISetState(@SW_SHOW, $Gui2)
    EndFunc

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

    Func _ZweiteGuiSchliessen()
    GUISetState(@SW_HIDE, $Gui2)
    EndFunc

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

    Func _ErsteGuiOeffnen()
    GUISetState(@SW_SHOW, $Gui1)
    EndFunc

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

    Func _ErsteGuiSchliessen()
    GUISetState(@SW_HIDE, $Gui1)
    EndFunc

    [/autoit]
  • So Funktionierts !
    Wie Seubo schon sage mit guigetmsg(1)
    So wie du es aufgebaut hast ist es klar, dass er im ersten Fenster nichts mehr macht er ist ja auch nicht in der Schleife um das zu überprüfen. Also alles schön in einer Schleife machen und mit dem dem jeweligen Fensterhandle arbeiten. Ist recht unkompliziert, funktioniert einwandfrei und ist einfach die Beste Lösung mener meinung nach ;)

    AutoBerts Idee ist auch nicht schlecht aber ich finde zu umständlich.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $gui1 = GUICreate('HauptGUI', 500, 300, -1, -1)
    $gui1handle = WinGetHandle('HauptGUI')
    $button1 = GUICtrlCreateButton('2. GUI', 20, 20, 100, 21)
    GUISetState (@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg(1)
    Select

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

    Case $msg[0] = $button1 And $msg [1] = $gui1handle
    profilfinder()
    Case $msg[0] = $GUI_EVENT_CLOSE And $msg [1] = $gui1handle
    Exit
    Case $msg[0] = $GUI_EVENT_CLOSE And $msg [1] = $Form1_1handle
    GUIDelete()
    ExitLoop
    Case $msg[0] = $Input1 And $msg [1] = $Form1_1handle
    Case $msg[0] = $Input2 And $msg [1] = $Form1_1handle
    Case $msg[0] = $Input3 And $msg [1] = $Form1_1handle
    Case $msg[0] = $Input4 And $msg [1] = $Form1_1handle
    Case $msg[0] = $Input5 And $msg [1] = $Form1_1handle
    Case $msg[0] = $Input6 And $msg [1] = $Form1_1handle
    Case $msg[0] = $Input7 And $msg [1] = $Form1_1handle
    Case $msg[0] = $Input8 And $msg [1] = $Form1_1handle
    Case $msg[0] = $Input9 And $msg [1] = $Form1_1handle
    Case $msg[0] = $Profil_finden And $msg [1] = $Form1_1handle
    ;~ profilliste()
    Case $msg[0] = $Abbrechen And $msg [1] = $Form1_1handle

    EndSelect
    WEnd

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

    Func profilfinder()

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

    $Form1_1 = GUICreate("Profilsuche", 974, 718, -1, -1, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_GROUP, $WS_CLIPSIBLINGS, $ES_AUTOHSCROLL, $ES_AUTOVSCROLL))
    $Form1_1handle = WinGetHandle("Profilsuche")
    $MenuItem4 = GUICtrlCreateMenu("&Datei")
    $MenuItem3 = GUICtrlCreateMenu("&Bearbeiten")
    $MenuItem2 = GUICtrlCreateMenu("&Optionen")
    $MenuItem1 = GUICtrlCreateMenu("&Hilfe")
    GUISetIcon("N:\neu.exe")
    GUISetBkColor(0xFFFFFF)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    $Text_Progname = GUICtrlCreateLabel("Profilsuche", 282, 48, 314, 30)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlSetFont(-1, 16, 800, 0, "MS Reference Sans Serif")
    GUICtrlSetColor(-1, 0x000080)

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

    $Pic1 = GUICtrlCreatePic(@ScriptDir & "\ESCO_2.l", 39, 39, 121, 40, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    $Pic2 = GUICtrlCreatePic("N:\profil.bmp", 3, 153, 956, 502, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    $Label1 = GUICtrlCreateLabel("Geben Sie bitte die benötigten Maße an:", 12, 129, 195, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    $Input1 = GUICtrlCreateInput("Flügel BT", 6, 327, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input2 = GUICtrlCreateInput("Überschl. Breite", 519, 591, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input3 = GUICtrlCreateInput("Bl.R. Freimaß", 642, 591, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input4 = GUICtrlCreateInput("Überschl.Überd.", 564, 555, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input5 = GUICtrlCreateInput("Kammermaß", 516, 393, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input6 = GUICtrlCreateInput("Rahmen BT", 834, 306, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input7 = GUICtrlCreateInput("Beschlagachse", 879, 420, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input8 = GUICtrlCreateInput("Falzluft", 516, 360, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Input9 = GUICtrlCreateInput("Überschl.höhe", 627, 471, 85, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_NUMBER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFF00)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Profil_finden = GUICtrlCreateButton("Profil finden", 21, 585, 99, 25, $WS_GROUP)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 129, 585, 99, 25, $WS_GROUP)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUISetState(@SW_SHOW)
    EndFunc ;==>profilfinder

    [/autoit]


    LG Darter

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Hallo Darter,

    Zitat

    So Funktionierts !
    Wie Seubo schon sage mit guigetmsg(1)
    So wie du es aufgebaut hast ist es klar, dass er im ersten Fenster nichts mehr macht er ist ja auch nicht in der Schleife um das zu überprüfen. Also alles schön in einer Schleife machen und mit dem dem jeweligen Fensterhandle arbeiten. Ist recht unkompliziert, funktioniert einwandfrei und ist einfach die Beste Lösung mener meinung nach ;)

    AutoBerts Idee ist auch nicht schlecht aber ich finde zu umständlich.

    nein es funktioniert nicht:

    du hast es nicht ein einziges Mal gestartet, sonst hättest du auch diesen Absturz gehabt, der sich nur mit der Deklaration aller Variablen der 2. Gui, die in der Func erstellt wird, lösen lässt. Was ist an meinem Skript umständlich :?: Es funktioniert und ich habe Stinger2K hingewiesen dass es

    Zitat von AutoBert

    eine Möglichkeit (falls du die 2. Gui nur bei Bedarf erzeugen möchtest):
    ...
    normalerweise solltest du sie aber am Anfang erzeugen und HIDEn,

    Dies wäre meines Erachtens die optimale Methode.

    @m-obi: ich bevorzuge auch den OnEvent-Modus,
    @Tecoist: da du die Reihenfolge der GUIs vertauscht hast, habe ich die aufrufende GUI beim überffliegen übersehen, sonst hätte ich meine nicht mehr gepostet,

    mfg (Auto)Bert

  • Ah da wor ich wohl etwas zu schnell und hab nicht genau geschaut. Und ne auspribiert hab ich es tatsächlich nicht, da ich es nur schnell gemacht hab.

    Klar nach meiner lösung müsste man eben die 2 GUI auch starten und HIDEn.

    dickes Sorry

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Danke an euch alle...

    ich konnte damit schon gut arbeiten. +
    zum Vorschlag die GUI´s schon am anfang zu erstellen und nur mehr zu hiden oder zu zeigen:
    ich möchte nicht unnötig ressourcen verbrauchen, da die darauffolgenden Fenster wahrscheinlich nur selten verwendet werden.

    autoBert
    Deinen Vorschlag fand ich am idealsten und am verständlichsten...

    Danke nochmal an euch alle....

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

  • Ah da wor ich wohl etwas zu schnell und hab nicht genau geschaut. Und ne auspribiert hab ich es tatsächlich nicht, da ich es nur schnell gemacht hab.

    Klar nach meiner lösung müsste man eben die 2 GUI auch starten und HIDEn.

    dickes Sorry

    Hallo Darter, bei deiner Lösung wird auch bei jedem Aufruf der Func profilfinder()
    eine neue Gui erzeugt, damit überschreibst du alle vorhandenen bereits eingebenen Werte, naja wenigstens löschst du die Gui bei der Message $GUI_EVENT_CLOSE, das darauf folgende ExitLoop beendet dann zwangsläufig das Programm.

    stinger2k, die Lösung von Tecoist ist wenn wann nicht auf Ressorcen schauen muss idealer, da der Source leichter zu lesen ist (auch wenn ich beim 1. Überfliegen die aufrufende GUI glatt übersehen habe),

    mfg (Auto)Bert