2010-10-11 10 views
1

J'ai une liste d'objets contenant une icône, une étiquette et une info-bulle. Je veux montrer seulement l'icône et l'étiquette. Les info-bulles doivent être visibles sur la souris au-dessus d'un élément.Affichage des info-bulles de l'élément de liste dans flex

Y a-t-il un moyen d'y parvenir sans écrire mes propres fonctions de souris?

(S'il vous plaît notez que dataTip sont une chose différente car ils ne sont affichés que lorsque l'étiquette est coupée)

Répondre

1

La meilleure façon d'afficher les info-bulles sur les éléments de la List est de fournir dataTipField ou dataTipFunction propriété, mais comme vous semblez pour vouloir conserver le comportement par défaut du 'label', alors vous n'échapperez probablement pas à l'écriture de vos propres solutions.

MISE À JOUR: OK. Après avoir joué avec le code pendant un certain temps, je dois admettre que montrer ces conseils peut être un peu difficile, mais une fois que vous savez quoi faire, c'est en fait trivial. Ce que vous devez faire est de définir la propriété showDataTips à true et dataTipFunction à une fonction générant votre conseil ex.

function(item:Object):String{ 
    return item.tipField; 
} 

chose étrange est le fait ici que la mise en dataTipField bien à « tipField » ne fonctionnera pas de la même façon que ci-dessus fonction et autant que je veux savoir pourquoi, il reste un secret pour moi.

MISE À JOUR 2: En fait, ce comportement est pas bizarre du tout comme il est clairement mentionné dans la documentation showDataTips mais comme je vieillis et ne peut pas voir aussi bon que je te dois me pardonner ma déclaration précédente :)

+0

Merci d'essayer, mais dataTip ne sont affichés que si l'étiquette est tronquée alors que je veux montrer les infobulles toujours (mes étiquettes ne sont pas tronquées). – Ofir

+0

Mais pourquoi il ne peut pas fonctionner de la même manière qu'un 'DataGrid', qui, par défaut, ne montre que des astuces lorsque le texte est tronqué, est le vrai secret. – Opux

0

Je suis tombé sur essentiellement le même scénario ... eh bien il y a des différences mineures, j'utilise un Flex mx.controls.List et il y a un moteur de rendu, le rendu est une extension de checkbox, je Je voulais avoir un contrôle plus serré sur les outils-conseils afin que je puisse choisir d'afficher des informations auxiliaires par opposition au texte intégral (et seulement si tronqué). J'ai essayé de fouiller avec certaines choses en regardant la source de ToolTipManager mais en utilisant la méthode de registre interne ne fonctionnait pas, finalement j'ai fait essentiellement ce que vous avez dit et cela semble fonctionner sans problème. Donc, se demandant quel est le problème avec l'utilisation de vos propres gestionnaires d'événements, vous pouvez toujours utiliser les méthodes intégrées dans ToolTipManager pour afficher/cacher de sorte qu'il semble relativement propre. Code ci-dessous est de la même renderer:

private var myToolTip:IToolTip; 

public function FilterItemRenderer() { 
    addEventListener(MouseEvent.MOUSE_OVER, mouseOver_handler); 
    addEventListener(MouseEvent.MOUSE_OUT, mouseOut_handler); 
} 
private function mouseOver_handler(event:MouseEvent):void 
{ 
    //In my case using the data elements of the DP to carry the info for tooltips 
    if(data.hasOwnProperty("toolTip") && data.toolTip) 
     myToolTip = ToolTipManager.createToolTip(data.toolTip, event.stageX+5, event.stageY-5) 
} 
private function mouseOut_handler(event:MouseEvent):void 
{ 
    if(myToolTip) 
     ToolTipManager.destroyToolTip(myToolTip); 
    myToolTip=null; 
} 
override public function get toolTip():String 
{ 
    return null; 
} 

donc je suppose que ma réponse est non, je ne vois aucune façon de le faire en dehors de ce que vous suggérez, mais pourriez-vous préciser encore une fois ce que la question de c'est ?

Merci et bonne chance, Shaun

+0

Merci Shaun, j'espérais trouver une solution intégrée plutôt que d'écrire mon propre itemRenderer juste pour ça, car cela semble une fonctionnalité si triviale. Actuellement j'étends ListItemRenderer pour obtenir cette fonctionnalité mais j'espère que quelque chose viendra ... – Ofir