ein button! 2 funktionen?

  • Hallo ich möchte dass mein Button solange das macht bis ich wieder drauf klick. In der Hilfe steht iwie niX bzw hab nichts gefunden.


    Spoiler anzeigen

    Case $msg = $hidebutton
    GUICtrlSetData ($hidebutton,"Show")
    WinActivate("Liste.txt - Editor", "")
    ... ;Hided das window

    $eintest = 0

    While $eintest = 0
    If $msg = $hidebutton then
    GUICtrlSetData ($hidebutton,"Hide")
    WinActivate("Liste.txt - Editor", "")
    ... ;Zeigt das Window

    $eintest = 1

    EndIf

    Wend



    Das es so nicht funzen kann weiß ich mittlerweile. Deshalb frag ich mal euch^^

    Dnake schonmal

    GreetZ


    EDIT: Sollte wenn möglich auch nicht sehr rechenintensiv sein. also vllt auch ohne while schleife

    Einmal editiert, zuletzt von Dönn3y (9. März 2008 um 21:24)

  • Spoiler anzeigen
    [autoit]

    GuiCreate("",200,100)
    GuiSetState()

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

    $Button=GuiCtrlCreateButton("1234",10,70,50,20)
    $Ereignis = 0

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


    Do
    $msg = GuiGetMsg()
    if $msg = $button then
    $Ereignis = 1
    EndIf
    ;bla

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

    Until $Ereignis = 1

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

    MsgBox(0,"","Fertig")

    [/autoit]

    So??

  • hmm. nein. Im prinzip muss man 2 mal auf den button klicken. also beim ersten mal macht er irgendwas. und wenn man dann irgendwann nochmal draufklickt, macht er wieder was und der button ist dann wieder in seiner ursprungsform. so ungefähr hatte ich mir das eig gedacht. aber ich schau mir mal die do..until funktion genauer an...

  • das wollt ich eig nicht. ich hab jetzt was gefunden aber ich werd daraus nicht schlau bzw bei meiner eigenen vers funzt es dann nicht.

    Spoiler anzeigen

    #include <GUIConstants.au3>

    GUICreate("My GUI Progressbar",220,100, 100,200)
    $progressbar1 = GUICtrlCreateProgress (10,10,200,20)
    GUICtrlSetColor(-1,32250); not working with Windows XP Style
    $progressbar2 = GUICtrlCreateProgress (10,40,200,20,$PBS_SMOOTH)
    $button = GUICtrlCreateButton ("Start",75,70,70,20)
    GUISetState ()

    $wait = 20; wait 20ms for next progressstep
    $s = 0; progressbar-saveposition
    do
    $msg = GUIGetMsg()
    If $msg = $button Then
    GUICtrlSetData ($button,"Stop")
    For $i = $s To 100
    If GUICtrlRead($progressbar1) = 50 Then Msgbox(0,"Info","The half is done...", 1)
    $m = GUIGetMsg ()

    If $m = -3 Then ExitLoop

    If $m = $button Then
    GUICtrlSetData ($button,"Next")
    $s = $i;save the current bar-position to $s
    ExitLoop
    Else
    $s=0
    GUICtrlSetData ($progressbar1,$i)
    GUICtrlSetData ($progressbar2,(100 - $i))
    Sleep($wait)
    EndIf
    Next
    if $i >100 then
    ; $s=0
    GUICtrlSetData ($button,"Start")
    endif
    EndIf
    until $msg = $GUI_EVENT_CLOSE

    Diese buttonfunktion brauch ich aber ich´hab schon alles mögl versucht,gecoped und gepastet aber das funzt nicht^^

    • Offizieller Beitrag

    Suchst du vielleicht sowas:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    Global $toggle = False

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 303, 166, 193, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $Button1 = GUICtrlCreateButton("Button1", 64, 56, 161, 33, 0)
    GUICtrlSetOnEvent(-1, "Button1Click")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Sleep(100)
    WEnd

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

    Func Button1Click()
    If $toggle Then
    _Fun2()
    Else
    _Fun1()
    EndIf
    $toggle = Not $toggle
    EndFunc

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

    Func Form1Close()
    Exit
    EndFunc

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

    Func _Fun1()
    MsgBox(0, '', 'Jetzt wird Funktion 1 ausgeführt')
    EndFunc

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

    Func _Fun2()
    MsgBox(0, '', 'Jetzt wird Funktion 2 ausgeführt')
    EndFunc

    [/autoit]

    Edit:
    Theoretisch kannst du auch beliebig viele verschiedene Funktionen auf diese Art ausführen.
    Bleibt natürlich die Frage, ob das Sinn macht. ;)
    Hier mal eine Version mit 5 Funktionen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <array.au3>
    Opt("GUIOnEventMode", 1)
    Global $aFunc[5] = [1,2,3,4,5]

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 303, 166, 193, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $Button1 = GUICtrlCreateButton("Button1", 64, 56, 161, 33, 0)
    GUICtrlSetOnEvent(-1, "Button1Click")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Sleep(100)
    WEnd

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

    Func Button1Click()
    Local $funNr = $aFunc[0]
    _ArrayPush($aFunc, $funNr)
    Execute('_Fun' & $funNr & '()')
    EndFunc

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

    Func Form1Close()
    Exit
    EndFunc

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

    Func _Fun1()
    MsgBox(0, '', 'Jetzt wird Funktion 1 ausgeführt')
    EndFunc

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

    Func _Fun2()
    MsgBox(0, '', 'Jetzt wird Funktion 2 ausgeführt')
    EndFunc

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

    Func _Fun3()
    MsgBox(0, '', 'Jetzt wird Funktion 3 ausgeführt')
    EndFunc

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

    Func _Fun4()
    MsgBox(0, '', 'Jetzt wird Funktion 4 ausgeführt')
    EndFunc

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

    Func _Fun5()
    MsgBox(0, '', 'Jetzt wird Funktion 5 ausgeführt')
    EndFunc

    [/autoit]
  • genau das meinte ich. danke bugfix.

    nein ich brauch nur 2 funktionen. aber ich dachte mir, wenn ich ein window hiden möchte und dann wieder anzeigen möchte, brauch ich keine

    2 buttons.^^

    gruß