Tray ItemID

  • Hallo!

    Normalerweise bekommt man die über TrayGetMsg() mitgeteilt welches TrayItem geklickt wurde.


    Nun ich nutze nun keine Switch oder Select abfrage sondern Funktionen
    Aber wenn mann Funktionen nutzt Funktioniert TrayGetMsg ja nicht.

    Gibt es denn nun trotzdem eine Möglichkeit zu bestimmen welches TrayItem geklickt wurde? Trotz Funktionen.

    MfG
    Aiden

  • Also es dreht sich um Folgendes:

    Ich habe ein TrayMenu welches ich variabel erstelle

    Sprich ich lese Gruppen aus einer Datenbank aus.

    Und Wenn ich eine Gruppe anklicke soll eine Funktion gestartet werden die alle Benutzer in dieser Gruppe ausgibt.

    Meine Tray Funktion

    Spoiler anzeigen
    [autoit]

    Func _Tray()
    ReDim $trayitems[1]
    $cSql = _MySQLConnect($dUser, $dPass,$iDB, $iIP)
    $qGroups = _Query($cSql, "SELECT gname FROM gruppen")
    TraySetClick(8)
    $tLog = TrayCreateItem("Logliste")
    TrayItemSetOnEvent($tLog, '_showLL')
    $tGroups = TrayCreateMenu('Gruppen')
    With $qGroups
    While Not .EOF
    TrayCreateItem(.Fields("gname").value , $tGroups)
    .MoveNext
    WEnd
    EndWith
    TrayCreateItem('', $tGroups)
    TrayItemSetOnEvent(TrayCreateItem('Einstellungen', $tGroups), '_showGR')
    $texit = TrayCreateItem('Beenden')
    TrayItemSetOnEvent($texit, '_close')
    TraySetOnEvent(-7, "_showMA")
    _MySQLEnd($cSql)
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von Aiden (19. September 2007 um 07:15)

    • Offizieller Beitrag

    Hi,
    die ID bekommst du doch bei der Erstellung des Trayitems zurück.
    Dann kannst du diese doch in ein Array packen um der Dynamik gerecht zu werden und dann eine entsprechende Funktion zuweisen.
    Probier mal so:

    [autoit]

    Dim $arTrayItem[1]
    ;...
    ;...
    ReDim $arTrayItem[UBound($arTrayItem)+1]
    $arTrayItem[UBound($arTrayItem)-1] = TrayCreateItem(.Fields("gname").value , $tGroups)
    GUICtrlSetOnEvent(-1, "Funktionsname")

    [/autoit]

    Edit:
    Vielleicht ist es sogar günstiger ein 2D-Array zu erstellen, sodass du die Parameter für die ID-spezifische Funktion mit im Array ablegen kannst.

  • Meine Frage ist nun aber wie die Funktion _select() erkennt wie der Name des Items ist welches gedrückt wurde. ^^


    [autoit]

    Dim $arTrayItem[1]
    ;...
    ;...
    ReDim $arTrayItem[UBound($arTrayItem)+1]
    $arTrayItem[UBound($arTrayItem)-1] = TrayCreateItem(.Fields("gname").value , $tGroups)
    TrayItemSetOnEvent(-1, "_select")

    [/autoit]


    Oder übersehe ich etwas?

    //Edit:

    Also Gemeint ist die _select() Funktion achher so

    [autoit]


    Func _select()
    $var = TrayItemGetText(ItemDasAngeklicktWurde)
    _Ouary($csql, "Select * From vgruppe Where gruppe='" & $var & "';")
    ;...
    ;...
    EndFunc

    [/autoit]

    Mfg Aiden =)

    3 Mal editiert, zuletzt von Aiden (20. September 2007 um 10:16)

    • Offizieller Beitrag

    Hi,
    alle ID's bekommen dieselbe Funktion zugewiesen, die dann nach der ID selektiert separaten Code zuweist:

    [autoit]

    Dim $arTrayItem[1]
    ;...
    ;...
    ReDim $arTrayItem[UBound($arTrayItem)+1]
    $arTrayItem[UBound($arTrayItem)-1] = TrayCreateItem(.Fields("gname").value , $tGroups)
    TrayItemSetOnEvent(-1, "_select")

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

    Func _select()
    Switch @TRAY_ID
    Case $arTrayItem[1]
    ;...
    Case $arTrayItem[2]
    ;...
    Case $arTrayItem[3]
    ;...
    EndSwitch
    EndFunc

    [/autoit]
  • Mhm da haben wir doch schon was ich suche

    [autoit]

    Func _select()
    $var = TrayItemGetText(@Tray_ID)
    _Ouary($csql, "Select * From vgruppe Where gruppe='" & $var & "';")
    ;...
    ;...
    EndFunc

    [/autoit]


    Vielen Vielen Dank =) :keks:

    Einmal editiert, zuletzt von Aiden (20. September 2007 um 10:50)