button zuweisen

  • so ja hallo an alle,
    habe mich heute daran versucht nen script zur übung zu erstellen, ich hänge nun daran fest das ich
    nicht weiss wie ich den buttons eine funktion zuweise und stehe total auf dem schlauch.vllt kann mir einer einen tipp geben.

    Spoiler anzeigen

    #include <GUIConstants.au3>

    #Region ### START Koda GUI section ### Form=das is der pfad zu den bildern(gehts vllt auch ohne pfad)?
    $Form2 = GUICreate("Form1", 383, 258, 497, 219)
    $Button1 = GUICtrlCreateButton("Starten", 304, 16, 57, 25, 0)
    $Button2 = GUICtrlCreateButton("Ende", 304, 56, 57, 25, 0)
    $Pic1 = GUICtrlCreatePic("C:\Users\m\Desktop\hier is nen bild", 0, 0, 281, 257, 0)
    $Pic2 = GUICtrlCreatePic("C:\Users\m\Desktop\und noch eins", 288, 136, 92, 121, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    EndSwitch
    WEnd
    Func ()
    While 1

    If $msgbox = 6 Then MsgBox(0, "", "Start")
    If $msgbox = 7 Then MsgBox(0, "", "Ende")
    WEnd
    EndFunc

    Einmal editiert, zuletzt von spaki (6. Juli 2010 um 15:03)

  • Tipp: In einer Func kann keine While schleife sein.
    Dann zum Button, das machst du in der sitch schleife so:

    [autoit]


    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Button1
    _Funktion()
    case $Button2
    _die AndereFunktion()
    EndSwitch
    WEnd

    [/autoit]
  • Hallo spaki,

    ich denke du wolltest dieses Ergebnis erreichen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #region ### START Koda GUI section ### Form=das is der pfad zu den bildern(gehts vllt auch ohne pfad)?
    $Form2 = GUICreate("Form1", 383, 258, 497, 219)
    $Button1 = GUICtrlCreateButton("Starten", 304, 16, 57, 25, 0)
    $Button2 = GUICtrlCreateButton("Ende", 304, 56, 57, 25, 0)
    $Pic1 = GUICtrlCreatePic("C:\Users\m\Desktop\hier is nen bild", 0, 0, 281, 257, 0)
    $Pic2 = GUICtrlCreatePic("C:\Users\m\Desktop\und noch eins", 288, 136, 92, 121, 0)

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

    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Button1
    MsgBox(0, "", "Start")
    case $Button2
    MsgBox(0, "", "Ende")
    EndSwitch
    WEnd

    [/autoit]

    Hier kannst du dir die Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee .

    clezZ & ProblemUser solltet ihr vielleicht auch hinneinschauen, denn in einer Func kann jede Art von Schleife vorkommen. Bei Func' s die auf eine Nachricht des Programms (Button-Click) aufgerufen wurden sollte man "Endlos-Schleifen" auf jeden Fall vermeiden, da während der Ausführung der Func die Nachrichten zwar entgegengenommen (in eine Art Warteschlange gestellt) aber nicht abgearbeitet werden. Eine Ausnahme bildet hier GuiRegisterMsg diese werden sofort ausgeführt. Ist die blockierende Func zu Ende läuft das Skript normal weiter und alle Nachrichten werden der Reihe nach abgearbeitet

    mfg (Auto)Bert

  • ja genau danke schön autobert :) das ist genau das was ich meinte :) .wenn ich noch weitere fragen habe zu dem script kann ich ddie dann hier posten oder soll ich dann immer ein neues thema eröffnen?

  • ja genau danke schön autobert :) das ist genau das was ich meinte :) .wenn ich noch weitere fragen habe zu dem script kann ich ddie dann hier posten oder soll ich dann immer ein neues thema eröffnen?


    Wenn ein Thema erledigt/gelöst ist sollte dieses auf gelöst gesetzt werden. Einfach 1. Beitrag bearbeiten, Präfix (nähe Überschrift) ändern und speichern (absenden). Für neue Probleme/Fragen eröffnest du dann einfach ein neues Thema, wobei die Hilfe zu AutoIt sehr gut ist (natürlich auch das Tut und das Buch) so dass man nach einer gewissen Ein-/Umgewöhnung sehr gut damit zurecht kommt. Das Board hat auch eine eingebaute SUchFUnktion (fast ganz oben rechts) die man auch sehr hilfreich zur Problemlösung einsetzen kann,

    mfg (Auto)Bert

  • nur nochmal ne frage

    [autoit]

    $Button1 = GUICtrlCreateButton("Starten", 304, 16, 57, 25, 0)
    $Button2 = GUICtrlCreateButton("Ende", 304, 56, 57, 25, 0)

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


    was soll das denn werden?

  • [autoit]

    $Button1 = GUICtrlCreateButton("Starten", 304, 16, 57, 25, 0)
    $Button2 = GUICtrlCreateButton("Ende", 304, 56, 57, 25, 0)

    [/autoit]

    $Button1 ist eine Variable die brauchst du z.b. um zuweisen zu können was diese funktion macht, du kannst auch z.b. $Starttbutton verwenden

    Dann must du deinen Script so umschreiben:

    [autoit]

    #include <GUIConstants.au3>

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

    #region ### START Koda GUI section ### Form=das is der pfad zu den bildern(gehts vllt auch ohne pfad)?
    $Form2 = GUICreate("Form1", 383, 258, 497, 219)
    $startbutton = GUICtrlCreateButton("Starten", 304, 16, 57, 25, 0) ;wie du siehst hier heißt die variable nun $startbutton
    $Button2 = GUICtrlCreateButton("Ende", 304, 56, 57, 25, 0)
    $Pic1 = GUICtrlCreatePic("C:\Users\m\Desktop\hier is nen bild", 0, 0, 281, 257, 0)
    $Pic2 = GUICtrlCreatePic("C:\Users\m\Desktop\und noch eins", 288, 136, 92, 121, 0)

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

    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $startbutton ; Hier findest du die oben genannte variable $startbutton case bedeutet in dem falle wenn man auf diesen Button klickt
    ;////////////////////////////
    ; Ab hier beginnt der Script (In dem falle die MsgBox "MsgBox(0, "", "Start")" wenn man auf deen Startbutton klickt
    ;///////////////////////////
    MsgBox(0, "", "Start")
    ;////////////////////////////
    ; Hier ist er dann zu ende kannst ihn natürlich auch länger machen
    ;///////////////////////////
    case $Button2
    MsgBox(0, "", "Ende")
    EndSwitch
    WEnd

    [/autoit][autoit]

    GUICtrlCreateButton

    [/autoit]

    heißt das er ein Button Feld macht wo man dann schlussendlich darauf klicken kann

    Und das was in "" steht ist was in dem Button Feld drin steht.
    Die zahlen ist die Größe vom Button und wo er steht.

  • Hallo Spaki,

    falls du für noch einen Vorschlag offen bist: Hier wird im 'im wahrsten Sinne des Wortes' eine Funktion einem Ereignis am Button angehängt.
    Diese Lösung funktioniert im OnEvent-Mode. Hier ist eine UDF "Eventhandler.au3" included, die einige Möglichkeiten mehr bietet.
    Du kannst mittels der Funktionen _GUISetOnEvent() bzw. _GUICtrlSetOnEvent() ein Ereignis, z.B. Mausklick links, einem Control, z.B. Button, zuordnen, bei dem eine bestimmte Funktion ausgeführt werden soll. Interessant wird das ganze, wenn du andere Controls verwendest, bei denen beim Doppelklick oder Rechtsklick eine Funktion gestartet werden soll.
    Unter Beschreibung der UDF sind mehr Hinweise zu finden.

    [autoit]


    #include <GUIConstants.au3>
    #Include <Eventhandler.au3>

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

    Opt("GUIOnEventMode", 1) ; Zum OnEvent-Mode wechseln

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

    Local $active = True

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

    #region ### START Koda GUI section ### Form=das is der pfad zu den bildern(gehts vllt auch ohne pfad)?
    $Form2 = GUICreate("Form1", 383, 258, 497, 219)
    $Button1 = GUICtrlCreateButton("Starten", 304, 16, 57, 25, 0)
    $Button2 = GUICtrlCreateButton("Ende", 304, 56, 57, 25, 0)
    $Pic1 = GUICtrlCreatePic("C:\Users\m\Desktop\hier is nen bild", 0, 0, 281, 257, 0)
    $Pic2 = GUICtrlCreatePic("C:\Users\m\Desktop\und noch eins", 288, 136, 92, 121, 0)

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

    ; aktionlistener definieren
    _GUISetOnEvent($GUI_EVENT_CLOSE, "_exitClicked", $Form2)

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

    _GUICtrlSetOnEvent($EVENT_PRIMARY_CLICK, "_button1", $Form2, $Button1)
    _GUICtrlSetOnEvent($EVENT_PRIMARY_CLICK, "_button2", $Form2, $Button2)

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

    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While $active
    sleep(100)
    WEnd
    Exit

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

    Func _button1()
    MsgBox(0, "", "Start")
    EndFunc

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

    Func _button2()
    MsgBox(0, "", "Ende")
    EndFunc

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

    Func _exitClicked()
    $active = False
    EndFunc

    [/autoit]

  • so meinte ich des garnet :O
    ich kenn mich mit guis aus
    nur so nen gui wo nur 2 bottons sind, welche "start" und "stopp" heißen, hört siuch verdächtig nach bot an
    aber trotzdem gut erklärt

  • ich bedanke mich bei allen die gepostet haben und geholfen haben ich hatte mich zwar vor einer weile mit autoit beschäftigt gehabt. da aber nur mit mousemove und mouseklick und sowas versuche mich erst jetzt mit gui und buttons.


  • so meinte ich des garnet :O
    ich kenn mich mit guis aus
    nur so nen gui wo nur 2 bottons sind, welche "start" und "stopp" heißen, hört siuch verdächtig nach bot an
    aber trotzdem gut erklärt


    so meinte ich des garnet :O
    ich kenn mich mit guis aus
    nur so nen gui wo nur 2 bottons sind, welche "start" und "stopp" heißen, hört siuch verdächtig nach bot an
    aber trotzdem gut erklärt

    Mist hab gedacht jetzt kann ich auch mal helfen xDD

    Naja ^^ dann wenn du keine Fragn mehr hast ist ja das thema zu ende =)