Frage zu Bitand (Variablen zusammenfassen)

  • Ich glaube er will mit den Cursortasten seine Markierung bewegen können. Außerdem soll glaub ich immer der Button oben drüber und untendrunter eine andere Farbe habe, aber weis nicht ob ich dass 100% genau verstanden hab

    • Offizieller Beitrag

    Dann vielleicht so:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    ;;;;;;;;;;;;;;;;;;;; Haupt-Menü Variablen
    Opt("GUICoordMode", 1)
    Global $last_focus = -1
    Global $HauptGUI = GUICreate("HTPC", 400, 800, -1, -1, BitOR($WS_POPUP, $WS_BORDER, $WS_CLIPSIBLINGS))
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    ;;;;;;;;;;;;;;;;;;;;;;Buttons;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Dim $L = 100 ; Buttonleft
    Dim $W = 200 ; Buttonwidth
    Dim $H = 60; Buttonheight
    Dim $F = GUISetFont(18, 800, 0, "MS Sans Serif") ;Schrift der Buttons

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

    Global $TV = GUICtrlCreateButton("TV", $L, 8, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $DVD = GUICtrlCreateButton("DVD", $L, 88, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Aufnahmen = GUICtrlCreateButton("Aufnahmen", $L, 168, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Internet = GUICtrlCreateButton("Internet", $L, 248, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Musik = GUICtrlCreateButton("Musik/Bilder", $L, 328, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Bluray = GUICtrlCreateButton("Bluray", $L, 408, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Einstellungen = GUICtrlCreateButton("Einstellungen", $L, 488, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Beenden = GUICtrlCreateButton("Beenden", $L, 568, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Exit = GUICtrlCreateButton("exit", $L, 648, $W, $H, -1, $WS_EX_STATICEDGE)

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

    GUISetState(@SW_SHOW, $HauptGUI)
    GUISetState(@SW_MAXIMIZE, $HauptGUI)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_Close
    Exit
    Case $TV
    _HauptReset($TV)
    Case $DVD
    _HauptReset($DVD)
    Case $Aufnahmen
    _HauptReset($Aufnahmen)
    Case $Internet
    _HauptReset($Internet)
    Case $Musik
    _HauptReset($Musik)
    Case $Bluray
    _HauptReset($Bluray)
    Case $Einstellungen ;Aufruf Einstellungen
    _HauptReset($Einstellungen)
    Case $Beenden ;Aufruf Beenden
    _HauptReset($Beenden)
    Case $Exit
    Exit
    EndSwitch
    _FokusReset(ControlGetFocus('',''))
    WEnd

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

    Func _FokusReset($Button)
    If $Button <> $last_focus Then
    $last_focus = $Button
    Local $FarbeNorm = 0x000080, $FarbeMark = 0x6189F1, $FarbeTeil = 0x1139b1
    Local $aID = StringSplit('tv,dvd,aufnahmen,internet,musik,bluray,einstellungen,beenden,exit', ',')
    Local $aButton = StringSplit('button1,button2,button3,button4,button5,button6,button7,button8,button9', ',')
    For $i = 1 To $aID[0]
    GUICtrlSetBkColor(Eval($aID[$i]), $FarbeNorm)
    Next
    For $i = 1 To $aID[0]
    If $aButton[$i] = $Button Then
    If $i > 1 Then GUICtrlSetBkColor(Eval($aID[$i-1]), $FarbeTeil)
    GUICtrlSetBkColor(Eval($aID[$i]), $FarbeMark)
    If $i < $aID[0] Then GUICtrlSetBkColor(Eval($aID[$i+1]), $FarbeTeil)
    EndIf
    Next
    EndIf
    EndFunc

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

    Func _HauptReset($ID)
    Local $FarbeNorm = 0x000080, $FarbeMark = 0xFFFF44, $FarbeTeil = 0x1139b1
    Local $aID = StringSplit('tv,dvd,aufnahmen,internet,musik,bluray,einstellungen,beenden,exit', ',')
    For $i = 1 To $aID[0]
    GUICtrlSetBkColor(Eval($aID[$i]), $FarbeNorm)
    Next
    For $i = 1 To $aID[0]
    If Eval($aID[$i]) = $ID Then
    If $i > 1 Then GUICtrlSetBkColor(Eval($aID[$i-1]), $FarbeTeil)
    GUICtrlSetBkColor(Eval($aID[$i]), $FarbeMark)
    If $i < $aID[0] Then GUICtrlSetBkColor(Eval($aID[$i+1]), $FarbeTeil)
    EndIf
    Next
    EndFunc

    [/autoit]
  • Ich glaube er will mit den Cursortasten seine Markierung bewegen können. Außerdem soll glaub ich immer der Button oben drüber und untendrunter eine andere Farbe habe, aber weis nicht ob ich dass 100% genau verstanden hab

    genau.
    Der Button drüber und drunter soll einfach nur die Ursprungsfarbe wiederbekommen (was dann zur folge hat das nur der im Fokus anders gefärbt ist).

    das skript von oscar funktioniert auch bzw. ändert noch die umliegenden Buttons wie von anno2008 angesprochen.
    und ändert sogar noch die button farbe onklick?
    Ist auf jeden Fall eine schönere Lösung als meine :thumbup:
    Was dagegen wenn ich die Funktionen so einfach abschreibe und anpasse?

    Den Hovereffekt kenn ich schon. Hier im Forum hat mal jemand eine vergleichbare und einfachere Lösung gepostet (Beispiel mit 2 buttons):

    Spoiler anzeigen
    [autoit]


    include <GUIConstants.au3>

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

    Opt("GUICoordMode", 1)
    $HauptGUI = GUICreate("HTPC", 400, 600, 1000, 0)
    GUISetBkColor(0x000000)
    $Button1 = GUICtrlCreateButton("TV", 100, 8, 200, 60, 0)
    GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
    GUICtrlSetBkColor(-1, 0x008080)
    $Button2 = GUICtrlCreateButton("DVD", 100, 88, 200, 60, 0)
    GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
    GUICtrlSetBkColor(-1, 0x008080)

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

    GUISetState(@SW_SHOW)
    $Hover_Old = ""

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

    While 1
    $Cursor = GUIGetCursorInfo($HauptGUI)
    If $Cursor[4] <> $Hover_Old Then
    Normal($Hover_Old) ; reset the previous control
    Hover($Cursor[4]) ; set the new control hovered
    $Hover_Old = $Cursor[4]
    EndIf
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Endselect
    Wend

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

    Func Hover($ID)
    Switch $ID
    Case $Button1
    GUICtrlSetBkColor($ID, 0xFFFF00)
    Case $Button2
    GUICtrlSetBkColor($ID, 0xFFFF00)
    Endswitch
    Endfunc

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

    Func Normal($ID)
    Switch $ID
    Case $Button1
    GUICtrlSetBkColor($ID, 0x008080)
    Case $Button2
    GUICtrlSetBkColor($ID, 0x008080)
    Endswitch
    Endfunc

    [/autoit]

    Daran angelehnt war auch mein Ansatz. Hab aber auf den Fokus reagiert und nicht auf den Mauszeiger.

  • Alles klar.

    Die Funktion ersetzt in meinem Skript ca. 300 Zeilen :D

    Nochmals vielen dank! :thumbup:

    edit \ hm mir fällt da was auf:
    Manchmal flackern die buttons wenn ich den Fokus über die Cursortasten ändere. Kann aber leider keine Regelmäßigkeit feststellen ?(
    Muss ich jetzt nochmal mit meiner Version gegenchecken.

    Einmal editiert, zuletzt von nuts (12. Oktober 2008 um 23:49)

  • Hm ich hab jetzt die Funktion mal so angepasst wie ich es haben wollte:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    ;;;;;;;;;;;;;;;;;;;; Haupt-Menü Variablen
    Opt("GUICoordMode", 1)
    Global $last_focus = -1
    Global $Farbe = 0x00BFFF
    Global $HauptGUI = GUICreate("HTPC", 400, 800, -1, -1, BitOR($WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    GUISetBkColor(000000)

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

    ;;;;;;;;;;;;;;;;;;;;;;Buttons;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Dim $L = 100 ; Buttonleft
    Dim $W = 200 ; Buttonwidth
    Dim $H = 60; Buttonheight
    Dim $C = 4169E1 ;Hintergrundfarbe Button
    Dim $F = GUISetFont( 18, 800, 0, "MS Sans Serif") ;Schrift der Buttons

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

    Global $TV = GUICtrlCreateButton("TV", $L, 8, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $DVD = GUICtrlCreateButton("DVD", $L, 88, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Aufnahmen = GUICtrlCreateButton("Aufnahmen", $L, 168, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Internet = GUICtrlCreateButton("Internet", $L, 248, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Musik = GUICtrlCreateButton("Musik/Bilder", $L, 328, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Bluray = GUICtrlCreateButton("Bluray", $L, 408, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Einstellungen = GUICtrlCreateButton("Einstellungen", $L, 488, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Beenden = GUICtrlCreateButton("Beenden", $L, 568, $W, $H, -1, $WS_EX_STATICEDGE)
    Global $Exit = GUICtrlCreateButton("exit", $L, 648, $W, $H, -1, $WS_EX_STATICEDGE)

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

    GUISetState(@SW_SHOW, $HauptGUI)
    GUISetState(@SW_MAXIMIZE, $HauptGUI)
    While 1
    $msg = GUIGetMsg()
    switch $msg
    case $GUI_EVENT_Close
    Exit
    Case $TV
    Case $DVD
    Case $Aufnahmen
    Case $Musik
    Case $Bluray
    Case $Einstellungen ;Aufruf Einstellungen
    Case $Beenden ;Aufruf Beenden
    Case $Exit
    exit
    EndSwitch

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

    _HauptReset(ControlGetFocus('',''))
    WEnd

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

    Func _HauptReset($Button) ;Grundfunktion von Oscar http://www.autoit.de
    If $Button <> $last_focus Then
    $last_focus = $Button
    Local $Farbe = 0x1E90FF, $Fokusfarbe = 0x00BFFF
    Local $aID = StringSplit('tv,dvd,aufnahmen,internet,musik,bluray,einstellungen,beenden,exit', ',')
    Local $aButton = StringSplit('button1,button2,button3,button4,button5,button6,button7,button8,button9', ',')
    For $i = 1 To $aID[0]
    GUICtrlSetBkColor(Eval($aID[$i]), $Farbe)
    Next
    For $i = 1 To $aID[0]
    If $aButton[$i] = $Button Then
    GUICtrlSetBkColor(Eval($aID[$i]), $Fokusfarbe)
    EndIf
    Next
    EndIf
    EndFunc

    [/autoit]

    Das Problem mit den flackernden Buttons bleibt aber leider :( (mit scharzen Hintergrund wie im Beispiel sieht mans ganz gut)
    Nach meinen Tests liegt das an der Resetfunktion. Ist wohl zu aufwendig alle Buttons gleichzeitig zurückzusetzen?
    Bin mir aber auch nicht sicher, ob es mit dem jeweiligen System und den Komponenten bzw. den Treibern zusammenhängt. Daher würde ich mich über ein paar Tester freuen.

    Ich verwende:
    amd x2 3800 ee
    onboard graka auf 690G basis
    WinXp inkl. sp2

    edit\ um das Flackern noch etwas zu beschreiben:
    Beim Bewegen der Markierung zeigt sich z.b. ein Strich in der Hintergrundfarbe bei den nicht aktiven Buttons.

  • Ebenfalls ein flackern bei mir

    P4 @ 2.8Ghz
    1GB RAM
    onboard grafikkarte unbekannt(arbeitsrechner)
    WinXp sp2

    • Offizieller Beitrag

    So flackert es weniger:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    ;;;;;;;;;;;;;;;;;;;; Haupt-Menü Variablen
    Opt("GUICoordMode", 1)
    Global $last_focus = -1
    Global $Farbe = 0x00BFFF
    Global $HauptGUI = GUICreate("HTPC", 400, 800, -1, -1, BitOR($WS_POPUP, $WS_BORDER, $WS_CLIPSIBLINGS))
    GUISetBkColor(000000)

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

    ;;;;;;;;;;;;;;;;;;;;;;Buttons;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Dim $L = 100 ; Buttonleft
    Dim $W = 200 ; Buttonwidth
    Dim $H = 60; Buttonheight
    Dim $C = 4169E1 ;Hintergrundfarbe Button
    Dim $F = GUISetFont(18, 800, 0, "MS Sans Serif") ;Schrift der Buttons

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

    Global $TV = GUICtrlCreateButton("TV", $L, 8, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x00BFFF)
    Global $DVD = GUICtrlCreateButton("DVD", $L, 88, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Aufnahmen = GUICtrlCreateButton("Aufnahmen", $L, 168, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Internet = GUICtrlCreateButton("Internet", $L, 248, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Musik = GUICtrlCreateButton("Musik/Bilder", $L, 328, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Bluray = GUICtrlCreateButton("Bluray", $L, 408, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Einstellungen = GUICtrlCreateButton("Einstellungen", $L, 488, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Beenden = GUICtrlCreateButton("Beenden", $L, 568, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Exit = GUICtrlCreateButton("exit", $L, 648, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)

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

    GUISetState(@SW_SHOW, $HauptGUI)
    GUISetState(@SW_MAXIMIZE, $HauptGUI)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_Close
    Exit
    Case $TV
    Case $DVD
    Case $Aufnahmen
    Case $Musik
    Case $Bluray
    Case $Einstellungen ;Aufruf Einstellungen
    Case $Beenden ;Aufruf Beenden
    Case $Exit
    Exit
    EndSwitch
    _HauptReset(ControlGetFocus('', ''))
    WEnd

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

    Func _HauptReset($Button) ;Grundfunktion von Oscar http://www.autoit.de
    If $Button <> $last_focus Then
    Local $aID = StringSplit('tv,dvd,aufnahmen,internet,musik,bluray,einstellungen,beenden,exit', ',')
    Local $aButton = StringSplit('button1,button2,button3,button4,button5,button6,button7,button8,button9', ',')
    Local $Farbe = 0x4169E1, $Fokusfarbe = 0x00BFFF
    GUICtrlSetBkColor(Eval($aID[StringTrimLeft($last_focus, 6)]), $Farbe)
    GUICtrlSetBkColor(Eval($aID[StringTrimLeft($Button, 6)]), $Fokusfarbe)
    $last_focus = $Button
    EndIf
    EndFunc ;==>_HauptReset

    [/autoit]
    • Offizieller Beitrag

    Diese Version ist noch etwas besser:

    Spoiler anzeigen
    [autoit]


    #include<WinAPI.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    ;;;;;;;;;;;;;;;;;;;; Haupt-Menü Variablen
    Opt("GUICoordMode", 1)
    Global $Farbe = 0x00BFFF
    Global $HauptGUI = GUICreate("HTPC", 400, 800, -1, -1, BitOR($WS_POPUP, $WS_BORDER, $WS_CLIPSIBLINGS))
    GUISetBkColor(000000)

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

    ;;;;;;;;;;;;;;;;;;;;;;Buttons;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Dim $L = 100 ; Buttonleft
    Dim $W = 200 ; Buttonwidth
    Dim $H = 60; Buttonheight
    Dim $C = 4169E1 ;Hintergrundfarbe Button
    Dim $F = GUISetFont(18, 800, 0, "MS Sans Serif") ;Schrift der Buttons

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

    Global $TV = GUICtrlCreateButton("TV", $L, 8, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x00BFFF)
    Global $DVD = GUICtrlCreateButton("DVD", $L, 88, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Aufnahmen = GUICtrlCreateButton("Aufnahmen", $L, 168, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Internet = GUICtrlCreateButton("Internet", $L, 248, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Musik = GUICtrlCreateButton("Musik/Bilder", $L, 328, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Bluray = GUICtrlCreateButton("Bluray", $L, 408, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Einstellungen = GUICtrlCreateButton("Einstellungen", $L, 488, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Beenden = GUICtrlCreateButton("Beenden", $L, 568, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)
    Global $Exit = GUICtrlCreateButton("exit", $L, 648, $W, $H, -1, $WS_EX_STATICEDGE)
    GUICtrlSetBkColor(-1, 0x4169E1)

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

    GUISetState(@SW_SHOW, $HauptGUI)
    GUISetState(@SW_MAXIMIZE, $HauptGUI)

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

    Global $last_focus = GUICtrlGetHandle($TV)
    GUIRegisterMsg($WM_USER, "MY_WM_USER")

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_Close
    Exit
    Case $TV
    Case $DVD
    Case $Aufnahmen
    Case $Musik
    Case $Bluray
    Case $Einstellungen ;Aufruf Einstellungen
    Case $Beenden ;Aufruf Beenden
    Case $Exit
    Exit
    EndSwitch
    WEnd

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

    Func MY_WM_USER($hWnd, $msg, $wParam, $lParam)
    Local $Button = WinGetHandle(_WinAPI_GetFocus())
    Local $Farbe = 0x4169E1, $Fokusfarbe = 0x00BFFF
    GUICtrlSetBkColor(_WinAPI_GetDlgCtrlID($last_focus), $Farbe)
    GUICtrlSetBkColor(_WinAPI_GetDlgCtrlID($Button), $Fokusfarbe)
    $last_focus = $Button
    EndFunc ;==>_HauptReset

    [/autoit]
  • Hm jap - fast kein flackern mehr zu sehen.

    Leider kann ich der letzten nichtmehr folgen ;(
    Dabei wird der Button schon am anfang eingefärbt und die Funktion ändert den Button im Fokus und setzt den zuletzt im Fokus gewesenen Button zurück auf die Defaultfarbe?
    Darum flackerts höchstens ab und zu noch am "last_fokus" oder am "fokus" Button?

    Einmal editiert, zuletzt von nuts (15. Oktober 2008 um 00:19)

    • Offizieller Beitrag

    Ja, mit GUIRegisterMsg wird eine Funktion (MY_WM_USER) registriert, die ausgeführt wird, wenn ein User-Ereignis eintritt (Up-/Down-Taste gedrückt).

    In der Funktion (MY_WM_USER) wird dann mit WinGetHandle(_WinAPI_GetFocus()) das Handle zu dem Button geholt, der gerade den Focus besitzt.
    Der Befehl _WinAPI_GetDlgCtrlID wandelt dann das Handle in die GUI-ID um, damit GUICtrlSetBKColor funktioniert. Der Rest ist, wie schon von Dir vermutet.

    Das Flackern tritt also nur noch (wenn überhaupt) beim gerade aktiven und/oder am zuletzt aktiven Button auf. Wobei ich nicht sagen kann, warum das so ist. Es tritt ja auch nicht jedesmal auf, sondern nur gelegentlich. :S