Warum blinken meinen Button ?

  • Hey,
    ich habe ein paar radiobutton und möchte, wenn ein button geklickt ist, sollen andere versteckt werden.

    AdlibRegister("lala", 500)
    Func lala()
    If GUICtrlRead($Radio5) = 1 Then


    GUICtrlSetState($Radio14, $GUI_HIDE)
    GUICtrlSetState($Radio15, $GUI_HIDE)
    GUICtrlSetState($Radio16, $GUI_HIDE)
    GUICtrlSetState($Radio17, $GUI_HIDE)
    Else
    GUICtrlSetState($Radio14, $GUI_SHOW)
    GUICtrlSetState($Radio15, $GUI_SHOW)
    GUICtrlSetState($Radio16, $GUI_SHOW)
    GUICtrlSetState($Radio17, $GUI_SHOW)
    EndIf
    EndFunc ;==>lala

    das funktioniert auch ganz gut, sobald ich $Radio5 klicke, werden die anderen button ausgeblendet.

    jetzt zum problem:
    wenn ich dann einen anderen button klicke, z.b. $Radio6, dann erscheinen die button $Radio14-17 wieder. allerdings "blinken" diese die ganze zeit.
    wisst ihr woran das liegt, bzw. wie man das "aufblinken" umgehen kann ?

    vielen dank

  • Hi,

    wenn ich dann einen anderen button klicke, z.b. $Radio6, dann erscheinen die button $Radio14-17 wieder. allerdings "blinken" diese die ganze zeit.
    wisst ihr woran das liegt, bzw. wie man das "aufblinken" umgehen kann ?

    Ich weiß, woran das blinken liegt, denn das hast du in deinem Script so programmiert!
    Jede halbe Sekunde wird die lala()-Funktion aufgerufen, und dort steht im ELSE-Zweig eindeutig, dass die Buttons blinken sollen...

    Um das zu ändern würde ich ggf. ein ELSEIF verwenden, ich weiß aber nicht wann du die Radiobuttons 14 bis 17 aktivieren willst...
    //EDIT ich würde die Abfrage per select/case abwickeln, und dann auch eine Hilfsvariable fürs setzen bzw. rücksetzen verwenden, damit das "blinken" aufhört!

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (24. April 2016 um 17:42)

  • danke für die schnelle antwort,
    bevor ich jetzt alle radiobutton einzeln eingeben muss welche abgefragt wird, frag ich lieber vorher.. was meinst du mit "hilfsvariable setzen" ? kannste mir da nen kurzes beispiel für geben ?

    ich würd das jetzt so machen:
    Case $lala
    If GUICtrlRead($Radio5) = 1 Then
    GUICtrlSetState($Radio14, $GUI_HIDE)
    Endif

    If GUICtrlRead($Radio5) = 1 Then
    GUICtrlSetState($Radio15, $GUI_HIDE)
    Endif


    usw.

    das muss ich allerdings sehr oft machen, gibts da eine möglichkeit das zuvereinfachen ?

    4 Mal editiert, zuletzt von Lanealine (24. April 2016 um 18:30)

  • Erkläre doch einfach was du vor hast und stelle ein lauffähiges Skript ein, es über Adlibreister zu machen ist imho nicht nötig und einer der Gründe für deine Blinklichter.

  • so soll das ganze aussehen.
    wenn ich jetzt z.b. radio 3 klicke, dann soll er radio 10 und 17 ausblenden. wenn ich jetzt allerdings radio 5 anklicke, dann soll er radio 10 und 17 wieder einblenden und dafür dann 12 und 19 ausblenden.

  • Also so, falls ich richtig schlussgefolgert habe:

  • cool, genau das habe ich gesucht :) vielen dank für die hilfe.

    finde cool, wie du die Radio´s erstellt hast.
    geht das eigentlich auch wenn man zahlen und buchstaben in die radios schreiben möchte ? z.b. 1, 2, 3, a, b, c ?

    ich habe gerade versucht einen multiarray zu erstellen, aber ich bekomme da einen fehler.
    Global $aTest[6][2] = [[1, 2, 3, "a", "b", "c"], [1, 2, 3, "a", "b", "c"]]
    : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    Global $aTest[6][2] = [[1, 2, 3, "a", "b", "c"], [1, 2, 3, "a", "b", "c"]]
    Global $aTest[6][2] = [[1, 2, ^ ERROR
    _ArrayDisplay($aTest)

    kannst du sehen, warum ich einen fehler bei dem array bekomme ?

  • $aTest[2][6]
    Da kommt man nach einigen Sekunden probieren selbst drauf...

  • @Andy, manchmal kann es so einfach sein ;) danke

    bevor die andere frage untergeht zu dem script von @autoBert:

    Code
    Global $idRadios[7][3]
    _ArrayDisplay($idRadios)
    $Form1_1 = GUICreate("Form1", 583, 716, 192, 124)
    GUIStartGroup()
    for $i= 0 to 6
    	$idRadios[$i][0] = GUICtrlCreateRadio($i+1, 24, 100+$i*40, 40, 40, BitOR($GUI_SS_DEFAULT_RADIO, $BS_PUSHLIKE))
    Next


    ist es möglich, mehrere Radio´s mit dem "for..to.."-befehl zu erstellen, wenn buchstaben UND zahlen in dem "namen" von dem radio enthalten sind ?
    z.b. die ersten drei heißen: 1,2,3,a,b,c

    • Offizieller Beitrag

    ist es möglich, mehrere Radio´s mit dem "for..to.."-befehl zu erstellen, wenn buchstaben UND zahlen in dem "namen" von dem radio enthalten sind ?
    z.b. die ersten drei heißen: 1,2,3,a,b,c

    Wenn die Namen keiner Logik folgen, was eine automatische Generierung ausschließt:
    Du kannst entweder das $idRadios[7][3] von 3 auf 4 Spalten erweitern und in der 4.ten Spalte die Namen vorab eintragen um sie dann beim Erstellen zu nutzen.
    Bevorzugen würde ich jedoch ein separates Array für die Namen, läßt sich schneller erstellen:

    AutoIt
    Local $sNamen = 'Name1,Name2,Name3,Name4,Name5,Name6,Name7'
    Local $aNamen = StringSplit($sNamen, ',', 2)

    Jetzt kannst du in deiner Schleife das $aNamen mit dem selben Index benutzen und daraus die Namen verwenden.

  • Hier mal mein erweitertes Skript, bei dem alle Buttons den Namen aus einem Array beziehen:

    Durch das Hinzufügen des OK-Buttons bin ich darauf gestoßen, daß versteckte Radios geCHECKed sein können, deshalb vor dem Verstecken ein manuelles unCHECKen eingefügt.

    2 Mal editiert, zuletzt von autoBert (25. April 2016 um 13:47)