Probleme bei Wertigkeitsbereichen von Variablen

  • Hey Leute, wollt nen ganz einfaches Script erstellen und krieg es nicht hin..

    Hier mein Ansatz:

    [autoit]

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

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

    _main()
    Exit

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

    Func _main()
    _w_main($Button1)
    While 1
    _GuiGetMsg($Button1)
    WEnd
    EndFunc

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

    Func _w_main()
    $Form1 = GUICreate("Form1", 369, 252, 265, 143)
    $Button1 = GUICtrlCreateButton("Button1", 40, 48, 161, 73, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Button2", 40, 144, 161, 65, $WS_GROUP)
    GUISetState(@SW_SHOW)
    EndFunc ;==> Create MainWindow

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

    Func _GuiGetMsg()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    MsgBox(0,"","Button1Gedrückt!")
    EndSwitch
    EndFunc ;==> Set Actions

    [/autoit]

    Und nun zu meiner Frage, denn das Script, wie es hier ist, funktioniert ja so nicht...:
    Wie bekomm ich es hin, dass die Variablen vom Buttom, der in einer anderen Funktion erstellt wurde, bei der Funktion mit GuiGetMsg arbeiten kann??

    Danke für eure hilfe :rock:

    Einmal editiert, zuletzt von Mr_gitarre (13. Juli 2010 um 11:30)

  • einfach die variablen global declarieren:

    Spoiler anzeigen
    [autoit]

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

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

    Global $Button1, $Button2

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

    _main()
    Exit

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

    Func _main()
    _w_main($Button1)
    While 1
    _GuiGetMsg($Button1)
    WEnd
    EndFunc

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

    Func _w_main()
    $Form1 = GUICreate("Form1", 369, 252, 265, 143)
    $Button1 = GUICtrlCreateButton("Button1", 40, 48, 161, 73, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Button2", 40, 144, 161, 65, $WS_GROUP)
    GUISetState(@SW_SHOW)
    EndFunc ;==> Create MainWindow

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

    Func _GuiGetMsg()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    MsgBox(0,"","Button1Gedrückt!")
    EndSwitch
    EndFunc ;==> Set Actions

    [/autoit]

    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.

  • Wie sollen Funktionen außerhalb wissen welche Controls es gibt wenn du sie vor ihnen verheimlichst?
    Wenns unbedingt sein muss dann wäre der OnEvent-Mode die wohl geeignetere Wahl (Variablen für die Control-ID brauchst du dann auch nicht mehr):

    Spoiler anzeigen
    [autoit]

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

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

    Opt("GUIOnEventMode", 1)

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

    _main()

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

    Func _main()
    _w_main()
    While Sleep(10)
    WEnd
    EndFunc ;==>_main

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

    Func _w_main()
    GUICreate("Form1", 369, 252, 265, 143)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Ende")
    GUICtrlCreateButton("Button1", 40, 48, 161, 73, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button1_Click")
    GUICtrlCreateButton("Button2", 40, 144, 161, 65, $WS_GROUP)
    GUISetState(@SW_SHOW)
    EndFunc

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

    Func Button1_Click()
    MsgBox(0, "", "Button1Gedrückt!")
    EndFunc

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

    Func Ende()
    Exit
    EndFunc

    [/autoit]
  • Wenn es unbefingt mir GuiGetMsg() funktionieren soll und die du die Variablen nicht Global declarieren willst, wäre das eine möglichkeit, woch ich nicht ganz verstehe warum?

    Spoiler anzeigen
    [autoit]

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

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

    _main()
    Exit

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

    Func _main()
    $ButtonID = _w_main()
    While 1
    _GuiGetMsg($ButtonID)
    WEnd
    EndFunc

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

    Func _w_main()
    $Form1 = GUICreate("Form1", 369, 252, 265, 143)
    $Button1 = GUICtrlCreateButton("Button1", 40, 48, 161, 73, $WS_GROUP)
    GUISetState(@SW_SHOW)
    Return $Button1
    EndFunc ;==> Create MainWindow

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

    Func _GuiGetMsg($ButtID)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    MsgBox(0,"","Button1Gedrückt!")
    EndSwitch
    EndFunc ;==> Set Actions

    [/autoit]

    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.

    • Offizieller Beitrag

    Darter, wenn du schon der Func _GUIGetMsg einen Parameter mitgiebst, solltest du Ihn auch abfragen.

    Spoiler anzeigen
    [autoit]

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

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

    _main()
    Exit

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

    Func _main()
    $ButtonID = _w_main()
    While 1
    _GuiGetMsg($ButtonID)
    WEnd
    EndFunc

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

    Func _w_main()
    $Form1 = GUICreate("Form1", 369, 252, 265, 143)
    $Button1 = GUICtrlCreateButton("Button1", 40, 48, 161, 73, $WS_GROUP)
    GUISetState(@SW_SHOW)
    Return $Button1
    EndFunc ;==> Create MainWindow

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

    Func _GuiGetMsg($ButtID)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $ButtID
    MsgBox(0,"","Button1Gedrückt!")
    EndSwitch
    EndFunc ;==> Set Actions

    [/autoit]
  • ups jop klar. hab nur leider kein Autoit um es zu testen, sonst wäre es mir natürlich gleich aufgeallen^^

    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.

  • Na hat den sinn, wenn ich mehrere Fenster mit dem Button Start und der Gleichen Variable $start habe, dann sollen 2 verschiedene Sachen Gehen..,
    Danke für eure antworten... ich werde die erstmal alle ausprobieren!;)

    OnEvent nehm ich mir als erstes vor;)

  • Und neuer Fehler den ich nicht beheben kann:

    [autoit]

    #include <INet.au3> ;Benutzt von _GetIP()
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiIPAddress.au3>
    #Include <GuiComboBox.au3>

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

    Opt("GUIOnEventMode", 1)

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

    _main()
    Exit

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

    Func _main()
    TrayTip ("", "Status: Programm gestartet" ,5)
    _mainWindow()
    While Sleep (20)
    WEnd
    EndFunc

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

    Func _mainWindow()

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

    $W_NetBus = GUICreate("NetBus 2.0, by Eykesoft", 518, 286, -1, -1)

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

    GUICtrlCreateButton("testButton", 8, 40, 121, 25, $WS_GROUP)
    GUISetOnEvent (-1, "hallo")

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

    GUISetState(@SW_SHOW)
    EndFunc

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

    Func hallo()
    MsgBox(0,"","")
    EndFunc

    [/autoit]

    Wieso funktioniert das nicht!!!!!!!!!!!!!

    • Offizieller Beitrag

    Zitat aus meinem Array Tutorial

    Zitat

    Wieso funktioniert das nicht!!!!!!!!!!!!!


    Schau dir mal die Funktionen an:
    - GUISetOnEvent
    - GUICtrlSetOnEvent ;)

  • Ach du scheiße, son kleiner fehler und ich sitz hier schon seit ner stunde dran...

    Vielen dank, und dein Beitrag zu dem Array: kannste mir dazu nen beispiel geben, kann mir dazu nicht viel vorstellen, danke;)

  • Na ich meine Eigentlich nen beispielScript, also ich wüsste nicht, wie ich das programmiere... 8|

    • Offizieller Beitrag

    OK, na dann mal als Code:

    Spoiler anzeigen
    [autoit]

    Opt('GUIOnEventMode', 1)

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

    Enum $guiMain, $btRead, $btClose, $btSafe, $inBetrag, $inWaehrung, $Anzahl
    Global $aGui[$Anzahl]

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

    $aGui[$guiMain] = GUICreate('Test')
    GUISetOnEvent(-3, '_Exit')
    $aGui[$btRead] = GUICtrlCreateButton('Read', 10, 10, 60, 20)
    $aGui[$btClose] = GUICtrlCreateButton('Close', 90, 10, 60, 20)
    $aGui[$btSafe] = GUICtrlCreateButton('Safe', 170, 10, 60, 20)
    GUICtrlCreateLabel('Betrag', 10, 53, 40)
    $aGui[$inBetrag] = GUICtrlCreateInput('', 60, 50, 50, 20)
    $aGui[$inWaehrung] = GUICtrlCreateInput('', 115, 50, 50, 20)
    GUICtrlCreateLabel('Währung', 170, 53, 70, 20)
    GUICtrlSetOnEvent($aGui[$btRead], '_Read')
    GUICtrlSetOnEvent($aGui[$btSafe], '_Safe')
    GUICtrlSetOnEvent($aGui[$btClose], '_Exit')

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

    GUISetState()

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

    While True
    Sleep(100)
    WEnd

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _Read()
    MsgBox(0, 'Inhalt Input', GUICtrlRead($aGui[$inBetrag]) & ' ' & GUICtrlRead($aGui[$inWaehrung]))
    EndFunc

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

    Func _Safe()
    MsgBox(0, '', 'Hier könnte man etwas speichern')
    EndFunc

    [/autoit]