dúvida na utilização do popup[RESOLVIDO]

5 respostas
WesleyAvila

Bom dia

Minha dúvida é a seguinte:

Tenho o form principal da aplicação e um componente de login.
Ao iniciar a aplicação automaticamente o login (usando popup) do usuário é pedido.
Preciso que ao efetuar o login possa habilitar alguns botões que estão desabilitados na tela principal.

Eu queria receber um true do login e fazer as verificações no meu form principal e isto eu não estou conseguindo fazer.

Obrigado!

5 Respostas

andre.gil

Wesley,

Você já tentou criar um Event personalizado para sua PopUp, adicionar um listener e dar um dispatchEvent quando o Login estiver okay?

[]'s

WesleyAvila

Eu estou fazendo isso, mas tem alguma coisa errada:
Principal.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" paddingLeft="0" paddingRight="0" paddingBottom="0" creationComplete="init();">

<mx:Script>
	<![CDATA[
		import login.Login;
		import mx.managers.PopUpManager;
		import mx.collections.ArrayCollection; 
		import mx.events.MenuEvent;
		import mx.controls.Alert;
		import mx.rpc.events.FaultEvent;
		import mx.rpc.events.ResultEvent;
		
		[Bindable]
		private var frmLogin:Login = new Login();
		
		private function init():void{
			this.addEventListener('efetuarLogin', loginOk);
		}
		
		private function loginOk(e:Event):void{
			PopUpManager.removePopUp(frmLogin);
		}		
		
		private function TelaLogin():void{
			PopUpManager.addPopUp(frmLogin, this, true);
			PopUpManager.centerPopUp(frmLogin)		
		}
	]]>
</mx:Script>
    <mx:Button label="Entrar" id="btnEntrar" click="TelaLogin()" enabled="true"/>
</mx:Application>

Login.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="272" height="166" title="Identificação">
<mx:Script>
	<![CDATA[
		import flash.events.Event;
	
		import mx.controls.Alert;
		import mx.managers.PopUpManager;
	
		public function verificaLogin(e:Event):void{	
			if (edtCpf.text=="" && edtSenha.text==""){
				Alert.show("Preencha todos os campos!");
			}else if(edtCpf.text=="123" && edtSenha.text=="123"){
				dispatchEvent(new Event('efetuarLogin', true, true));
			}else{
				Alert.show("errou");
			}	
		}
	]]>
</mx:Script>
	<mx:Label x="10" y="10" text="Por favor, digite seu CPF e sua senha" width="232" textAlign="center" color="#FF0000" fontWeight="bold" fontSize="10"/>
	<mx:Label x="53" y="38" text="CPF:"/>
	<mx:TextInput x="82" y="36" id="edtCpf"/>
	<mx:Label x="39" y="68" text="Senha:"/>
	<mx:TextInput x="82" y="66" id="edtSenha" displayAsPassword="true"/>
	<mx:Button x="180" y="94" label="Enviar" id="btnLogin" click="verificaLogin(event);"/>
</mx:Panel>

Então… Quando eu clico no btnLogin no Login.mxml ele executa a função verificaLogin() e quando o usuário e senha são 123 ele dispara o evento dispatchEvent(new Event(‘efetuarLogin’, true, true));

Na principal.mxml tem a funcão init no create do application, dentro do init() tem o this.addEventListener(‘efetuarLogin’, loginOk); que deveria chamar a função loginOk e não está chamando.

Poderiam me ajudar?

andre.gil

Opa,

Como você tá adicionando o EventListener no this e disparando na sua Popup, ele não está conseguindo capturar. O ideal nesse caso seria adicionar o Listener na sua Popup. Tente trocar o this.addEventListener para frmLogin.addEventListener que deverá resolver.

Se não resolver, avise que dou uma olhada quando tiver com o Flex Builder aqui para testar.

[]'s

WesleyAvila

andre.gil
Funcionou!!!
Usando o this é pra quando o evento e disparado na mesma tela, num é isso?

Muito obrigado pela ajuda!
Abraços!!!

andre.gil

Opa, que bom que funcionou!

É isso mesmo, você adiciona o Event Listener no local onde você irá disparar o evento. :slight_smile:

[]s

Criado 17 de março de 2010
Ultima resposta 17 de mar. de 2010
Respostas 5
Participantes 2