trayicon (gb.qt4)
Ce contrôle implémente une vue d’arborescence d’items textuels sélectionnables munis d'icônes.
Les items de l’arborescence sont indexés par une clé. Ils affichent une chaîne et un icône pour chaque item.
Ce contrôle possède un curseur interne utilisé pour accéder à ses items. Utilisez les méthodes
movefirst ?,
movenext ?,
moveto ?... pour déplacer le curseur interne, et la propriété
item ? pour avoir l’item vers lequel il pointe.
Cette classe implémente une barre d’icônes.
trayicon: Cette classe n'existe pas.
Une
trayicon répond typiquement à soit un évènement
:dblclick ? pour initier une action prédéfinie (par exemple pour restaurer une
Form minimisée) ou à l’évènement
:menu ? pour afficher un
Menu "popup". Mes observations montrent que la création d’un "popup" à la volée est pénible, et qu’il vaut mieux créer un
Menu "stub" (composant vide) dans votre
Form et définir la propriété
Enabled de ce menu à
FALSE et sa propriété
Visible à
FALSE. Vous pouvez alors ajouter et retirer les items aisément pour correspondre à l’état courant de l’application dans les options disponibles du menu "popup".
Vous pouvez aussi utiliser la propriété
Tooltip de la
trayicon pour afficher l’état de l’application quand un tel comportement est approprié pour votre projet particulier.
Vous créez un menu caché invisible dans votre formulaire principal appelé
TrayMenu dont l’ identifiant est aussi
TrayMenu. Vous donnez à votre contrôle barre d’icônes l’ identifiant
MyTrayIcon. Vous voulez créer un menu contextuel pour votre
trayicon. Dans cet exemple
TrayMenu et
MyTrayIcon doivent être dans le même formulaire
Form.
Dans le formulaire contenant
MyTrayIcon et
TrayMenu :
Public Sub MyTrayIcon_Menu()
TrayMenu.Popup()
End
A présent vous devriez avoir un gain de stabilité pour ce contrôle.
Dans mes tentatives d’utiliser ce contrôle j’ai eu le "KDE panel segfault "
(crash) à diverse reprises après un certain nombre de cycles edit/run d’un projet Gambas utilisant une barre d’icônes dans le formulaire de démarrage.
--
Brian Jack 2006.01.29 02:28 PST
Pouvez-vous être plus précis à propos de ce qui est pénible dans la création de menus popup?
--
Benoit Minisini 2006.01.29 22:59 CET
Si vous utilisez la
Form comme parent et créez le
Menu popup , vous devez maintenir une lourde comptabilité pour vous assurer que le menu n’est créé qu’une seule fois, sinon une barre de menu avec plusieurs copies du menu popup en résulte. Comme je ne crois pas qu’il y ait moyen de détruire les objets à ce moment, c’est aussi bien de faire un
Menu persistant à l’intérieur de la
Form dans
IDE Menu Editor puis de l’appeler à partir de l’évènement TrayIcon's
Menu.
--
Brian Jack 2006.02.02 09:49 PST