Beispiel für Ein- und Ausfahreffekt

  • Hab mal ein kleines Beispiel Script für einen Ein - und Ausfahreffekt gemacht.
    Hoffe kann damit ein paar Leuten helfen.
    Anfänger Beispiel

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Ein - und Ausfahr Demo", 242, 199, 193, 125)
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 69, 169)
    GUICtrlSetData(-1, "1")
    $Edit2 = GUICtrlCreateEdit("", 86, 0, 69, 169)
    GUICtrlSetData(-1, "2")
    $Edit3 = GUICtrlCreateEdit("", 170, 0, 69, 169)
    GUICtrlSetData(-1, "3")
    $Button1 = GUICtrlCreateButton("Hide (1)", 2, 174, 57, 19, 0)
    $Button2 = GUICtrlCreateButton("Hide (2)", 92, 174, 57, 19, 0)
    $Button3 = GUICtrlCreateButton("Hide (3)", 178, 174, 57, 19, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Global $1 = 0 , $eins1 = 169 ,$buttoneins = 0

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $buttoneins = $buttoneins + 1
    If $buttoneins = 1 Then
    GUICtrlSetData ($Button1,"Show (1)")
    Do
    $eins1 = $eins1 - 1
    GUICtrlSetPos ($Edit1,0,$eins1)
    Sleep (5)
    Until $eins1 = 0
    Else
    $buttoneins = $buttoneins - 2
    GUICtrlSetData ($Button1,"Hide (1)")
    Do
    $eins1 = $eins1 + 1
    GUICtrlSetPos ($Edit1,0,$eins1)
    Sleep (5)
    Until $eins1 = 193
    EndIf
    Case $Button2
    $buttoneins = $buttoneins + 1
    If $buttoneins = 1 Then
    GUICtrlSetData ($Button2,"Show (2)")
    Do
    $eins1 = $eins1 - 1
    GUICtrlSetPos ($Edit2,86,$eins1)
    Sleep (5)
    Until $eins1 = 0
    Else
    $buttoneins = $buttoneins - 2
    GUICtrlSetData ($Button2,"Hide (2)")
    Do
    $eins1 = $eins1 + 1
    GUICtrlSetPos ($Edit2,86,$eins1)
    Sleep (5)
    Until $eins1 = 193
    EndIf
    Case $Button3
    $buttoneins = $buttoneins + 1
    If $buttoneins = 1 Then
    GUICtrlSetData ($Button3,"Show (3)")
    Do
    $eins1 = $eins1 - 1
    GUICtrlSetPos ($Edit3,170,$eins1)
    Sleep (5)
    Until $eins1 = 0
    Else
    $buttoneins = $buttoneins - 2
    GUICtrlSetData ($Button3,"Hide (3)")
    Do
    $eins1 = $eins1 + 1
    GUICtrlSetPos ($Edit3,170,$eins1)
    Sleep (5)
    Until $eins1 = 193
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Fortgeschritteneres beispiel
    [spoiler]

    [autoit]


    #include<GUIConstantsEx.au3>
    Opt('GUIOnEventMode', 1)

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

    Global Const $WS_EX_COMPOSITED = 0x2000000
    Global $hGui = GUICreate('Ein - und Ausfahr Demo', 242, 199, 193, 125, Default, $WS_EX_COMPOSITED)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    Global $Edit[3]
    For $i = 0 To 2
    $Edit[$i] = GUICtrlCreateEdit('1', $i*80, 0, 69, 169)
    Next
    Global $Button[3][2]
    For $i = 0 To 2
    $Button[$i][0] = GUICtrlCreateButton('Hide', 2+$i*80, 174, 57, 19, 0)
    GUICtrlSetOnEvent(-1, '_ShowHide')
    $Button[$i][1] = False
    Next
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(20)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _ShowHide()
    Local $ID = @GUI_CtrlId
    Local $SelID = @GUI_CtrlId-$Button[0][0]
    Local $aPos = ControlGetPos($hGui, '', $Edit[$SelID])
    If $Button[$SelID][1] Then
    $Button[$SelID][1] = False
    GUICtrlSetData($ID, 'Hide')
    For $i = 0 To $aPos[3]
    GUICtrlSetPos($Edit[$SelID], $aPos[0], $aPos[1] + $i, $aPos[2], $aPos[3])
    Next
    Else
    $Button[$SelID][1] = True
    GUICtrlSetData($ID, 'Show')
    For $i = 0 To $aPos[3]
    GUICtrlSetPos($Edit[$SelID], $aPos[0], $aPos[1] - $i, $aPos[2], $aPos[3])
    Next
    EndIf
    EndFunc

    [/autoit]

    [/poiler]

    2 Mal editiert, zuletzt von r1fLeX (7. Dezember 2008 um 22:07)

    • Offizieller Beitrag

    Sieht recht hübsch aus. Deine Buttons werden aber nicht richtig gesetzt. Wenn man beim 1. Start den Button drückt sollte sich eigentlich das Edit rausscrollen und nicht reinscrollen . Mußt du noch was mit der Buttonabfrage machen .

  • Das ist dann eine Aufgabe für euch :P.
    Gucke grad Tv und packe nebenbei meine Sachen für die Fortbildung morgen.

    • Offizieller Beitrag

    Boah ey. Super Job. Ich denke du wolltest das als Beispiel anbieten. Und dann soll man Fehler suchen ? Jezt mal aus dem Standpunkt eines Anfängers: Klasse ich habe ein Beispiel , warum funzt des nicht . :rock::rofl:

  • Ok , du hast Recht. Werde es nächstes Wochenende korrigieren. Bin wie schon gesagt ab morgen auf Fortbildung.

    • Offizieller Beitrag

    Was hälst Du denn von dieser Version:

    Spoiler anzeigen
    [autoit]


    #include<GUIConstantsEx.au3>
    Opt('GUIOnEventMode', 1)

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

    Global Const $WS_EX_COMPOSITED = 0x2000000
    Global $hGui = GUICreate('Ein - und Ausfahr Demo', 242, 199, 193, 125, Default, $WS_EX_COMPOSITED)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    Global $Edit[3]
    For $i = 0 To 2
    $Edit[$i] = GUICtrlCreateEdit('1', $i*80, 0, 69, 169)
    Next
    Global $Button[3][2]
    For $i = 0 To 2
    $Button[$i][0] = GUICtrlCreateButton('Hide', 2+$i*80, 174, 57, 19, 0)
    GUICtrlSetOnEvent(-1, '_ShowHide')
    $Button[$i][1] = False
    Next
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(20)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _ShowHide()
    Local $ID = @GUI_CtrlId
    Local $SelID = @GUI_CtrlId-$Button[0][0]
    Local $aPos = ControlGetPos($hGui, '', $Edit[$SelID])
    If $Button[$SelID][1] Then
    $Button[$SelID][1] = False
    GUICtrlSetData($ID, 'Hide')
    For $i = 0 To $aPos[3]
    GUICtrlSetPos($Edit[$SelID], $aPos[0], $aPos[1] + $i, $aPos[2], $aPos[3])
    Next
    Else
    $Button[$SelID][1] = True
    GUICtrlSetData($ID, 'Show')
    For $i = 0 To $aPos[3]
    GUICtrlSetPos($Edit[$SelID], $aPos[0], $aPos[1] - $i, $aPos[2], $aPos[3])
    Next
    EndIf
    EndFunc

    [/autoit]

    Mit Arrays und im OnEventMode finde ich das praktischer. :)

    • Offizieller Beitrag

    Super Teil Oscar. Gefällt mir , und was ganz wichtig ist es funzt . 8o:thumbup:

  • Oscar , gefällt mir sehr gut!
    Jedoch war es als Beispiel für "Anfänger" gedacht.
    Und dieser Code ist keineswegs anfängertauglich :D.
    Kann ihn aber trotzdem in den ersten Post miteinbringen.