GUIOnEventMode Schleife Problem

  • hey

    ich habe 50 buttons mit einer for-schleife erstellt:

    [autoit]

    $x = 14
    $y = 24
    For $i = 0 To 24
    $buttonsArray[$i] = GUICtrlCreateButton(" " & $i + 1 & " ", $x, $y, 25, 25, 0)
    $x += 25
    Next
    $x = 14
    $y = 54
    For $i = 25 To $iUbound - 1
    $buttonsArray[$i] = GUICtrlCreateButton(" " & $i + 1 & " ", $x, $y, 25, 25, 0)
    $x += 25
    Next

    [/autoit]

    und dann habe ich am ende des scripts in der abfrage-schleife sowas gemacht:

    [autoit]

    While 1
    $nMsg = GUIGetMsg()
    For $a = 0 To $iUbound -1
    If $nMsg = $buttonsArray[$a] Then
    _open()
    EndIf
    Next
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _quit()
    Case ... und so weiter
    EndSwitch
    WEnd

    [/autoit]

    und in der funktion open() dann eben abgefragt welcher button geklickt wurde usw.

    das funktioniert auch alles super

    jetzt zu dem problem:
    ich habe die guioneventmode aktiviert (weil ich _ClipBoard_SetViewer() benutzten will)

    [autoit]

    Opt('GUIOnEventMode', 1)

    [/autoit]

    und dann eben alles umgeändert, da die abfrage-schleife ja nicht mehr benutzt werden kann. sowas hab ich dann gemacht:

    [autoit]

    GUICtrlSetOnEvent($menu_about, '_about')
    GUISetOnEvent($GUI_EVENT_CLOSE, '_quit')
    ...

    [/autoit]

    das funktioniert auch alles

    nur weiß ich jetzt nicht wie ich die events für die 50 buttons mit einer schleife setze


    sorry, dass ich das so umständlich erklärt habe... hoffe es hat jemand halbswegs verstanden :x

    :wacko:

    Einmal editiert, zuletzt von pete_gzome (14. Mai 2010 um 13:52)

  • Hallo pete_gzome,

    du kannst doch den Buttons direkt nach der Erstellung mit

    [autoit]

    GUICtrlSetOnEvent(-1, '_ButtonClick')

    [/autoit]

    allen die selbe func zuweisen. In der func wertest du dann mit Hilfe von @GUI_CtrlId welcher Button gedrückt wurde (falls unterschiedliche Aktionen notwendig sind) und reagierst entsprechend darauf,

    mfg (Auto)Bert

  • hey, danke. das funktioniert schon mal.

    ich habe jetzt mal versucht @GUI_CtrlId zu benutzen.
    in der funktion _open() (die für die buttons) habe ich mal ne message box gemacht:

    [autoit]

    msgbox(0,"",@GUI_CtrlId)

    [/autoit]

    da kommt immer die id + 9 raus

    also zum beispiel wenn ich button 1 klicke, gibt er 10 aus. wenn ich button 10 klicke, gibt er 19 aus

    weiß jemand woran das liegt?

  • Hallo

    mach es z.B. so:

    [autoit]

    Switch @GUI_CtrlId
    case $buttonsArray[0]
    MsgBox(0,"Button 1","wurde geklickt")
    case $buttonsArray[1]
    MsgBox(0,"Button 2","wurde geklickt")
    EndSwitch

    [/autoit]

    mfg (Auto)Bert