Problem beim Afragen von For erstellten Variablen / ID's / Elementen

  • heiho

    Ich bin ma wieder an nem "kleinen" projekt dran :D is bis jetz auch zimlich cool geworden.
    Doch stehe ich vor nem Problem :S
    Ich erstelle via

    [autoit]


    Global $Picleft[31] = [15,35,55,75,95,115,135,155,175,15,35,55,75,95,115,135,155,175,15,35,55,75,95,115,135,155,175,15,35,55,75] ;Ich weiss geht auch anderst :D
    Global $Pictop[31] = [20,20,20,20,20,20,20,20,20,40,40,40,40,40,40,40,40,40,60,60,60,60,60,60,60,60,60,80,80,80,80] ;Dass geht auch anderst :D
    Global $pic[31] = ['1','23','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31']
    ;~ Global $PicName[31] = [Die 31 namen der smileys]
    For $i = 0 To 31 ;(Original ist es mit UBound($var)-1 welches die grösse 31 hat)
    $Pic[$i] = GuiCtrlCreatePic(@ScriptDir & '\Smileys\' & $Picname[$i],$Picleft[$i],$Pictop[$i],20,20)
    Next

    [/autoit]

    Nun möchte ich nicht

    [autoit]


    While 1
    $nMsg = GUIGetMsg($hGui)
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case 31
    _Pic('31')
    Case 32
    _Pic('32')
    ;usw bis 62
    EndSwitch
    WEnd

    [/autoit]


    machen...
    Da meine GUI vorher noch Speziefisch abfragt wieviele CPU Core's vorhanden sind und dementsprechend auch neue ID's hinzukommen von 1 - 8.... wass dazu führen würde, dass sämmtliche ID's sich wieder verschieben und das erste Smiley nichtmehr die ID 31 sondern evt 36 o. 39 hat.

    Func _Pic()
    [autoit]


    Func _Pic($nr)
    ;$nr wird zuvor mit ner For durchgegangen um $nr vor ClipPut($nr) neu zu Deklarieren, "Lediglich die passenden syntaxe zu den Smiley's"
    ClipGet($nr)
    EndFunc

    [/autoit]

    bei Checkboxen weiss ich Dank Oscar seit gut nehm Jahr wie man das anstellen könnte

    Oscar bsp
    [autoit]


    For $i = 0 To 4
    If BitAND(GUICtrlRead($ahCheckbox[$i]), $GUI_CHECKED) Then Call($aFunktions[$i])
    Next

    [/autoit]


    Leider weiss ich nicht wie ich dass so umsetze wie ich mir das vorstelle :S
    Hoffe mir kann jmd Helfen :D


    #seit etwas nachsichtig, hab die Nacht durchgemacht, war etwas vertieft in das "Preojekt" ^^ und aufeinmal wars Morgen X(

    Greez

    Einmal editiert, zuletzt von Skilkor (25. Januar 2013 um 12:26)

  • Hallo Skilkor,

    teste dieses Skript:

    Spoiler anzeigen
    [autoit]

    ; *** Start added by AutoIt3Wrapper ***
    #include <GUIConstantsEx.au3>
    ; *** End added by AutoIt3Wrapper ***
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    Global $Picleft[31] = [15, 35, 55, 75, 95, 115, 135, 155, 175, 15, 35, 55, 75, 95, 115, 135, 155, 175, 15, 35, 55, 75, 95, 115, 135, 155, 175, 15, 35, 55, 75] ;Ich weiss geht auch anderst :D
    Global $Pictop[31] = [20, 20, 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, 40, 40, 60, 60, 60, 60, 60, 60, 60, 60, 60, 80, 80, 80, 80] ;Dass geht auch anderst :D
    Global $pic[31] = ['1', '23', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31']
    ;~ Global $PicName[31] = [Die 31 namen der smileys]
    $hGui = GUICreate('Smilies')
    for $i=0 to Random(2,30,1)
    GUICtrlCreateLabel($i,15+Mod($i,10)*20,20 + Int($i/10)*20)
    Next
    For $i = 0 To 30 ;(Original ist es mit UBound($var)-1 welches die grösse 31 hat)
    ;$Pic[$i] = GuiCtrlCreatePic(@ScriptDir & '\Smileys\' & $Picname[$i],$Picleft[$i],$Pictop[$i],20,20)
    $pic[$i] = GUICtrlCreateButton($i, $Picleft[$i], $Pictop[$i]+100, 20, 20)
    Next
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg() ;du solltest dir die Hilfe hierzu anschauen
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $pic[0] To $pic[30]
    _Pic($nMsg - $pic[0])
    EndSwitch
    WEnd

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

    Func _Pic($iID)
    MsgBox(0, "", "Button " & $iID & " wurde gelickt")
    EndFunc ;==>_Pic

    [/autoit]

    und du wirst erkennen, dass egal wieviele Labels zuvor erstellt wurden immer die richtige Zahl ausgegeben wird.

    mfg autoBert