2009-11-24 60 views
1

刀尖我需要知道如何在目前我使用下面的代码显示的ComboBox itemRollOver事件当前项目作为工具提示,显示当前项目在组合框为itemRollOver

private var tip:ToolTip 
private function ItemRollOver(event:ListEvent):void 
{   
    var currComboBox:ComboBox = event.currentTarget as ComboBox; 
    var tipInfo:String = currComboBox.dataProvider[event.rowIndex].label; 
    tip = ToolTipManager.createToolTip(tipInfo,this.mouseX,this.mouseY) as ToolTip; 
} 

private function ItemRollOut(event:Event):void 
{   
    ToolTipManager.destroyToolTip(tip);    
} 


<mx:ComboBox id="cbLblStyle" fontFamily="Arial" dataProvider="{styleCollection}" 
    selectedItem="{labels.styleName}" itemRollOver="ItemRollOver(event)" 
    itemRollOut="ItemRollOut(event)" click="ItemRollOut1(event)" 
    close="cbLblStyle_changeEvt(event)" fontSize="12" x="12" y="240" 
    width="188"/> 

但有一些问题,当我点击item或itemRollOver时,更快的工具提示不会被销毁一段时间。

有没有其他方法可以做到这一点?

在此先感谢

+0

时是U计划学会如何正确地格式化代码,而问问题? – Amarghosh 2009-11-24 10:06:49

回答

2

使用自定义itemRenderer

<mx:ComboBox> 
    <mx:dataProvider> 
     <mx:Array> 
      <mx:String>ASD</mx:String> 
      <mx:String>QWE</mx:String> 
      <mx:String>ZXC</mx:String> 
      <mx:String>123</mx:String> 
     </mx:Array> 
    </mx:dataProvider> 
    <mx:itemRenderer> 
     <mx:Component> 
      <mx:TextInput text="{data}" toolTip="{data}"/> 
     </mx:Component> 
    </mx:itemRenderer> 
</mx:ComboBox> 

项目渲染:

<!-- write this in CustomRenderer.mxml --> 
<mx:VBox backgroundColor="#ffff00"> 
    <mx:Label text="This is my custom renderer"/> 
    <mx:TextInput text="{data}" toolTip="{data}"/> 
</mx:VBox> 

<!--- 
/** 
* now you can use `CustomRenderer` as item renderer in any class 
* using the following syntax: 
* */ 
//your main application class 
--> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" 
    backgroundColor="#ff0000"> 
    <mx:ComboBox id="cb1" itemRenderer="CustomRenderer" dataProvider="{dp1}"/> 
    <mx:ComboBox id="cb2" itemRenderer="CustomRenderer" dataProvider="{dp2}"/> 
    <mx:ComboBox id="cb3" itemRenderer="CustomRenderer" dataProvider="{dp3}"/> 
    <mx:Script> 
    <![CDATA[ 
     private var dp1:ArrayCollection = new ArrayCollection(["asd", "fgh", "lkj"]); 
     private var dp2:ArrayCollection = new ArrayCollection(["qwe", "rty", "poi"]); 
     private var dp3:ArrayCollection = new ArrayCollection(["123", "456", "789"]); 
    ]]> 
    </mx:Script> 
</mx:Application> 
+0

谢谢Amarghosh它的工作......我们可以调用作为一种方法来实现itemRenderer ..因为我有6个组合框相同的数据提供者..如果有可能我会打电话作为一个方法为所有6组合框..其他我需要为所有组合框添加itemRenderer代码。 – vineth 2009-11-24 11:18:41

+0

将您的项目渲染器声明为单独的类并将其全名(包括包名称)添加到组合框标记'''的项目渲染器属性' – Amarghosh 2009-11-24 11:25:38

+0

如何声明项目渲染器作为一个单独的类? – vineth 2009-11-24 11:32:23

0

其实答案1将完美地工作,但提示将只出现如果在鼠标指针下面有组合框的项目的文本。意思是如果鼠标指针是悬停在组合框项目上的任何东西,但是如果该项目的文本不在鼠标指针下面,则工具提示不会被显示。

因此,我们将不得不在itemRollOver,itemRollOut,focusOut等上定义一些函数来显示/删除自定义工具提示(如使用工具提示弹出框的vbox等)。显示在下拉菜单的工具提示仅适用于截断串行

0

最简单的方法:

<mx:ComboBox> 
    <mx:itemRenderer> 
     <mx:Component> 
      <mx:Label truncateToFit="true"/> 
     </mx:Component> 
    </mx:itemRenderer> 
</mx:ComboBox> 
相关问题