Buttons in Array definieren

  • Hey,

    in meinem Skript möchte ich 50*50 Buttons erzeugen.
    Das klappt auch ganz gut.
    Nur ich möchte die Button Variablen so anordnen:

    [autoit]

    $Button[$i][$h]=GUICtrlCreateButton(""....)

    [/autoit]

    Jedoch erhalte ich Fehlermeldungen, dass ich den Button so nicht erstellen kann.

    Hier mein Skript:

    Spoiler anzeigen
    [autoit]

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

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

    #Region Variablen
    Dim $Field[49][49]; Array mit 50x50 Feldern. (0 wird mitgezählt)
    For $i=0 to UBound($Field)-1 ;Füllen des Arrays
    For $h=0 to UBound($Field)-1
    $Field[$i][$h]=0 ;Jedes Feld wird auf 0 gesetzt (vom Wert her)
    Next
    Next
    $CountLeft = 5
    $CountTop = 5
    #Region Variablen

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 745, 765, -1, -1)
    $MenuDatei = GUICtrlCreateMenu("Datei")
    $MenuStart = GUICtrlCreateMenuItem("Start", $MenuDatei)
    $MenuEnde = GUICtrlCreateMenuItem("Ende", $MenuDatei)
    $MenuEinstellungen = GUICtrlCreateMenu("Einstellungen")
    ButtonCreate() ; Eigene Funktion die die Button erstellt (siehe unten)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func ButtonCreate()
    For $i=0 to UBound($Field)-1
    For $h=0 to UBound($Field)-1
    $Button[$i][$h] = GUICtrlCreateButton("", $CountLeft, $CountTop, 15, 15)
    $CountLeft = $CountLeft+15
    Next
    $CountTop = $CountTop+15
    $CountLeft = 5
    Next
    EndFunc

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

    Func ButtonCheck()
    For $i=0 to UBound($Field)-1
    For $h=0 to UBound($Field)-1
    If $Field[$i][$h]=1 Then
    GUICtrlSetBkColor($Button[$i][$h], 0xff0000)
    EndIf
    Next
    Next
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von PokerFace (23. November 2010 um 21:37)

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

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

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

    #Region Variablen
    Dim $Field[49][49]; Array mit 50x50 Feldern. (0 wird mitgezählt)
    For $i=0 to UBound($Field)-1 ;Füllen des Arrays
    For $h=0 to UBound($Field)-1
    $Field[$i][$h]=0 ;Jedes Feld wird auf 0 gesetzt (vom Wert her)
    Next
    Next
    $CountLeft = 5
    $CountTop = 5
    #Region Variablen

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 745, 765, -1, -1)
    $MenuDatei = GUICtrlCreateMenu("Datei")
    $MenuStart = GUICtrlCreateMenuItem("Start", $MenuDatei)
    $MenuEnde = GUICtrlCreateMenuItem("Ende", $MenuDatei)
    $MenuEinstellungen = GUICtrlCreateMenu("Einstellungen")
    ButtonCreate() ; Eigene Funktion die die Button erstellt (siehe unten)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func ButtonCreate()
    For $i=0 to UBound($Field)-1
    For $h=0 to UBound($Field)-1
    $Field[$i][$h] = GUICtrlCreateButton("", $CountLeft, $CountTop, 15, 15)
    $CountLeft = $CountLeft+15
    Next
    $CountTop = $CountTop+15
    $CountLeft = 5
    Next
    EndFunc

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

    Func ButtonCheck()
    For $i=0 to UBound($Field)-1
    For $h=0 to UBound($Field)-1
    If $Field[$i][$h]=1 Then
    GUICtrlSetBkColor($Field[$i][$h], 0xff0000)
    EndIf
    Next
    Next
    EndFunc

    [/autoit]
  • Hallo,

    ich bin durch zufall auf diesen beitrag gestoßen und hab das script ausprobiert, hat bei mir aber nciht funktioniert, da habe ich ein wenig daran rumgebastelt und nun funktioniert es bei mir.

    Spoiler anzeigen
    [autoit]

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

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

    #Region Variablen
    Dim $Field[49][49]; Array mit 50x50 Feldern. (0 wird mitgezählt)
    For $i=0 to UBound($Field)-1 ;Füllen des Arrays
    For $h=0 to UBound($Field)-1
    $Field[$i][$h]=0 ;Jedes Feld wird auf 0 gesetzt (vom Wert her)
    Next
    Next
    $CountLeft = 5
    $CountTop = 5
    #Region Variablen

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 745, 765, -1, -1)
    $MenuDatei = GUICtrlCreateMenu("Datei")
    $MenuStart = GUICtrlCreateMenuItem("Start", $MenuDatei)
    $MenuEnde = GUICtrlCreateMenuItem("Ende", $MenuDatei)
    $MenuEinstellungen = GUICtrlCreateMenu("Einstellungen")
    #EndRegion ### END Koda GUI section ###
    For $i=0 to UBound($Field)-1
    For $h=0 to UBound($Field)-1
    $Field[$i][$h] = GUICtrlCreateButton("", $CountLeft, $CountTop, 15, 15)
    $CountLeft = $CountLeft+15
    Next
    $CountTop = $CountTop+15
    $CountLeft = 5
    Next
    $msg = GUIGetMsg()
    GUISetState(@SW_SHOW)
    while 1
    $msg = GUIGetMsg()
    For $i=0 to UBound($Field)-1
    For $h=0 to UBound($Field)-1
    Select
    case $msg = $Field[$i][$h]
    GUICtrlSetBkColor($Field[$i][$h], 0xff0000)
    case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    Next
    Next
    WEnd

    [/autoit]

    mfg
    hauke96