A aplicação que estou desenvolvendo tem alguns módulos que por sua vez permitem abrir múltiplas janelas. Acontece que quando é preciso fazer um Alert, este aparece por baixo dos popups (TitleWindow) de modo que o alert ficando invisivel parcial ou totalmente. O problema ocorre mesmo com Alerts modais. Procurei uma solução pra isso e o consenso parece ser setar o child index do alert da seguinte maneira:
var thisAlert:Alert = Alert.show(mensagem, titulo, Alert.OK); thisAlert.parent.setChildIndex(thisAlert, thisAlert.parent.numChildren - 1); Esse é um codigo comum para fazer o "bringToFront" mas no meu caso nao surtiu o efeito esperado, isto é, o Alert continuava aparecendo por baixo do TitleWindow. Essa questão já vinha incomodando a um certo tempo, mas hoje por coincidencia estava olhando a classe do Chris Callendar (link abaixo) para tratamento de ErrorTips quando encontrei a funcao bringToFront dele. Adaptei o codigo para trabalhar com Alerts no lugar de ErrorTips e finalmente consegui fazer os Alerts aparecerem por cima das TitleWindows. O codigo é esse a seguir: //imports import mx.controls.Alert; import mx.core.FlexGlobals; //flex4 import flash.display.DisplayObject; import mx.core.IChildList; import mx.managers.SystemManager; //popup var thisAlert:Alert = Alert.show(mensagem, titulo, Alert.YES | Alert.NO, FlexGlobals.topLevelApplication.systemManager); bringToFront(thisAlert); //inspirado na funcao da classe ErrorTipManager de Chris Callendar: http://flexdevtips.blogspot.com/2009/08/always-showing-error-tips-validators.html public static function bringToFront(dispObj:Alert) : void { var parent:IChildList = (dispObj.parent as IChildList); if (parent is SystemManager) { parent = (parent as SystemManager).rawChildren; } var index:int = parent.getChildIndex(dispObj as DisplayObject); var children:int = parent.numChildren; if (index < (children - 1)) { parent.setChildIndex(dispObj as DisplayObject, children - 1); } } O ponto chave é tratar o SystemManager como um parent diferenciado. Dessa forma o child index é calculado corretamente e o efeito bringToFront ocorre conforme esperado. Usando uma subclasse de Alert para tratar os popups fica facil de encapsular o comportamento de bringToFront em toda a aplicação. Enfim, talvez haja uma maneira mais simples de fazer isso mas de toda maneira, esse codigo foi util pra mim e talvez possa ajudar alguem. PS: O codigo usa FlexGlobals.topLevelApplication (flex 4). Para o flex 3 deve-se usar Application.application. -- Claudio Luiz Ferreira -- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev