Ablauf in eine GUI packen

  • Ich möchte einen Ablauf in AutoIT in ein Packet packen, dass per GUI dann ausgeführt werden kann. Ich will damit in einer Datei die gleichen Abläufe haben, da diese sich allerdings leicht unterscheiden (Text) ist es sehr praktisch, wenn ich diese in einem GUI anklicken könnte.

    Also GUI sollte sich öffnen, dort kann ich dann auf Button drücken z.B. 1-30

    Wenn ich nun auf Button 1 Drücke soll es den Ablauf 1 ausführen (und wenn möglich den gedrückten Button leicht einfärben).
    Bei Button 2 Ablauf 2 ..........

    Ablauf sieht in etwa so aus:


    Bei Ablauf 2 ändert sich nur Text1 zu Text2.


    Achja, mit GUI habe ich noch garnichts gemacht. Nur bisher den obenstehenden Code habe ich bisher in AutoIT mir angeeignet.

    3 Mal editiert, zuletzt von Trion (23. April 2010 um 22:25)

  • Hi!
    benutze KODA

    Beispiel
    [autoit]

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

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

    $zahl = 1 ; weglassen wenn du es anders willst

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 324, 115, 192, 124)
    $Button1 = GUICtrlCreateButton("Button1", 24, 56, 75, 25, 0)
    $Label1 = GUICtrlCreateLabel("Text"&$zahl, 48, 32, 31, 17)
    $Button2 = GUICtrlCreateButton("Button2", 112, 56, 75, 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 $Button2
    $zahl += 1
    GUICtrlSetData( $Label1 , "Text"&$zahl) ;anstat $zahl dann "2" machen!
    Case $Button1
    Run ( "Programm" )
    sleep ( 2500 )
    MouseClick ("left" , 850, 204 , 1 , 10)
    sleep ( 300 )
    Send ( "Text1-1" )
    sleep ( 300 )
    MouseClick ("left" , 848, 227 , 1 , 10)
    sleep ( 300 )
    send ( "Text1-2" )
    sleep ( 300 )
    MouseClick ("left" , 1021, 215 , 1 , 10)
    sleep ( 4600 )
    Send("{TAB 54}")
    EndSwitch
    WEnd

    [/autoit]

    MfG
    Alizame

  • Hallo Trion,

    Zitat

    Also GUI sollte sich öffnen, dort kann ich dann auf Button drücken z.B. 1-30

    anstelle von Buttons würde ich dir eine ListBox bzw. eine ComboBox empfehlen. Allgemein gehaltenes Beispiel für Combo: [spoiler]

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ComboConstants.au3>
    #Include <GuiComboBox.au3>
    #include <File.au3>
    #include <array.au3>

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

    Global $szDrive,$szDir,$szFName,$szExt

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

    $idGUI = GUICreate("Flaggen", 300, 115)
    $idcbo = GUICtrlCreateCombo("", 10, 10, 180, 80,BitOR($CBS_SORT,$GUI_SS_DEFAULT_COMBO))
    $idNeu = GUICtrlCreateButton("...",200,10,30,25)
    $idVorschau = GUICtrlCreatePic(@ScriptDir & "\Flaggen\NA.jpg", 210, 40, 36, 24)
    $idInfo = GUICtrlCreateButton("&alle auslesem",10,90,180,25)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $idInfo
    $count = _GUICtrlComboBox_GetCount($idcbo)
    Dim $acbo[$count]
    $acbo = _GUICtrlComboBox_GetListArray($idcbo)
    _ArrayDisplay($acbo)
    case $idNeu
    $sAlt = GUICtrlRead($idcbo)
    $sPlus = FileOpenDialog("Land auswählen:",@ScriptDir & "\Flaggen","Bilder (*.jpg)",3,"",$idGUI)
    _PathSplit($sPlus,$szDrive,$szDir,$szFName,$szExt)
    ConsoleWrite($szFName & @CRLF)
    GUICtrlSetData($idcbo,$szFName,$szFName)
    Case $idcbo
    GUICtrlSetImage($idVorschau, @ScriptDir & "\Flaggen\" & GUICtrlRead($idcbo) & ".jpg")
    ;hier deinen gewünschte Funktionen einfügen
    EndSwitch
    WEnd

    [/autoit]

    {/spoiler]

    mfg (Auto)Bert

  • @Alizame

    Sieht sehr gut aus. Könntest du das fortführen, bis vlt mal 3 Buttons da sind die gehen? Wüsste jetzt leider nicht, wie ich selber Buttons mache bzw Button 2 eine Funktion gebe.

    Ansonsten genau was ich suche.

  • Nach etwas rumspielen, habe ich das System jetzt verstanden. Mal schaun ob ich es hinbekomme, vorerst mal -> [Erledigt]

    Danke an euch alle. ComboBox werde ich mir auch noch anschauen.

  • 1. Koda gibts hier (zum designen von GUI's) http://www.heise.de/software/downl…mdesigner/55398
    2. wenn du hilfe brauchts http://wiki.autoit.de/
    3. nagut ich mache es mal

    Spoiler anzeigen
    [autoit]


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

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

    $zahl = 1 ; weglassen wenn du es anders willst

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 324, 115, 192, 124)
    $Button1 = GUICtrlCreateButton("Button1", 24, 56, 75, 25, 0)
    $Label1 = GUICtrlCreateLabel("Text"&$zahl, 48, 32, 31, 17)
    $Button2 = GUICtrlCreateButton("Button2", 112, 56, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("Button3", 206, 56, 75, 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 $Button2
    $zahl += 1
    GUICtrlSetData( $Label1 , "Text"&$zahl) ;anstat $zahl dann "2" machen!
    Case $Button1
    Run ( "Programm" )
    sleep ( 2500 )
    MouseClick ("left" , 850, 204 , 1 , 10)
    sleep ( 300 )
    Send ( "Text1-1" )
    sleep ( 300 )
    MouseClick ("left" , 848, 227 , 1 , 10)
    sleep ( 300 )
    send ( "Text1-2" )
    sleep ( 300 )
    MouseClick ("left" , 1021, 215 , 1 , 10)
    sleep ( 4600 )
    Send("{TAB 54}")
    Case $Button3
    ;deine funktion
    EndSwitch
    WEnd

    [/autoit]

    Edit\\ während ich am verfassen bin sind 2 neue antworten gekommen!

    MfG
    Alizame

  • http://www.abload.de/image.php?img=unbenannt74uq.jpg

    Wie kriege ich das nun in mein AutoIT? Speichern kann ich es nur als Koda Datei.

    Edit: OK F9, aber der Code sieht komplett anderst aus.

  • Koda ist normalerweise standardmäßig bei Scite mit bei.

    Hier mal mein Vorschlag (und AutoBert) mit der ComboBox.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    $hGui = GUICreate("Gui", 200, 70)
    GUICtrlCreateLabel("Ablauf:", 15, 23, 35, 17)
    $hCombo = GUICtrlCreateCombo("", 55, 20, 40, 20)
    For $i = 1 To 30
    GUICtrlSetData(-1, $i)
    Next
    $hButtonStart = GUICtrlCreateButton("Ausführen", 110, 18, 80, 25)
    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hButtonStart
    _Run()
    EndSwitch
    WEnd

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

    Func _Run()
    Switch GUICtrlRead($hCombo)
    Case 1
    ConsoleWrite(@CRLF & "1") ; hier kommt an Stelle von ConsoleWrite dein Ablauf 1 hin
    Case 2
    ConsoleWrite(@CRLF & "2") ; hier kommt an Stelle von ConsoleWrite dein Ablauf 2 hin
    Case Else
    MsgBox(0, "Fehler", "Sie haben keinen Ablauf ausgewählt" & @CRLF & "oder es ist noch kein Ablauf hinterlegt!")
    EndSwitch
    EndFunc

    [/autoit]

    Musst dann an den benannten Stellen deine Abläufe reinmachen, sowie neue Cases hinzufügen.

    Edit: Was sieht denn daran anders aus? Außer das es halt aussieht wie von Koda gemacht, krumme Pixelangaben, undeutige Variablennamen, typisch halt. Mal ist der Button 75 lang, mal 81, mal 73, so ist das halt.

  • Danke, scheint einfacher zu gehen und ist übersichtlich! Teste es sofort, melde mich dann, ob es klappt.

    Edit:

    Script funktioniert nun Wunderbar und ich kann es auch unendlich lange selber fortsetzen. Vielen vielen Dank an alle, die sich hier beteiligt haben. Echt geniales und schnelles Forum hier!

    Einmal editiert, zuletzt von Trion (23. April 2010 um 22:24)

  • So, da es mir Spaß macht und ich noch einen Button einbauen will, habe ich mir mit Koda eine Combobox und 2 Buttons erstellt (also ich würde gerne ganz alleine die GUI machen und es Visuell noch etwas optimieren).

    Mein Problem ist leider nur, dass Koda nur folgendes ausspuckt als Code, und ich weiß nicht wie ich in der ComboBox 1-20 mache und Button 1+2 eine Funktion geben kann.

    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=ORT
    $Form1 = GUICreate("Form1", 318, 45, 352, 281)
    $Combo1 = GUICtrlCreateCombo("Combo1", 8, 8, 97, 25)
    $Button1 = GUICtrlCreateButton("Ausführen", 112, 8, 97, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Clean", 216, 8, 89, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    EndSwitch
    WEnd

    [/autoit]

    Wie Code ich damit nun weiter, damit ComboBox erstmal 1-20 erhält zur Auswahl. (Button 1 soll das in ComboBox ausgewählte ausführen)
    Button 2 soll wieder eine andere eigenständige Aktion ausführen.


    EDIT:
    Ich habe einfach den Button im alten Script eingebaut. Das mit dem ComboBox selber machen schaffe ich einfach nicht.

    Einmal editiert, zuletzt von Trion (24. April 2010 um 10:33)