组件在表单上不可见
Posted
技术标签:
【中文标题】组件在表单上不可见【英文标题】:Component isn't visible on the form 【发布时间】:2011-10-17 09:38:45 【问题描述】:如果用户无权更改值,我制作了一个非常简单的组件来替换表单上隐藏的任何组件(例如组合框):
<?xml version="1.0" encoding="utf-8"?>
<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml"
visible="!_controlToReplace.visible"
includeInLayout="!_controlToReplace.includeInLayout">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
[Bindable]
private var _controlToReplace:UIComponent;
public function set controlToReplace(value:UIComponent):void
_controlToReplace=value;
]]>
</mx:Script>
</mx:Label>
通过在表单上添加标签可以轻松实现组件的相同功能:
<mx:Label text="objControl.text"
visible="!objControl.visible"
includeInLayout="!objControl.includeInLayout"/>
使用组件我可以做到这一点,我更喜欢:
<Components:ReadOnlyPlaceHolder controlToReplace="objControl"/>
但无论 objControl 是否可见,它都不会显示。你知道我可能会错过什么吗?
【问题讨论】:
我很困惑。你用 read-only 控件替换 label 吗?我知道这可能是为了保护您的代码而进行的简化,但这没有意义。另外,什么是 objControl? @[Sam DeHaan]很抱歉造成混乱。我的意思是组件提供的功能无论如何都可以通过标签轻松实现,即组件和标签是替代品。标签和组件都用自己替换另一个控件(例如组合框)。我现在将澄清这个问题。 【参考方案1】:我认为问题在于绑定没有更新标签上的属性。不要使用绑定,只需手动更新它们,例如:
public function set controlToReplace(value:UIComponent):void
_controlToReplace=value;
visible = !_controlToReplace.visible;
includeInLayout = !_controlToReplace.includeInLayout;
如果这不起作用,您必须向我们展示您的表单以及用于定位和显示您的 ReadOnlyPlaceHolder 的布局代码。
【讨论】:
以上是关于组件在表单上不可见的主要内容,如果未能解决你的问题,请参考以下文章