GUI Unklarheiten

  • Hallo zusammen

    Ich habe mir heute das erste mal mit dem Koda Form Designer eine Form erstellt.

    Diese hat 4 Checkboxen und ein Button.

    Ich habe in meinem Skript 4 Funktionen. Jede ist/sollte einer Checkbox zugeordnet sein.

    Also wenn nur Checkbox 1 und 3 aktiv ist, sollen auch nur die Funktionen 1 und 3 ausgeführt werden. Nun, das sollte mit einem if/else nicht weiter schwierig sein.

    Das ganze soll dann via Button ausgeführt werden.

    Was mit eher Mühe bereitet ist der Aufbau der Form Datei. Also wo muss mein Code hin (in die while Schleife, oberhalb, unterhalb, etc.)

    Gibt es dazu irgendwo ein gescheites Tutorial oder könnte mir das jeamand erklären?

    Vielen Dank :)

    Gruss,
    eXpress

    Einmal editiert, zuletzt von eXpress (3. August 2010 um 14:12)

  • Hi,

    die GUI selbst solltest du natürlich nicht in die Schleife packen ;)

    Schau dir doch einfach im Auto-IT Ordner unter "Examples" die ganzen Beispiele an.

    Das sollte dir genug Infos geben.

    Gruß

    Prajoss

    "Never touch a running System!"

  • Hallo express,

    Gibt es dazu irgendwo ein gescheites Tutorial oder könnte mir das jeamand erklären?


    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

    Hier noch ein Beispiel zu Ckeckboxen:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <Constants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Opt('MustDeclareVars', 1) ;Variablen müssen vor Benutzung deklariert werden
    Opt("GUIOnEventMode", 1) ;On-Event-Modus ist eingeschaltet

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

    Global $Checkbox1, $Checkbox2, $Checkbox3, $Checkbox4

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

    _main()
    Func _main()

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

    GUICreate("Ckeckbox-Demo OnEvent-Modus", 300, 300)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

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

    $Checkbox1 = GUICtrlCreateCheckbox("1. Checkbox", 20, 40, 1250)
    $Checkbox2 = GUICtrlCreateCheckbox("2. Checkbox", 20, 70, 1250)
    $Checkbox3 = GUICtrlCreateCheckbox("3. Checkbox", 20, 100, 1250)
    $Checkbox4 = GUICtrlCreateCheckbox("4. Checkbox", 20, 130, 1250)

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

    GUICtrlCreateButton("Download", 50, 250, 80)
    GUICtrlSetOnEvent(-1, "Download")

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

    GUISetState(@SW_SHOW)
    While 1 ;<wichtig damit Programm am Leben erhalten wird
    Sleep(1000)
    WEnd
    EndFunc ;==>_main

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

    Func Download()
    If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) = $GUI_CHECKED Then
    MsgBox(0, "1. Checkbox", "ist angeCHECKED")
    ;InetGet verwenden zum downloaden
    Else
    MsgBox(0, "1. Checkbox", "ist nicht angeCHECKED")
    EndIf
    If BitAND(GUICtrlRead($Checkbox2), $GUI_CHECKED) = $GUI_CHECKED Then
    MsgBox(0, "2. Checkbox", "ist angeCHECKED")
    Else
    MsgBox(0, "2. Checkbox", "ist nicht angeCHECKED")
    EndIf
    If BitAND(GUICtrlRead($Checkbox3), $GUI_CHECKED) = $GUI_CHECKED Then
    MsgBox(0, "3. Checkbox", "ist angeCHECKED")
    ;InetGet verwenden zum downloaden
    Else
    MsgBox(0, "3. Checkbox", "ist nicht angeCHECKED")
    EndIf
    If BitAND(GUICtrlRead($Checkbox4), $GUI_CHECKED) = $GUI_CHECKED Then
    MsgBox(0, "4. Checkbox", "ist angeCHECKED")
    Else
    MsgBox(0, "4. Checkbox", "ist nicht angeCHECKED")
    EndIf
    EndFunc ;==>Download

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

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit]

    viel Spass damit

    mfg (Auto)Bert

  • Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    guictrlcreate("Fenster",200,200,-1,-1)
    $checkbox1 = guictrlcreatecheckbox("",10,20,40,20)
    $checkbox2= guictrlcreatecheckbox("",10,50,40,20)
    $checkbox3 = guictrlcreatecheckbox("",10,80,40,20)
    $checkbox4 = guictrlcreatecheckbox("",10,110,40,20)
    $button = guictrlcreatebutton("OK",50,150,90,40)
    guisetstate(@SW_SHOW)

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

    while 1
    $nmsg = guigetmsg()
    switch $nmsg
    case $GUI_EVENT_CLOSE
    Exit
    Case $button
    ;...If/esleif abfrage
    endswitch
    wend

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


    Ist ganz einfach:

    am anfang erstellst du die GUI mit den Checkboxen und dem Button. Mit guisetstate() sagst du, dass das ganze fenster angezeigt werden soll.

    Die While schleifen läuft immer, da While 1. Das guigetmsg() fragt nach, ob etwas in dem fenster passiert ist.

    die switch schleife ist wie if endif, nur dass es vereinfacht ist, man muss nur noch case und der variablen einen Wert geben, bei if/endif muss immer die ganze schleife angegeben werden und das ist umständlich.

    Wenn man auf den button drückt werden deine funktionen unter 'case $button' aufgerufen.

    das $GUI_EVENT_CLOSE(benötigt #include <GUIConstants.au3>) heißt, das der x-Button rechts oben am fenster gedrückt wurde.

    Ich hoffe das hilft dir weiter. :)

  • Hallo zusammen

    Danke für die Hilfe. Ich habe nun den Button ins switch/case aufgenommen und kann nun über den Click Event meine Funktion abrufen. Die Checkboxen spreche ich dann via GUICtrlRead an :)

    Nochmal danke für eure Hilfe :party:

    Gruss,
    eXpress