Dynamisches TrayMenu automatisch füllen

  • Hallo zusammen,

    ich möchte ein dynamisches TrayMenu erstellen.
    Es sollen Menus und MenuItems geschrieben werden.
    Die Daten werden in einer SQLite-Datenbank gesichert und sind dort auch verwaltbar. Sprich ich kann dort eigene Kategorien (Menus) und Links (MenuItems) erfassen.

    Ich bin auch soweit, dass die Menus und die Items aus der Datenbank geholt und Einträge geschrieben werden:

    [autoit]


    Func configLaden()

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

    Local $hQueryKategorie, $aRowKategorie
    _SQLite_Query($hDB, "SELECT * FROM Kategorien;", $hQueryKategorie)
    While _SQLite_FetchData($hQueryKategorie, $aRowKategorie) = $SQLITE_OK
    TrayCreateMenu($aRowKategorie[0])
    WEnd
    _SQLite_QueryFinalize($hQueryKategorie)
    Local $hQueryLink, $aRowLink
    _SQLite_Query($hDB, "SELECT * FROM Links;", $hQueryLink)
    While _SQLite_FetchData($hQueryLink, $aRowLink) = $SQLITE_OK
    TrayCreateItem($aRowLink[0])
    WEnd
    _SQLite_QueryFinalize($hQueryKategorie)
    _SQLite_QueryFinalize($hQueryLink)

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

    EndFunc ;==>configLaden

    [/autoit]

    Frage 1:
    Neben den Links (MenuItems) werden in der DB auch die Kategorien (Menus) zugewiesen, so dass ich bei der Anlage erfassen kann, dass ein bestimmter Links in einer bestimmten Kategorie angezeigt werden soll.
    Wie bekomme ich es nun hin, dass ich die Links inkl. Kategorieangabe in die entsprechende Kategorie geschrieben bekomme.

    Frage 2:
    Wenn ich dann irgendwie hinbekomme, dass das Traymenu korrekt erstellt wird, wie kann ich dann aus diesem generierten Menü auf einen Mausklick reagieren. Also woher weiß ich, auf welchen Link geklickt wurde, wenn ich das selbst generieren lasse.

    Kann man das in irgendeiner Form durchzählen lassen und sich dann merken?

    Ich hoffe ich habe mit halbwegs verständlich ausgedrückt ;)

    Vielen Dank für Eure Hilfe schon im Voraus!

    Einmal editiert, zuletzt von commander (12. August 2013 um 15:30)

  • Du könntest statt _SQLite_FetchData _SQLite_GetTable oder _SQLite_GetTable2d benutzen, dann hast du alle Einträge in einem Array, in das du dann auch die von TrayCreateItem zurückgegebenen IDs speichern kannst. Diese kannst du dann auch mit TrayGetMsg benutzen.
    Soweit zu Frage 2. Wenn du alle Daten ordentlich abgespeichert hast, sollte es aber auch kein Problem mehr sein die IDs der Kategorien zu finden (auszulesen) um ein Item in dieser Kategorie zu erstellen.

  • Danke James.

    Ich hatte es ursprünglich mit GetTable2d versucht, aber nicht hinbekommen.
    Werde es nochmals probieren und Rückmeldung geben.