TrayCreateItem

  • Hallo Zusammen,

    ich möchte gerne mit einem Array beliebig viele Items ins Tray erstellen.
    Wie spreche ich die denn dann später an?
    bzw. wann weiß ich, wann welches Item geklickt wird?

    For $sKey in $oDict.Keys
    $ID = TrayCreateItem($sKey)
    Next

    So haben ja alle Items die gleiche controlID.

    Lieben Gruß und vielen Dank,
    Anna :party:

    Die Anna :*

    "Wo kämen wir hin, wenn jeder sagte wo kämen wir hin, und niemand ginge, um zu sehen, wohin wir kämen, wenn wir gingen..." :wacko:

    Einmal editiert, zuletzt von AnnaM (25. November 2012 um 18:38)

  • Hi,

    Spoiler anzeigen
    [autoit]


    Dim $cArray[6];Enthält die IDs der Controls; Verwende dein Array statt diesem in folgendem Code!

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

    Global $iMsg

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

    While 1
    $iMsg = TrayGetMsg()
    For $i = 0 To UBound($cArray, 1) - 1
    If $iMsg = $cArray[$i] Then
    MsgBox(0, "", "Item: " & $i)
    EndIf
    Next
    Sleep(10)
    WEnd

    [/autoit]
    Zitat von AnnaM

    So haben ja alle Items die gleiche controlID.


    Nein, sollte nicht der Fall sein.


    Hoffe das hiflt dir.
    Edit: Natürlich nur für Arrays!

    Gruß stay

    Einmal editiert, zuletzt von stayawayknight (25. November 2012 um 18:21)

    • Offizieller Beitrag

    In deinem Script sehe ich keine Array.

    Zeig mal mehr Code, habe keine Lust erst ein Dictionary zu erstellen und dann ein Beispiel aussenrum zu basteln.

    stayawayknight, so wie es aussieht werden die Trayelemente aus einem Dictionary erstellt, wenn es eine feste Länge hat,
    dann kann man auch das Array welches die TrayIDs enthällt fest erstellen.
    Anderenfalls muß man das Array nach Anzahl der Dictionary.Keys erstellen oder dynamisch mittels Redim.

  • so ähnlich hab ich das auch bei mir:

    [autoit]

    Opt("TrayMenuMode", 1) ; Default tray menu items (Script Paused/Exit) will not be shown.

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

    Global $aContext[7] = ["1","2","3","4","5","6","7"]
    Global $aContextI[7]
    For $i = 0 to UBound($aContext) -1
    $aContextI[$i] = TrayCreateItem($aContext[$i])
    Next

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

    While 1
    $nMsg = TrayGetMsg()
    For $i = 0 To UBound($aContextI) - 1
    If $nMsg = $aContextI[$i] Then
    msgbox(0,"",$i)
    EndIf
    Next
    WEnd

    [/autoit]
    • Offizieller Beitrag
    [autoit]

    Opt("TrayAutoPause", 0)
    Global $oDICT = ObjCreate('Scripting.Dictionary');Distionary wird erstellt

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

    For $i = 0 To Random(0, 10, 1); Dynamisches Dictionary erstellen
    $oDICT.Add($i, Random(10, 1, 1))
    Next

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

    Global $iDictCount = $oDICT.Count; Anzahl der Keys im Dictionary

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

    Global $aCtrlId[$iDictCount]; Array mit Dimansion der Keys erstellen
    $i = 0
    For $sKey In $oDICT.Keys
    $aCtrlId[$i] = TrayCreateItem($sKey)
    $i += 1
    Next

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

    While 1
    Local $Msg = TrayGetMsg()
    For $i = 0 To UBound($aCtrlId) - 1
    If $Msg = $aCtrlId[$i] Then
    MsgBox(0, "", "Item: " & $i)
    EndIf
    Next
    Sleep(10)
    WEnd

    [/autoit]


    Btw, stayawayknight

    [autoit]

    If TrayGetMsg() = $cArray[$i] Then

    [/autoit]

    wird niemals funktionieren. Du mußt erst die Message an eine Variable übergeben.

    [autoit]

    Local $Msg = TrayGetMsg()
    If $Msg = $aCtrlId[$i] Then

    [/autoit]
  • Hallihallo Zusammen,

    danke für die schnelle Antwort. :) Klappt bestens !!

    Raupi : Werde das nächste Mal mehr Code zaubern. Danke dir trotzdem!

    Die Anna :*

    "Wo kämen wir hin, wenn jeder sagte wo kämen wir hin, und niemand ginge, um zu sehen, wohin wir kämen, wenn wir gingen..." :wacko: