apache-flex 如何在禁用控件上显示工具提示?

busg9geu  于 2022-11-01  发布在  Apache
关注(0)|答案(5)|浏览(169)

我正在显示一个按钮列表,其中一些按钮可能被禁用。我需要在禁用的按钮上显示一个工具提示,并解释为什么它被禁用,但似乎我不能在不禁用工具提示的情况下禁用按钮。有简单的方法解决这个问题吗?

gywdnpxw

gywdnpxw1#

将Button Package 在一个组中,并将工具提示应用于该组。

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

有点丑,但很管用。

umuewwlo

umuewwlo2#

实现这一点的一种方法是重写已启用的getter和setter来完成您想要的操作。因此,在我的例子中,我仍然希望触发大多数鼠标事件,只是不触发click事件。

<?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>

由于现在触发鼠标事件,工具提示将再次工作。

mzaanser

mzaanser3#

<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来完成此操作,
我希望这对你有用
玩得很开心
安库尔·夏尔马

cotxawn7

cotxawn74#

对我来说,最好的选择是在元素周围和前面放一个void标签。然后,如果有必要,我将元素设置为disable,工具提示在标签中工作。如果没有,我将sent标签放在后面。它工作得很好。

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();
}
bejyjqdl

bejyjqdl5#

您将需要使用ToolTipManager类手动创建和销毁工具提示。
本文将为您提供完成此任务所需的所有信息:
http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf60d65-7ff6.html

相关问题