2010-05-26 14 views
9

मैं बटनों की एक सूची प्रदर्शित कर रहा हूं, जिनमें से कुछ अक्षम हो सकते हैं। मुझे विकलांग बटनों पर एक टूलटिप दिखाने की आवश्यकता है, यह बताए गए कि यह अक्षम क्यों है, लेकिन ऐसा लगता है कि मैं टूलटिप को अक्षम किए बिना बटन को अक्षम नहीं कर सकता। क्या इसके चारों ओर एक आसान तरीका है?अक्षम नियंत्रण पर टूलटिप कैसे दिखाना है?

+0

मैं spark.components का उपयोग कर रहा हूं। बटन वर्ग – geo

+0

क्या आपने इसे हल किया? – zinovii

उत्तर

-1

मैन्युअल रूप से उपकरण युक्तियों को बनाने और नष्ट करने के लिए आपको ToolTipManager कक्षा का उपयोग करने की आवश्यकता होगी।

यह लेख आपको सभी जानकारी देना चाहिए आप यह पूरा करने की जरूरत है:
http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf60d65-7ff6.html

+0

मैंने अपने समाधान में ToolTipManager का उपयोग करने पर विचार किया लेकिन यह मुश्किल था क्योंकि स्पार्क बटन अक्षम होने पर माउस ईवेंट को प्रेषित नहीं करता है, इसलिए जब उपयोगकर्ता बटन पर होता है तो मुझे पता लगाने का एक और तरीका उपयोग करना होगा। मुझे मिला सबसे सरल समाधान बस अक्षम बटन के शीर्ष पर अतिरिक्त अदृश्य बटन बनाना था और उनके निर्मित टूलटिप व्यवहार का उपयोग करना था। आदर्श नहीं, मुझे पता है। – geo

+0

आप सही हैं, स्पष्ट रूप से यह दस्तावेज में यह बताते हुए स्पार्क बटन अक्षम होने पर माउस ईवेंट नहीं बढ़ाता है। क्या आप एक हेलो बटन का उपयोग वैकल्पिक रूप से कर सकते हैं? (जब तक कि आप कुछ फंकी स्किनिंग नहीं कर रहे हैं, मुझे लगता है) मैंने स्पार्क बटन के दस्तावेज के बारे में एडोब के साथ एक बग रिपोर्ट उठाई है। –

0
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 
    <mx:Script> 
     <![CDATA[ 
     import mx.managers.ToolTipManager; 
     import mx.controls.ToolTip; 
     private var tooltip:ToolTip; 
     private var p:Point; 

     private function whyDisable():void 
     { 

      //calculate the button position , so that roll over shows the tooltip 
      p=new Point(); 
      p=localToGlobal(new Point(btn.x,btn.y)); 
      if(btn.enabled==false) 
       tooltip = ToolTipManager.createToolTip('Button is disabled',p.x+(btn.width/2),p.y-20,'errorTipAbove') as ToolTip; 
      else 
       tooltip=ToolTipManager.createToolTip('Button is enabled',p.x+(btn.width/2),p.y-20,'errorTipAbove') as ToolTip; 
     } 
     ]]> 
    </mx:Script> 
    <mx:VBox height="100%" width="100%" horizontalAlign="center" verticalAlign="middle"> 
     <mx:Button id="btn" label="Show Tooltip" buttonDown="trace('ankur')" autoRepeat="true" enabled="true" rollOver="whyDisable();" rollOut="{ToolTipManager.destroyToolTip(tooltip);}"/> 
    </mx:VBox> 
</mx:Application> 

हाय, इस आवेदन विकलांग बटन पर काम करता है, मैं ToolTipManager इस्तेमाल किया यह करने के लिए,

मैं उम्मीद है कि इस काम करता है के लिए आप

एक gr8 समय

अंकुर शर्मा

+0

उदाहरण के लिए धन्यवाद, दुर्भाग्यवश मैं spark.components का उपयोग कर रहा हूं। बटन क्लास, जो माउस सेट करता है और सक्षम होने पर माउस चिल्ड्रन को गलत पर सेट किया जाता है। इसका मतलब है कि मैं रोलओवर घटनाओं का उपयोग नहीं कर सकता। – geo

15

समूह में बटन लपेटें, और इसके बजाय समूह को टूलटिप लागू करें।

<s:Group toolTip="My toolTip"> 
    <s:Button enabled="false"/> 
</s:Group> 

यह थोड़ा बदसूरत है, लेकिन यह काम करता है।

1

ऐसा करने का एक तरीका है सक्षम गेटर और सेटटर को जो भी आप चाहते हैं उसे ओवरराइड करना है। तो मेरे मामले में, मैं अभी भी अधिकांश माउस घटनाओं को आग लगाना चाहता था, बस क्लिक घटना नहीं।

<?xml version="1.0" encoding="utf-8"?> 
<s:Button buttonMode="true" click="handleClick(event)" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark"> 
    <fx:Script> 
     <![CDATA[ 
      public var data:Object; 
      private var _enabled:Boolean = true; 

      public override function get enabled():Boolean 
      { 
       return _enabled; 
      } 

      public override function set enabled(value:Boolean):void 
      { 
       _enabled = value; 
       invalidateDisplayList(); 
       dispatchEvent(new Event("enabledChanged")); 
       invalidateSkinState(); 
      } 

      protected function handleClick(event:MouseEvent):void 
      { 
       if (!_enabled) 
       { 
        event.stopPropagation(); 
       } 
      } 
     ]]> 
    </fx:Script> 
</s:Button> 

चूंकि माउस घटनाएं अब आग लगती हैं, टूलटिप्स फिर से काम करते हैं।

0

मेरे लिए सबसे अच्छा विकल्प तत्व के सामने और उसके सामने एक शून्य लेबल डालना था। फिर, यदि आवश्यक हो, तो मैंने तत्व को अक्षम करने के लिए सेट किया है और टूलटिप लेबल में काम करता है। यदि नहीं, तो मैंने लेबल को वापस भेज दिया। यह बहुत अच्छी तरह से काम करता है।

if (new MainListsAdmin(this.mainApp).temInvestimentoComAqueleTipo(t)) { 
      deletarGroupInto.setTooltip(new Tooltip("Há investimentos vinculados a Tipo de Investimento.\nDeleção bloqueada.")); 
      this.deletarButton.setDisable(true); 
}else{ 
     deletarGroupInto.toBack(); 
} 
संबंधित मुद्दे