Vous pouvez fermer / supprimer n'importe quelle fenêtre pop-up en utilisant la méthode PopUpManager.removePopUp() du PopUpManager. Cette méthode requiert seulement un paramètre: le popUp que vous voulez supprimer.
PopUpManager.removePopUp(_window);
Les fenêtres que vous pouvez ouvrir n'affichent pas toujours des boutons Fermer par défaut. Elle ne prennent pas non plus en charge l'évènement de fermeture quand le bouton Fermer est affiché. Pour une TitleWindow, vous pouvez afficher le bouton de fermeture en mettant la propriété showCloseButton à true.
Vous pouvez ensuite gérer la fermeture de la PopUp dans le handler qui gère la fermeture comme dans cet exemple:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.events.CloseEvent;
import mx.managers.PopUpManager;
import mx.controls.TextArea;
import mx.containers.TitleWindow;
private var _window:TitleWindow;
private function showWindow(event:MouseEvent):void{
var textArea:TextArea = new TextArea;
textArea.text = "Texte dans une TextArea qui va être ajouté à une PopUp utilisant TitleWindow";
textArea.height = 100;
_window = TitleWindow(PopUpManager.createPopUp(this, TitleWindow));
_window.addChild(textArea);
_window.showCloseButton = true;
_window.addEventListener(CloseEvent.CLOSE, closeHandler);
}
private function closeHandler(event:CloseEvent):void{
PopUpManager.removePopUp(_window);
}
]]>
</mx:Script>
<mx:Button label="Ouvrir une PopUp avec PopUpManager" click="showWindow(event)"/>
</mx:Application>
Flex Source Code Download: Télécharger le code source complet de l'application
This movie requires Flash Player 11
19 mai 2009
Bonjour,
Ne faut-il pas supprimer le listener sur la popup une fois dans la méthode closeHandler()?
19 mai 2009
Sisi, mais cet exemple explique juste comment ouvrir une nouvelle fenêtre. D'ailleurs, tu veras que si tu en ouvre deux, il y aura confusion au niveau de la fermeture car on prend à chaque fois la variable locale _window qui est modifiée quand on ouvre une autre popup.
Le prochain article permet de contourner cela:
http://www.flex-tutorial.fr/2009/01/14/flex-popup-savoir-si-une-popup-est-deja-ouvert-avec-la-propriete-ispopup/
Fabien