0

我正在开发一个包含大量字段验证的应用程序。验证效果很好,我 1000000% 确定验证消息弹出窗口出现得更早。现在我做了很多工作和重构。我改变的一件事是我打开弹出窗口/对话框的方式。为了使这些以整个应用程序而不是打开组件为中心,我重构了打开对话框的方式。我使用警报的来源作为此基础,但由于我遇到其他问题(焦点管理器等)而对其进行了相当多的扩展(我只是提到这一点,因为我假设我丢失的弹出窗口与此有关)。

这是负责在我的应用程序中打开弹出窗口的代码:

    public function show(realParent:Sprite,
                     displayParent:Sprite = null,
                     closeHandler:Function = null,
                     moduleFactory:IFlexModuleFactory = null):Dialog {

    // Get the parent ...
    // If none is set, use the top-level-application.
    if (!displayParent) {
        var sm:ISystemManager = ISystemManager(FlexGlobals.topLevelApplication.systemManager);
        // no types so no dependencies
        var mp:Object = sm.getImplementation("mx.managers.IMarshallPlanSystemManager");
        if (mp && mp.useSWFBridge())
            displayParent = Sprite(sm.getSandboxRoot());
        else
            displayParent = Sprite(FlexGlobals.topLevelApplication);
    }

    // Register for close-events, making sure the pop-up is closed.
    if (closeHandler != null) {
        this.addEventListener(CloseEvent.CLOSE, closeHandler);
    }

    // Setting a module factory allows the correct embedded font to be found.
    if (moduleFactory) {
        this.moduleFactory = moduleFactory;
    } else if (realParent is IFlexModule) {
        this.moduleFactory = IFlexModule(realParent).moduleFactory;
    } else {
        if (realParent is IFlexModuleFactory) {
            this.moduleFactory = IFlexModuleFactory(realParent);
        } else {
            this.moduleFactory = FlexGlobals.topLevelApplication.moduleFactory;
        }

        // also set document if parent isn't a UIComponent
        if (!parent is UIComponent) {
            this.document = FlexGlobals.topLevelApplication.document;
        }
    }

    // Make the dialog center itself relative to the parent.
    PopUpManager.addPopUp(this, displayParent, true);
    PopUpManager.centerPopUp(this);

    return this;
}

什么可能导致验证弹出窗口不再出现?我应该去哪里看?

克里斯

4

1 回答 1

0

好的……所以我又自己想通了。不过,我可能会因为花了这么长时间才找到它而把头撞在墙上。

如果我使用 Spart 表单,FormItems 和表单本身可以定义错误文本区域以输出错误消息。因此,一旦 FormItem 拥有一个 ID 为“errorTextDisplay”的皮肤部件,错误消息就会出现在那里。我现在期待如果没有这样的部分,将使用旧的通知......不。

在对 FormItem 的代码和它的皮肤进行了大约 2-3 小时的处理之后,我注意到“contentGroup”通过将 showErrorTip 设置为 false 明确定义了一个属性来抑制错误工具提示。只需从皮肤中删除“errorTextDisplay”并将 showErrorTip 更改为 true 即可使我的弹出窗口看起来很好:-)

希望这篇文章可以帮助有同样问题的人。

于 2012-09-29T13:08:32.820 回答