GUICtrlSetImage Problem(e)

  • Hallo,
    Ich bin noch rellativ neu in AutoIt und verstehe meinen Fehler nicht, bzw. wo mein Fehler ist.
    Das Script soll bissher einfach nur in einem Gui ein 10x10 großes BilderFeld erstellen und dann mit einer Funktion,
    die eingefügten Bilder in ein anderes Umändern.

    Btw. danke für Unterstützung.

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Author: Timinio

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

    Script Function:
    Test-Script um Bilder in einem Gui zu verändern.

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

    #ce ----------------------------------------------------------------------------

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

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

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

    $lap=GUICreate("Test",200,200,Default,Default,$WS_SYSMENU)
    $x=0
    $y=0
    Global $feldid[150]
    For $id=1 To 101
    If $x>180 Then
    $y=$y+20
    $x=0
    EndIf
    $id=(($y/20)*5)+($x/20)+1
    Dim $feldid[$id]=[GUICtrlCreatePic(@scriptdir&"\sys\grau.jpg",$x,$y,20,20)]
    $x=$x+20
    Next

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

    GUISetState()
    Stone_edit("rot",2,3)

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit
    WEnd

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

    Func Stone_edit($color,$x,$y)
    $id=($y*5)+$x+1
    $msg=GUICtrlSetImage($feldid[$id],@scriptdir&"\sys\"&$color&".jpg")
    MsgBox(0,"",$msg)
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von Timinio (10. Februar 2012 um 20:52)

  • Hallo und Willkommen ;)

    Zu deinem Problem.... welches Problem? ^^
    Was für einen Fehler kriegst du?

    Was mir jetzt aber direkt aufgefallen ist, ist die Zeile 25

    [autoit]

    Dim $feldid[$id]=[GUICtrlCreatePic(@scriptdir&"\sys\grau.jpg",$x,$y,20,20)]

    [/autoit]

    Wird nicht funktionieren, probiers mal hiermit

    [autoit]


    $feldid[$id]=GUICtrlCreatePic(@scriptdir&"\sys\grau.jpg",$x,$y,20,20)

    [/autoit]
  • Ich denke er möche so etwas erreichen:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Author: Timinio

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

    Script Function:
    Test-Script um Bilder in einem Gui zu verändern.

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

    #ce ----------------------------------------------------------------------------

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

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

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

    $lap = GUICreate("Test", 200, 200, Default, Default, $WS_SYSMENU)
    $x = 0
    $y = 0
    Global $feldid[150]
    For $id = 1 To 101
    If $x > 180 Then
    $y = $y + 20
    $x = 0
    EndIf
    ;$id = (($y / 20) * 5) + ($x / 20) + 1 ;diese Rechnung ist unnötig da sie als Ergebnis die Lauf-Varaible der Schleife errechnt, diese ist aber bekannt
    $feldid[$id] = GUICtrlCreatePic("c:\Programme\AutoIt3\Examples\GUI\msoobe.jpg", $x, $y, 20, 20)
    $x = $x + 20
    Next
    GUISetState()
    _ArrayDisplay($feldid)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $feldid[1] To $feldid[101]
    $id =$msg-$feldid[1] + 1
    Stone_edit($id)
    ;MsgBox(0, "Feld", $id & " = ContrlID: " & $feldid[$id])
    EndSwitch
    WEnd

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

    Func Stone_edit($id)
    $msg = GUICtrlSetImage($feldid[$id],"c:\Programme\AutoIt3\Examples\GUI\mslogo.jpg")
    ;MsgBox(0, "", $msg)
    EndFunc ;==>Stone_edit
    [autoit]

    [/autoit]

    [/autoit]

  • Danke für eure Antworten,

    TheLuBu Das Problem ist, dass ich das erstellte Bild mit der Funktion "GUICtrlSetImage" nicht ändern kann.
    Mit ändern meine ich von grau.jpg zu rot.jpg.

    Als Fehlermeldung kriege ich nichts, außer halt die Ausgabe von "GUICtrlSetImage" die 0 ist und somit das Bild nicht geändert hat. :(

    Danke mit, $feldid[$id]=GUICtrlCreatePic(@scriptdir&"\sys\grau.jpg",$x,$y,20,20) funktionierts einwandfrei! :)

    autoBert "$id = (($y / 20) * 5) + ($x / 20) + 1" Die Berechnung ist doch Notwendig um eine einzigartige Control-ID zu erstellen, sodass ich später darüber das Bild verändern kann, oder irre ich mich ?

  • Jein, ^^

    jedes Control braucht braucht eine eindeutige ID um es ansprechen zu können. Diese wird aber beim erstellen des Controls an deine Variable gebunden.
    Bei

    [autoit]

    $Variable = GUICtrlCreatePic(@scriptdir&"\sys\grau.jpg",$x,$y,20,20)

    [/autoit]

    wird die ID des Controls gespeichert, also kannst du mit

    [autoit]

    $msg=GUICtrlSetImage($Variable,@scriptdir&"\sys\"&$color&".jpg")

    [/autoit]

    darauf zugreifen. Es wird keine zusätzliche ID benötigt

  • autoBert "$id = (($y / 20) * 5) + ($x / 20) + 1" Die Berechnung ist doch Notwendig um eine einzigartige Control-ID zu erstellen, sodass ich später darüber das Bild verändern kann, oder irre ich mich ?


    Eine eindeutige ID ist natürlich notwendig, die Eindutigkeit ist aber durch die Varaible in der Fror.. Next gegeben.Im übrigen ist das Ergebnis deiner Berechung gleich dieser Variablen, also ist die Berechnug unnötig,

    mfg autoBert