Flex Sistema Imobiliário - Detalhes do Código Proprietà del sistema Flex - Dettagli del codice


A pedido do José Carlos Fonseca, aqui ficam algumas explicações e detalhes de partes de código usadas no meu sistema imobiliário, assim ajudo-o e posso ajudar mais gente interessada. Su richiesta di Jose Carlos Fonseca, qui ci sono alcune spiegazioni e dettagli di parti del mio sistema di codice utilizzato nel settore immobiliare, contribuendo così a voi e mi può aiutare un maggior numero di persone interessate.

P: 1.Na primeira página surge uma imagem “loading” com efeito como fazes? D: 1.Na prima pagina una foto emerge "carico" come fare?

R: 1. A: 1. O efeito loading é conseguido atravéz da substituição do “loader” normal do flex por uma imagem, podes ver aqui http://www.onflex.org/ted/2006/07/flex-2-preloaders-swf-png-gif-examples.php onde encontras gif, png, swf e exemplos com código fonte. L'effetto di carico è realizzato attraverso la sostituzione il "loader" normale flex per una foto, potete vedere qui http://www.onflex.org/ted/2006/07/flex-2-preloaders-swf-png-gif- examples.php dove potete trovare gif, png, swf ed esempi di codice sorgente. Basta copiares para a pasta da tua aplicação e no <mx:Application …> colocares preloader=”preload.CustomPreloader”. Basta copiare la cartella della vostra applicazione e il <mx:Application …> colocares preloader = "preload.CustomPreloader". Eu fiz umas pequenas implementações baseadas nesse exemplo, mas se se usar assim funciona na mesma. Ho fatto alcune piccole implementazioni basate su questo esempio, ma se funziona bene se si utilizza lo stesso.

P:2.Pagina de login: efeito de erro, “checking login” ea barra azul D: 2.Pagina accesso: effetto di errore, "il controllo di accesso" e la barra blu

R: 2.A barra azul é uma progressBar: A: 2 barra blu è un ProgressBar:

1: < mx:ProgressBar visible =”false” x =”112″ y =”175″ 1: <mx: ProgressBar visibile = "false" x = "112" y = "175"

2: labelPlacement =”left” label =” “ width =”187″ 2: labelPlacement = "sinistra" label = "" width = "187"

3: indeterminate =”true” showEffect =”{Fade}” hideEffect =”{Fade}” 3: Indeterminato = "true" showEffect = "Fade ()" hideEffect = "Fade ()"

4: id =”progressStatus” /> 4: id = "progressStatus" />

que é activada (progressStatus.visible=true;) quando inicias o pedido para verificar o login no remoteObject (send) e desactivada quando recebes a resposta do remoteObject (result). che viene attivato (progressStatus.visible = true;) quando la richiesta iniziale di controllare il log in remoteObject (inviare) e quando si scendere la risposta del remoteObject (risultato). (progressStatus.visible=false;) (progressStatus.visible = false;)

quando recebe o resultado (negativo, o user e pass não condizem) faz o seguinte: quando si ricevono i risultati (negativi, l'utente e pass non corrispondono) è la seguente:

blurRed.target=panelLogin; blurRed.target = panelLogin;

blurRed.play(); blurRed.play ();

onde o panelLogin é o nosso panel de login eo blurRed é o seguinte efeito : dove il panelLogin è il nostro pannello di login e offuscata effetto è il seguente:

1: < mx:Glow id =”blurRed” duration =”700″ 1: <mx: Glow id = "offuscata" durata = "700"

2: alphaFrom =”1.0″ alphaTo =”0.0″ 2: alphaFrom = "1.0" alphaTo = "0.0"

3: blurXFrom =”0.0″ blurXTo =”20.0″ 3: blurXFrom = "0.0" blurXTo = "20.0"

4: blurYFrom =”0.0″ blurYTo =”20.0″ 4: blurYFrom = "0.0" blurYTo = "20.0"

5: color =”0×990000″ /> 5: color = "0 × 990000" />

Quanto ao checking login é o mesmo sistema que em cima, activar ou desactivar a progressStatus já que o Flex ainda não implementa o remoteObject com um event progress. Per quanto riguarda il controllo di accesso è lo stesso sistema di cui sopra, attivare o disattivare la progressStatus come il Flex continua a non attuare il remoteObject con un evento progressi.

P:3.Pagina principal: efeito nos botões no lado esquerdo D: 3.Pagina Merito: effetto sui pulsanti sul lato sinistro

R: Quanto aos botões do lado esquerdo, o efeito passa pelo mesmo do erro do painel login, os efeitos são: R: Per quanto riguarda i pulsanti sul lato sinistro, l'effetto di errore attraverso lo stesso pannello di accesso, gli effetti sono:

1: < mx:Glow id =”blurBlueIn” duration =”700″ 1: <mx: Glow id = "blurBlueIn" durata = "700"

2: alphaFrom =”1.0″ alphaTo =”0.0″ 2: alphaFrom = "1.0" alphaTo = "0.0"

3: blurXFrom =”0.0″ blurXTo =”20.0″ 3: blurXFrom = "0.0" blurXTo = "20.0"

4: blurYFrom =”0.0″ blurYTo =”20.0″ 4: blurYFrom = "0.0" blurYTo = "20.0"

5: color =”0×900aeef” /> 5: color = "0 × 900aeef" />

6: < mx:Glow id =”blurBlueOut” duration =”700″ 6: <mx: Glow id = "blurBlueOut" durata = "700"

7: alphaFrom =”0.0″ alphaTo =”1.0″ 7: alphaFrom = "0.0" alphaTo = "1.0"

8: blurXFrom =”20.0″ blurXTo =”0.0″ 8: blurXFrom = "20.0" blurXTo = "0.0"

9: blurYFrom =”20.0″ blurYTo =”0.0″ 9: blurYFrom = "20.0" blurYTo = "0.0"

10: color =”0×00aeef” /> 10: color = "0 × 00aeef" />

e no botão basta chama-los nos events mouseOver mouseOut: e il pulsante appena chiamato sul mouseover eventi mouseOut:

1: < mx:Button width =”85″ height =”73″ label =”button ADD” id =”add” 1: <MX: pulsante width = "85" height = "73" label = "pulsante di AGGIUNGERE" id = "aggiungere"

2: icon =”@Embed(source=’imgs/Home_add.png’)” x =”10″ y =”91″ 2: icona = "Incorpora @ (fonte = 'immagine / Home_add.png') x =" 10 "y =" 91 "

3: fillColors =”[#000000,#000000]“ fillAlphas =”0″ borderColor =”#525151″ 3: fillColors = "[# 000000, # 000000]" fillAlphas = "0" borderColor = "# 525151"

4: color =”#FDFBFB” themeColor =”#535C75″ textRollOverColor =”#2667B0″ 4: color = "# FDFBFB" themeColor = "# 535C75" textRollOverColor = "# 2667B0"

5: useHandCursor =”true” mouseOver =”{buttonOver(add)}” 5: useHandCursor = "true" mouseover = "(buttonOver (aggiungere))"

6: mouseOut =”{buttonOut(add)}” click =”{changeTo(’bsf1′)}” 6: mouseOut = "(buttonOut (aggiungere))" fare clic = "(changeTo ( 'bsf1'))"

7: buttonMode =”true” /> 7: buttonMode = "true" />

onde tens: a função buttonOver(id_do_botão) e buttonOut(id_do_botão): dove andare: il ruolo buttonOver (id_do_botão) e buttonOut (id_do_botão):

1: private function buttonOver(a:Button): void { 1: privato funzione buttonOver (uno: Button): void (

2: blurBlueOut.target=a; 2: blurBlueOut.target = a;

3: blurBlueOut.play(); 3: blurBlueOut.play ();

4: } 4:)

5: private function buttonOut(a:Button): void { 5: privato funzione buttonOut (uno: Button): void (

6: blurBlueIn.target=a; 6: blurBlueIn.target = a;

7: blurBlueIn.play(); 7: blurBlueIn.play ();

8: } 8:)

e tens os teus efeitos feitos e hai fatto il tuo scopo : P

P:4.Como adicionas uma foto na BD? D: 4.Como aggiungere una foto in BD?

R: A foto é adicionada através do php via amfphp, no Flex apenas são seleccionadas as fotos e enviadas via post para um script upload.php que trata do envio para o servidor, e devolve as localizações das fotos que ficam guardadas num array, quando termina de enviar todas as fotos, é chamada uma função do remoteObject que guarda os caminhos das fotos na base de dados (optei por usar caminhos relativos em vez de colocar a foto directamente na base de dados, ja que as fotos podem ser de grande tamanho o que ia encher a base de dados). R: L'immagine viene inserita attraverso il php tramite AMFPHP in Flex solo le foto vengono selezionati e inviati tramite posta a uno script che si occupa della upload.php inviato al server, e restituisce la posizione delle foto che sono state immagazzinate in un array, dove finisce per inviare tutte le immagini, è chiamato una funzione di guardia remoteObject che i percorsi delle foto nel database (ho scelto di usare i percorsi relativi invece di mettere la foto direttamente nel database in quanto il foto possono essere di grande dimensione ciò che riempire il database).

Quanto ao sistema de upload, podes ver aqui um sistema parecido com o que fiz (com código): Poiché il sistema di caricamento, si può vedere qui un sistema simile a quello che ho fatto (con il codice):

http://weblog.cahlan.com/files/file_uploads/FileUpload.html http://weblog.cahlan.com/files/file_uploads/FileUpload.html

onde o upload.php será algo parecido com: http://www.msdevstudio.com/mywork/upload.rar dove il upload.php sarà qualcosa di simile: http://www.msdevstudio.com/mywork/upload.rar

P:Agora fora da tua aplicação, eu tenho uma tabela com varios itens e quero que apareçam numa pagina cada um como botão, é possível?? D: Ora al di fuori della vostra applicazione, ho una tabella con diverse voci e desidera visualizzare su una pagina ciascuno come un pulsante, è possibile? E no caso de essa pagina ter um numero predefinido de botões como fazer paginação? E, nel caso di questa pagina hanno un numero di preimpostazione di pulsanti e non di paging?

R: Agora o monstro das respostas (nota que escrevi isto sem testar, terás que alterar muitos dos campos, mas o essencial está lá: ) A: Ora il mostro delle risposte (si noti che ho scritto questo senza prove, si devono cambiare molti dei campi, ma la chiave è lì:)

Parte I: Botões em cada elemento da “tabela” Parte I: I pulsanti su ogni elemento della "tavola"

Quanto aos botões, podes colocar em cada linha da datagrid ou qualquer elemento de listagem um qualquer outro componente, sendo o mais comum, checkbox, listbox, button ou radioButton, ve isto: Per quanto riguarda i pulsanti, è possibile mettere su ogni riga del DataGrid o di qualsiasi elemento di un elenco di qualsiasi altro componente, è il più comune, di controllo, lista, o RadioButton pulsante, vede questo:

http://www.returnundefined.com/files/ItemRendererExample/ (codigo fonte) http://www.returnundefined.com/files/ItemRendererExample/ (codice sorgente)

http://www.adobe.com/devnet/flex/quickstart/using_item_renderers/ http://www.adobe.com/devnet/flex/quickstart/using_item_renderers/

mesmo parecido com o que deves querer: anche simile a quello che dovrebbe desidera:

http://axel.cfwebtools.com/…/UsingTheItemRendererWithADataGrid.html http://axel.cfwebtools.com/ ... / UsingTheItemRendererWithADataGrid.html

Estes links têm o view source activo. Questi link sono la fonte di vista patrimoniale.

Parte II: E no caso de essa pagina ter um número predefinindo de botões como fazer paginação? Parte II: E solo nel caso in cui questa pagina hanno un numero di preimpostazione di pulsanti per fare di paging?

Qaunto a fazer a paginação, isso depende muito do tipo de sistema que tens, se tens php mySql podes limitar (LIMIT) a listagem a apenas o que queres, basta criares uma variavel publica para guardares a iniciação da listagem e outra com o número de entradas por pagina: Qaunto a fare di paging, che si basa fortemente sul tipo di sistema che si possiede, se è possibile limitare PHP MySQL (limite) la quotazione è solo quello che vuoi, basta creare un pubblico variabile per salvare l'apertura della lista e uno con il numero di voci per pagina:

1: public var inicio:Number = 0; 1: pubblico var inizio: Numero = 0;

2: public var porPagina:Number = 10; 2: var porPagina pubblico: Numero = 10;

3: //ao ser chamado o Remote objecto, tens que dizer ao php para contruir o pedido sql com as limitações. 3: / / per essere chiamato oggetto remoto, è necessario dire di PHP per costruire la richiesta di SQL con i limiti.

4: //no flex por exemplo o botão seguinte eo anterior a chamarem a Função goPag(”seguinte”); ou goPag(”anterior”); (consoante o botão.) 4: / / flex, per esempio nel pulsante accanto precedente e chiamata a funzione goPag ( "Avanti"), o goPag ( "ex"); (a seconda del pulsante.)

5: private function goPag(onde:String): void { 5: funzione goPag privato (dove: String): void (

6: if (onde== “seguinte” ) { 6: se (che == "Avanti") (

7: inicio=inicio 10; 7: inizio = inizio 10;

8: } 8:)

9: if (onde== “anterior” ) { 9: se (che == "ex") (

10: inicio=inicio-10; 10: start = start-10;

11: if (inicio<=0) inicio=0; 11: if (inizio <= 0) start = 0;

12: } 12:)

13: remoteObjectBusca.funcaoBusca.arguments.inicial=inicio; //redefinimos os valores 13: remoteObjectBusca.funcaoBusca.arguments.inicial = inizio; / / ripristinare i valori

14: remoteObjectBusca.funcaoBusca.arguments.porPag=porPagina; //redefinimos os valores 14: remoteObjectBusca.funcaoBusca.arguments.porPag = porPagina; / / ripristinare i valori

15: remoteObjectBusca.funcaoBusca.send(); 15: remoteObjectBusca.funcaoBusca.send ();

16: } 16:)

onde o remoteObject será algo como (amfphp): dove il remoteObject saranno simili (AMFPHP):

1: < mx:RemoteObject id =”remoteObjectBusca” destination =”amfphp” source =”servico.class” > 1: <mx: RemoteObject id = = "remoteObjectBusca" destinazione "AMFPHP" source = "servico.class">

2: < mx:method name =”funcaoBusca” result =”{lidaDados(event)}” > 2: <mx: metodo name = = "funcaoBusca" risultato "(ity (event))">

3: < mx:arguments > 3: <mx: arguments>

4: < inicial > 4: <initial>

5: {”0″} 5: ( "0")

6: </ inicial > 6: </ inizio>

7: < porPag > 7: <porPag>

8: {”10″} 8: ( "10")

9: </ porPag > 9: </ porPag>

10: </ mx:arguments > 10: </ mx: argomenti>

11: </ mx:method > 11: </ mx: metodo>

12: </ mx:RemoteObject > 12: </ mx: RemoteObject>

e onde a função do remote object em php receberá esses parametros e devolverá a matriz de dados (as Object): e dove il ruolo del telecomando oggetto in php ricevere questi parametri e restituisce l'array di dati (l'oggetto):

1: function funcaoBusca($inicial, $porPag) { 1: funzione funcaoBusca ($ start, $ porPag) (

2: if (!inicial || $inicial==NULL) $inicial=0; 2: if (! Iniziale | | $ iniziale == NULL) $ start = 0;

3: if (!porPag || $porPag==NULL) $porPag=10; 3: if (! PorPag | | $ porPag == NULL) porPag $ = 10;

4: 4:

5: $con=mysql_connect( “host” , “user” , “pass” ); 5: con $ = mysql_connect ( "host", "utente", "pass");

6: $sel=mysql_select_db( “Bdados” ); 6: $ sel = mysql_select_db ( "Bdados");

7: 7:

8: $sql= “SELECT * FROM `tabelaDados` LIMIT “ .$inicial. “, “ .$porPag; 8: $ sql = "SELECT * FROM` `tabelaDados LIMITE". Iniziale di €. "." PorPag $;

9: $res=mysql_query($sql); 9: $ res = mysql_query ($ sql);

10: 10:

11: if ($res) return mysql_fetch_array($res); 11: if ($ res) return mysql_fetch_array ($ res);

12: else return “Error” ; 12: else return "Errore";

13: } 13:)

depois só temos que criar no flex a funçâo para ler os dados: quindi è necessario creare flex in funzione per leggere i dati:

1: [Bindable] 1: [Bindable]

2: public var dadosBusca:Object; 2: var dadosBusca pubblico: Oggetto;

3: pivate function lidaDados( event :ResultEvent): void { 3: pivate qualità funzione (evento: ResultEvent): void (

4: if ( event .result== “Error” ) { 4: se (event. Risultato == "Errore") (

5: //erro ao buscar os dados 5: / / errore di ottenere i dati

6: } 6:)

7: else dadosBusca= event .result as Object; 7: altro dadosBusca = caso. Il risultato oggetto;

8: // a partir daqui tens os dados acessiveis na variavel dadosBusca 8: / / da qui si hanno i dati accessibili in dadosBusca variabile

9: // para acederes a cada elemento usas dadosBusca[linha].campoDaBd; 9: / / per ogni elemento si utilizza per accedere dadosBusca [online]. CampoDaBd;

10: } 10:)

Nota: Este código da ultima resposta foi elaborado sem ter sido testado, por isso não sei se contem alguns erros.. Nota: Questo codice di ultima risposta è stata elaborata senza essere controllati, non so se contiene alcuni errori .. mas basta testares, não sei se seria bem isto que querias. ma solo di prova, non so se sarebbe molto che si desiderava.

Bom, acho que consegui explicar tudo.. Beh, credo potrebbe spiegare tutto .. dá para perceber? si può capire?

Coloquei as respostas num novo post, já que era uma resposta enorme, e assim pode ajudar mais gente. Ho messo le risposte in un nuovo post, come è stato una grande risposta e, quindi, può aiutare un maggior numero di persone.

Abraço. Abbracciare abbraccio.

versão pdf temporariamente indisponivel. versione pdf temporaneamente non disponibile.
Deixe um comentário or Deixe um Trackback Lascia un tuo commento o Lascia un tuo Trackback

46 Comentários 46 Commenti

  1. José Carlos Fonseca Jose Carlos Fonseca
    Abril 17, 2008 às 7:32 pm | Permalink 17 aprile 2008 a 7:32 pm | Permalink

    Olá, Ciao,

    Desculpa de só agora responder, mas estive fora por uns tempos em trabalho e só voltei ontém. Ci scusiamo per rispondere solo ora, ma ero fuori per un po 'sul posto di lavoro e solo ieri è tornato.

    Muito obrigado, pela ajuda. Grazie per il vostro aiuto. E que rapidez na resposta. E che la rapidità di risposta. Mais uma vez obrigado. Grazie ancora.

    Na resposta à pergunta 4 (Como adicionas uma foto na BD?), mencionas um link, já estive a analizar o código, mas dá-me sempre “IO ERROR”. In risposta alla domanda n. 4 (Aggiunta di una foto in BD?), Per citare un collegamento, è stato quello di analizzare il codice, ma mi dà semper "IO ERROR". Não sei como usar o upload.php. Non so come utilizzare il upload.php.

    Ajudas-me?? Potrebbe aiutarmi?

    Um abraço. Un abbraccio.

    José Carlos Fonseca Jose Carlos Fonseca
    Fafe - Portugal Georgia - Portogallo

  2. Abril 18, 2008 às 6:13 am | Permalink 18 aprile 2008 a 6:13 AM | Permalink

    Em principio o upload.php que dei para download deve funcionar sem qualquer alteração, verifica se os links que fazem referencia ao upload.php estão bem: All'inizio ho dato upload.php per il download dovrebbe funzionare senza alcuna modifica, ci sono i link che fanno riferimento a upload.php sono:

    private const _strUploadDomain:String = “http://codycodingcowboy.cahlan.com/”; const _strUploadDomain privato: String = "http://codycodingcowboy.cahlan.com/";
    private const _strUploadScript:String = _strUploadDomain “files/upload.php”; const _strUploadScript privato: _strUploadDomain String = "file / upload.php";

    e na directoria onde é executado o .php deves ter a directoria myFileDir já que no tal upload.php está: e la directory in cui viene eseguito. php deve avere la directory myFileDir poiché in tali upload.php è il seguente:

    $file_path = $_SERVER['DOCUMENT_ROOT'].”/myFileDir”; $ File_path = $ _SERVER [ 'DOCUMENT_ROOT']."/ myFileDir ";

    se depois destas verificações continuar a dar erro, me indica se fez algumas alterações ao código para poder “investigar” melhor. se, dopo tali constatazioni continuare a fare errore, ho fatto alcuni cambiamenti indica se il codice a "studiare" meglio. :)

    cumps.

  3. José Carlos Fonseca Carlos José Fonseca
    Abril 21, 2008 às 8:37 pm | Permalink 21 aprile 2008 a 8:37 pm | Permalink

    Olá Mário, Ciao Giovanni,

    De facto não tinha o upload.php no directorio certo e não tinha a directoria. In realtà non era vero upload.php sulla directory e non hanno avuto la directory. Depois de resolver isto já não me dá erro. Dopo aver risolvere il problema non è più mi dà errore. Confirma o upload da imagem e envia para o local. Conferma l'caricare l'immagine e lo invia al sito. No entanto a verificação se a imagem já existe não faz. Tuttavia, la verifica se l'immagine non esiste già. Vou tentar vêr onde está o problema. Vorrei provare a vedere dove è il problema.

    Na bd guardas o caminho todo da imagem, certo? Bd guardie nel modo in cui l'intera immagine, giusto?

    Agora outra questão, (espero não ser chato!!!). Ora un altro problema, (si spera non noioso !!!).

    Como mostro 1 registo da bd directamente num textinput sem ser num datagrid? Come uno spettacolo di 1 bd registrare direttamente in textinput senza essere un DataGrid?

    Obrigadão pela ajuda. Obrigadão di aiuto.

    Tens sido fantástico. Sei stato fantastico.

    Um abraço. Un abbraccio.

    José Carlos Fonseca Jose Carlos Fonseca
    Fafe - Portugal Georgia - Portogallo

  4. Abril 22, 2008 às 5:53 pm | Permalink 22 aprile 2008 a 5:53 pm | Permalink

    Sim, na base de dados guardo o caminho da imagem já que são muitas imagens e iria sobrecarregar a base de dados. Sì, nel suo database per tenere traccia di come l'immagine molte immagini e sovraccaricare il database.

    para mostrar um registo directamente na base de dados num campo de texto podes fazer o seguinte, imagina a função seguinte (que recebe dados do remoteObject): per visualizzare un record direttamente nella banca dati nel campo di testo possono effettuare le seguenti operazioni, immaginare la seguente funzione (che riceve i dati dalla remoteObject):
    imagina que o teu remote object devolve (exemplo em php amfphp) Immagino che il telecomando ritorna oggetto (ad esempio in PHP AMFPHP)
    < ?php <? Php

    function dev() { dev funzione () (
    //exemplo 1 / / Esempio 1
    return "Ola"; return "Ciao";

    //exemplo 2 / / Esempio 2
    $dados['nome']="soares"; $ Dati [ 'name'] = "Soares";
    $dados['prenome']="joão"; $ Dati [ 'Nome'] = "John";
    return $dados; return $ dati;

    //exemplo 3 / / Esempio 3
    $dados['antonio']['nome']="sousa"; $ Dati [ 'Antonio'] [ 'name'] = "Sousa";
    $dados['antonio']['idade']="19"; $ Dati [ 'Antonio'] [ 'età'] = "19";
    $dados['pedro']['nome']="lemos"; $ Dati [ 'pedro'] [ 'name'] = "leggere";
    $dados['pedro']['idade']="25"; $ Dati [ 'pedro'] [ 'età'] = "25";

    } )

    ?>
    private function lidaDados(ev:ResultEvent):void { privato funzione qualità (EV: ResultEvent): void (
    //exemplo 1, recebe apenas uma variavel: / / Esempio 1, riceve solo una variabile:
    meucampo.text=ev.result meucampo.text = ev.result

    //exemplo 2, recebe um array de variavels: / / Esempio 2, riceve un array di variabili:
    meuCampo.text=ev.result.nome; //devolve soares meuCampo.text = ev.result.nome; / / restituisce Soares
    meuCampo.text=ev.result.prenome; //devolve joão meuCampo.text = ev.result.prenome; / / restituisce noi

    //exemplo 3, recebe uma “matriz” de arrays: / / Esempio 3, riceve una "matrice" di array:
    meuCampo.text=ev.result.antonio.nome; //devolve sousa meuCampo.text = ev.result.antonio.nome; / / restituisce Sousa
    meuCampo.text=ev.result.antonio.idade; //devolve 19 meuCampo.text = ev.result.antonio.idade; / / restituisce 19
    meuCampo.text=ev.result.joao.nome; //devolve lemos meuCampo.text = ev.result.joao.nome; / / restituisce leggere
    meuCampo.text=ev.result.joao.idade; //devolve 25 meuCampo.text = ev.result.joao.idade; / / restituisce 25

    } )

    Para facilitar este processo, cria uma variavel bindable: Per facilitare questo processo, crea una variabile bindable:

    [Bindable]
    public var DadosRo:Object; var pubblico DadosRo: Oggetto;

    e depois na função que recebe os dados do RO, coloca e poi alla funzione che riceve i dati dalla Romania, solleva

    DadosRo=new Object(); DadosRo = new Object ();

    DadosRo = ev.result as Object; DadosRo = ev.result Object;

    ea partir daí os seus dados podem ser acedido a partir dessa variavel em qualquer parte do seu código, e serão actualizados sempre que o remoteObject for chamado. e quindi i loro dati si può accedere da questa variabile in una qualsiasi parte del codice, e sarà aggiornato ogni volta che il remoteObject è chiamato.

    No exemplo 3: In questo esempio 3:
    em vez de meuCampo.text=ev.result.joao.nome; invece di meuCampo.text = ev.result.joao.nome;

    poderia usar: potrebbe usare:
    meuCampo.text=DadosRo.joao.nome; meuCampo.text = DadosRo.joao.nome;

    Deu pra perceber?? Egli ha dato a capire?

    Abraço. Abbracciare abbraccio.

    Bom, eu não sei se tem seguido a minha série de tutoriais ( http://msdevstudio.com/blog/2008/04/08/adobe-flex-a-partir-do-zero-parte-iv/ ) mas na quarta parte exemplifico um bocado do sistema de comunicação com um backend em php, talvez te possa ajudar a compreender melhor alguns promenores do Flex. Beh, non so se avete seguito la mia serie di tutorial (http://msdevstudio.com/blog/2008/04/08/adobe-flex-a-partir-do-zero-parte-iv/), ma nel quarto esemplifica un po 'parte del sistema di comunicazione con un backend in PHP, si potrebbe forse aiutarci a capire meglio alcuni dei promenores Flex.

  5. José Carlos Fonseca Jose Carlos Fonseca
    Abril 23, 2008 às 9:46 pm | Permalink 23 aprile 2008 a 9:46 pm | Permalink

    Boas Mário, Buona Mario,

    Simplesmente genial. Semplicemente geniale. Funcionou direitinho. Ha funzionato correttamente.

    Sim!! Sì! Tenho seguido todos os teus tutoriais, estão de mais. Ho seguito tutti i vostri tutorial, sono troppo. Se não fosse você concerteza a aprendizagem do flex iria ser mais demorada. Se non è evidente che per lo studio del flex sarebbe più a lungo. Grande ajuda, Obrigado!! Grande aiuto, Grazie!

    (lá vem o chato!!!) Outra questão, eu tenho um viewStack onde para cada um item é um component. (c'è la fastidiosa!) Un altro problema, ho un viewStack al punto in cui ogni elemento è una componente. Estes components são accionados por um botão, acontece que depois de visitar uma vez, na proxima visita não faz o refresh. Questi componenti sono attivate da un pulsante, che succede dopo si visita una volta, il prossimo viaggio non si aggiorna.
    É possivel contornar isto? E 'possibile aggirare questo?

    Se quiseres, podes adicionar o meu email ao messenger. Se si desidera, è possibile aggiungere la mia e-mail al Messaggero.

    Mais uma vez obrigado. Grazie ancora.

    José Carlos Fonseca Jose Carlos Fonseca
    Fafe - Portugal Georgia - Portogallo

  6. Abril 25, 2008 às 8:24 pm | Permalink 25 aprile 2008 a 8:24 pm | Permalink

    Carlos, desculpa só responder agora.. Carlos, dispiace solo rispondere ora .. tenho andado um pouco atarefado com trabalo :pe se calhar por isso não percebi bem a sua duvida, se o código não for muito extenso coloque aí..senão tente explicar mais detalhadamente.. Sono stato un po 'occupato con il lavoro: ad esempio, forse non così ben capito i loro dubbi, se il codice non è messo lì .. molto lungo, ma tenta di spiegare ulteriormente .. : P

    um abraço. un abbraccio.

  7. José Carlos Fonseca Jose Carlos Fonseca
    Abril 30, 2008 às 11:43 pm | Permalink 30 aprile 2008 le ore 11:43 pm | Permalink

    Olá Mário, desde já obrigado pela resposta e não tens que te desculpar. Ciao Giovanni, grazie per ora non ha ottenuto risposta e che si scusa.
    EStive a rever o meu código e acho que já descobri o erro. Mi è stato rivedere il mio codice e suppongo che ho scoperto l'errore.
    No entanto gostaria de te colocar outra questão, estou a tentar fazer algo que irá ter acesso atravéz de login. Tuttavia vi chiedo un'altra domanda, sto cercando di fare qualcosa che avrà accesso attraverso il login. Como é que mostro o ecrã1 para o administrador, o ecrã2 para o utilizador, etc. Come ha fatto lo spettacolo ecrã1 per l'amministratore, l'ecrã2 per l'utente, e così via. Já tentei, mas acho que ainda estou verde em flex. Ho provato, ma credo che sono ancora verdi in flesso.

    Obrigado. Grazie.

    Um Abraço. Un abbraccio.

    José Carlos Fonseca Jose Carlos Fonseca
    Fafe - Portugal Georgia - Portogallo

  8. Maio 1, 2008 às 6:11 am | Permalink 1 ° maggio 2008 a 6:11 AM | Permalink

    Bem Carlos, podes fazer isso de 2 maneiras, agora depende da necessidade ou não de usares um backend (php, java, etc..) Carlos Beh, potete farlo in 2 modi, ora dipende da se o non indossare un backend (PHP, Java, ecc ..)

    Sem Backend. Senza back-end.
    A solução pode passar por definires uma variavél global, ou seja, declaras a variavél, por exemplo La soluzione può passare per impostare una variabile globale, vale a dire, che dichiara la variabile, ad esempio
    var admin:Boolean = false; var admin: Boolean = false;
    E depois, basta verificares sempre essa variavel quando é pedido acesso à parte de admin. E poi, solo verificare se questa variabile è applicato quando l'accesso ad una parte del admin.

    O ideal será separares a tua aplicação por pelo menos 3 states; Login, Admin, User Idealmente, la vostra domanda sarà separati da almeno 3 membri; Login, amministratore, l'utente
    Depois basta fazeres o login, e na funçao que valida o login definires a variavél admin=true; e mudares pro state respectivo, neste caso currentState=”Admin”; ou se for user, admin=false; currentState=”User”; Poi facciamo il segno, e la funzione che convalida i dati di accesso impostare la variabile admin = vero, e modificare i loro pro stato, in questo caso CurrentState = "Admin", o se l'utente, admin = false; CurrentState = "Utente";

    Outra forma de fazer isso, é usares um backend em php por exemplo, e fazeres uso de sessões, para verificares se o user está identificado como admin ou não… mas assim é um bocado mais extenso, mas se vires que é a melhor forma, diz que eu faço-te um pequeno exemplo. Un altro modo per fare questo, si indossa un backend in php per esempio, e fare uso di sessioni, per vedere se l'utente è identificato come amministratore o no ... ma è un po 'più ampia, ma se si vede qual è il modo migliore, dice che faccio un piccolo esempio.

    Seria isso que querias? E 'ciò che si voleva?

    Abraço. Abbracciare abbraccio.

  9. José Carlos Fonseca Jose Carlos Fonseca
    Maio 1, 2008 às 10:30 am | Permalink 1 ° maggio 2008 a 10:30 am | Permalink

    Bom dia Mário, Ciao Giovanni,

    De facto o ideal seria criar um backend em php e usar sessões. In realtà l'idea di creare un backend in PHP e l'utilizzo di sessioni. Arranjas-me então um exemplo. Poi mi si ottiene un esempio.

    Obrigado. Grazie.

    Abraço. Abbracciare abbraccio.

    José Carlos Fonseca Jose Carlos Fonseca
    Fafe - Portugal Georgia - Portogallo

  10. José Carlos Fonseca Jose Carlos Fonseca
    Maio 2, 2008 às 8:35 pm | Permalink 2 maggio 2008 a 8:35 pm | Permalink

    Olá Mário, Ciao Giovanni,

    No teu Sistema Imobiliário a caixa de login não é um popup pois não. Proprietà del sistema nel vostro segno nel riquadro non è un popup come non è così. Usas-te states?? È possibile utilizzare fino membri? Tentei fazer o efeito, mas a caixa não surge desde cima e não consigo fazer o efeito final. Ho provato a farlo, ma la casella non appare da sopra e non posso fare l'effetto finale.

    Na aplicação que estou a tentar fazer acontece algo do género: Nella domanda che sto cercando di fare è qualcosa di simile:

    - faço o login, entro em vários ecrãs e faço logout sem fechar o browser. - Non ho l'accesso, inserire su più schermi e senza chiudere il browser. Ao fazer login outra vez entra no último ecrã que estive e não no que está programado para aparecer e os efeitos só são feitos na primeira vez. Quando accedi nuovamente entra l'ultimo schermo e non ero a che è prevista a comparire e gli effetti sono solo fatto la prima volta.

    - E se estiver dentro da aplicação e fizer F5(refresh) sai e pede para fazer login. - E se siete all'interno della domanda e rendere F5 (refresh) esce e chiede di accedere.
    Isto é normal? È normale questo? Dá para contronar. Potrebbe contronar.

    Obrigado pela tua ajuda e paciência. Grazie per il vostro aiuto e la pazienza.

    Um abraço. Un abbraccio.

    Jose Carlos Fonseca Jose Carlos Fonseca
    Fafe - Portugal Georgia - Portogallo

  11. Maio 2, 2008 às 9:45 pm | Permalink 2 maggio 2008 a 9:45 pm | Permalink

    Bem carlos, o efeito inicial é um simples painel, que é criado no topo da aplicação com visibilidade=false; depois do efeito iniciado é mostrado. Carlos Ebbene, il primo effetto è un semplice pannello, che viene creato in cima alla domanda con visibilità = false; iniziato dopo la fine viene mostrato.
    O efeito final é um simples mx:Move (como o inicial), ambos com a easingFunction=Elastic (mx.effects.easing.Elastic ) e depois visibility=false; quando o efeito termina (podes saber quando o efeito termina, com um eventListner ao efeito, algo como efeito.addEventListener(EffectEvent.EFFECT_END, funcao_que_esconde_o_panel); L'effetto finale è una semplice mx: Move (come l'originale), sia con l'elastico easingFunction = (mx.effects.easing.Elastic) e quindi la visibilità = false; quando finisce l'effetto (si sa quando l'effetto termina con una eventListner alla fine, qualcosa di simile efeito.addEventListener (EffectEvent.EFFECT_END, funcao_que_esconde_o_panel);

    na funcao: in funzione:
    private function funcao_que_esconde_panel(evt:EffectEvent) { funcao_que_esconde_panel privato funzione (EVT: EffectEvent) (
    painel_login.visibility=false; painel_login.visibility = false;
    efeito.removeEventListner(EffectEvent.EFFECT_END, funcao_que_esconde_o_panel); efeito.removeEventListner (EffectEvent.EFFECT_END, funcao_que_esconde_o_panel);
    } )

    Se fizeres isso com eventos, deves remover os eventListners… Se si esegue questa operazione con eventi, è necessario rimuovere la eventListners ...

    Quando voltas a fazer o login de novo, na função que verifica a validade do login, indica para ele voltar ao state que queres com a indicação. Quando giri per accedere nuovamente, la funzione che controlla la validità del segno, indica per tornare alla situazione che si desidera dare l'allarme. this.currentstate=”StateEntrada”; this.currentstate = "StateEntrada";

    Ao fazeres o F5 é normal isso acontecer, o que podes fazer, é com a tal sessão, verificar isso logo na entrada, no login, e se a sessão for válida ele vai directo ao State desejado, não mostrando o painel de login, já que a sessão é mantida quando carregas no F5. Quando il tasto F5 è normale che accada, che cosa si può fare è con questa sessione, verificare immediatamente all'ingresso, nel segno, e se la sessione è valida egli diretto dello Stato ha voluto, mostrando di non firmare il pannello, già che la sessione si svolge durante il caricamento il tasto F5. Este fim de semana não devo ter muito tempo pra te fazer um exemplo, mas assim que possa eu faço. Questo fine settimana io non dovrebbe avere molto tempo per voi per fare un esempio, ma in modo che io possa fare.

  12. José Carlos Fonseca Jose Carlos Fonseca
    Maio 11, 2008 às 3:21 pm | Permalink 11 maggio 2008 a 3:21 pm | Permalink

    Boa tarde Mário, Buon pomeriggio Giovanni,

    Podes dar-me uma ajuda? Potete darmi una mano?

    Após inserir em alguns textinputs, queria que os dados surgissem num datagrid sem gravar na BD. Dopo l'entrata in alcuni textinputs, ha voluto sollevare i dati in un record senza BD DataGrid. E gravar na BD, atraves de um botao, gravar tudo o que estiver na mesma DataGrid. E scrivere la BD, attraverso un pulsante, registrando tutto ciò che si trova sullo stesso DataGrid.

    Obrigado. Grazie.

  13. Maio 11, 2008 às 6:54 pm | Permalink 11 maggio 2008 a 6:54 pm | Permalink

    Carlos, o aconselhado é criar um ArrayCollection, e trabalhar todos os seus dados nele, que tanto serve como dataProvider para a dataGrid, bem como para depois o enviar para a base de dados. Carlos, si consiglia di creare un ArrayCollection, di lavoro e tutti i vostri dati su di esso, che serve sia come DataProvider per il DataGrid, e poi inviare al database.

    Tenho um exemplo no blog que explica como um arrayCollection pode servir para trabalhar com os dados na base de dados. Ho un esempio, nel blog che spiega come uno arrayCollection il possibile per lavorare con i dati nel database.

    veja: http://msdevstudio.com/blog/2008/03/25/flex-datagrid-operaes-no-dataprovider/ vedi: http://msdevstudio.com/blog/2008/03/25/flex-datagrid-operaes-no-dataprovider/

    Quanto ao gravar na base de dados, enviar esse arrayCollection como parametro para o remoteObject. Come il record nel database, inviare arrayCollection che come parametro per la remoteObject.
    Ve o exemplo, se não conseguires fazer, coloca as tuas duvidas Vedere l'esempio, se non riescono, mettete i vostri dubbi ;)

    Abraço. Abbracciare abbraccio.

  14. José Carlos Fonseca Jose Carlos Fonseca
    Maio 15, 2008 às 6:56 pm | Permalink 15 maggio 2008 a 6:56 pm | Permalink

    Olá Mario, Ciao Mario,

    já tenho um arrayCollection com os dados. Ho un arrayCollection con i dati.

    no remoteObject seria assim? N. remoteObject sarebbe come questo?

    {dados} (dati)

    em que “dados” é o meu arrayCollection. dove "dati" è il mio arrayCollection.

    E no PHP como é que seria para inserir na tabela uma vez que o arrayCollection tem a seguinte estrutura: In PHP e come potrebbe essere quella di inserire nella tabella poiché la arrayCollection è strutturata come segue:

    dados = ["campo1, campo2, campo3" dati = [ "field1, field2, field3"
    "campo3, campo4, campo5"] "field3, campo4, campo5"]

    Obrigado! Grazie!

    José Carlos Fonseca Jose Carlos Fonseca
    Fafe - Portugal Georgia - Portogallo

  15. Maio 15, 2008 às 9:09 pm | Permalink 15 maggio 2008 a 9:09 pm | Permalink

    Boas! Buono! :-)
    Ora então, considerando a seguinte funçao no php Ma allora, considerando la seguente funzione in PHP

    function insere($dados){ funzione inserire ($ dati) (

    $sql=”INSERT INTO `table` (`campo1`, `campo2`, `campo3`, `campo4`, `campo5`, `campo6`) VALUES (’$dados[0][campo1]‘, ‘$dados[0][campo2]‘, ‘$dados[0][campo3]‘, ‘$dados[1][campo4]‘, ‘$dados[1][campo5]‘, ‘$dados[1][campo6]‘)”; $ Sql = "INSERT INTO tabella` `(` field1 `,` field2 `,` field3 `,` campo4 `,` campo5 `,` campo6 ») VALUES ( '$ dati [0] [field1]', '$ dati [0] [field2] ',' $ dati [0] [field3] ',' $ dati [1] [campo4] ',' $ dati [1] [campo5] ',' $ dati [1] [campo6] ') ";

    if(mysql_query($sql)) return “ok”; if (mysql_query ($ sql)) return "ok";
    else return “error :”.mysql_error(); else return "errore". mysql_error ();

    } )

    depois basta chamar a funçao no remote object, algo como um metodo assim no quindi è sufficiente richiamare la funzione del telecomando in oggetto, qualcosa come un metodo ben

    mx:remoteObject …resto…como target, detination..> MX: remoteObject resto ... ... come obiettivo, detination ..>
    mx:method name=”insere” result=”insereRes(event)” > MX: metodo name = "inserire" risultato = "si inserisce (evento)">
    mx:arguments> mx: argomenti>
    dados> Dati>
    {dados} (dati)
    /dados> / Dati>
    /mx:arguments> / Mx: argomenti>
    /mx:method> / Mx: metodo>
    /mx:remoteObject> / Mx: remoteObject>

    ps faltam as “< ” no inicio de cada linha, porque para colocar o código tem que ser assim! ps manca il "<" all'inizio di ogni riga, perché per mettere il codice deve essere in questo modo!

    Isto deve resolver a tua questão… Questo dovrebbe risolvere il tuo problema ... :)

    Um arrayCollection é tratado como um array de arrays no php, ou a tipica matriz (grelha de dados) e um simples Array é tratado como array… Un arrayCollection è trattata come un array di array in PHP, o la tipica array (rete dati) e una semplice matrice Array è trattata come ...

    Esperimenta e diz como correu…. Esperimenta e dire come ha fatto ....

  16. José Carlos Fonseca Jose Carlos Fonseca
    Maio 29, 2008 às 2:34 pm | Permalink 29 maggio 2008 a 2:34 pm | Permalink

    Olá Mário, Ciao Giovanni,

    Estive ausente por uns dias por isso é que só agora respondo. Sono stato assente per un paio di giorni in modo che solo ora la risposta.

    Funcionou impcável! Impcável lavorato! Obrigado. Grazie.

    Estou a tentar controlar os campos textinput antes de enviar os dados para o datagrid. Sono un textinput provare a controllare i campi prima di inviare i dati al DataGrid. Só me falta um teste que não estou a conseguir. Solo bisogno di una prova che io non sono riuscita.

    Verificar se o que inserir no textinput já existe no datagrid. Controllare se l'inserto nel textinput che già esiste in DataGrid. Podes dar-me uma ajuda? Potete darmi una mano?

    Obrigado. Grazie.

    José Carlos Fonseca Jose Carlos Fonseca
    Fafe - Portugal Georgia - Portogallo

  17. Maio 29, 2008 às 2:41 pm | Permalink 29 maggio 2008 a 2:41 pm | Permalink

    private function existe(texto:String):Boolean { privato funzione esiste (testo: String): booleano (

    var existeV:Boolean; var existeV: Boolean;

    existeV=false; existeV = false;
    for(var x:int=0; x<meuDataProvider.lenght; x ) { for (var x: int = 0, x <meuDataProvider.lenght; x ) (

    if(String(meuDataProvider[x].campo_a_comparar)==texto) existeV=true; if (String (meuDataProvider [x]. campo_a_comparar) == testo) existeV = true;

    } )
    return existeV; existeV ritorno;
    } )

    para verificar basta usares solo per verificare l'usura
    if(existe(String(meu_text_imput.text))=true) { //existe } if (exists (String (meu_text_imput.text)) = true) (/ / esiste)
    else //não existe. altro / / non esiste.

    Nota que não testei, mas deve funcionar sem problemas. Si noti che non testato, ma dovrebbe funzionare senza problemi.

    Seria isso? Sarebbe?
    Abraço. Abbracciare abbraccio.

  18. José Carlos Fonseca Jose Carlos Fonseca
    Maio 29, 2008 às 3:29 pm | Permalink 29 maggio 2008 a 3:29 pm | Permalink

    Boas Mário, Buona Mario,

    Perfeito! Perfetto! O meu erro era que não estava a passar para String na condição IF. Il mio errore è stato che non era intenzione di stringa a condizione SE.

    Mais um pedido de ajuda: Una più richiesta di aiuto:

    Tenho em tabelas dados hierarquizados, ou seja, equipamentos->marcas->modelos Ho gerarchica dei dati in tabelle, ovvero le attrezzature-> marca-> modelli
    EX: Monitores -> ELOTouch -> 15 Polgadas EX: Monitor -> EloTouch -> 15 Polgar

    Criar um ecrã para mostrar estes dados o melhor, acho eu, seria atraves de um TreeControl datagrid. Creare uno schermo per visualizzare questi dati, il migliore, a mio avviso, sarebbe attraverso una TreeControl DataGrid.

    No TreeControl aparecia Monitores -> ELOTouch -> 15 Polgadas e no dataGrid os vários dados do respectivo equipamento(nº de serie, cadastro, data, etc) In TreeControl apparso Monitor -> EloTouch -> 15 Polgar in DataGrid e le varie dati delle rispettive attrezzature (n ° di serie, la registrazione, data, ecc)

    Será muito trabalhoso fazer isto? Sarà molto difficile farlo? Por acaso tens algum exemplo por onde eu possa guiar? Per caso avete qualche esempio dove posso guidare? Ainda não encontrei nada na net. Ho ancora a trovare nulla in rete.

    Obrigado. Grazie.

    José Carlos Fonseca Jose Carlos Fonseca
    Fafe - Portugal Georgia - Portogallo

  19. Maio 29, 2008 às 3:44 pm | Permalink 29 maggio 2008 a 3:44 pm | Permalink

    Bem, realmente os exemplos que se vêm são todos em MXML ou XML também por isso nunca trabalhei com as Tree’s, mas olha para este exemplo: Beh, effettivamente gli esempi che sono tutti in MXML o XML anche perché mai lavorato con l'albero, ma guardare questo esempio:

    http://blog.flexexamples.com/2007/12/03/using-an-array-as-a-data-provider-in-a-flex-tree-control/ http://blog.flexexamples.com/2007/12/03/using-an-array-as-a-data-provider-in-a-flex-tree-control/

    como dataProvider tem um Array de objectos, isto pode ser recriado em action script e depois só tens que mandar o output do php no mesmo formato, que se já estás a mandar correctamente para o flex, deve servir sem problemas, mas tens que construir os teus dados no php como objectos… come DataProvider ha un array di oggetti, questo può essere ricreato in azione lo script e poi appena avuto modo di inviare l'output di php nello stesso formato, che già hanno il diritto di flex, deve servire senza problemi, ma dovete costruire il php in vostri dati come oggetti ...

    $array['dados']->nome=campoCategoria; $ Array [ 'dati'] -> nome = campoCategoria;
    $array['dados']->conteudo[0]->valor1=Campo1; $ Array [ 'dati'] -> contenuto [0] -> Field1 = valore1;
    $array['dados']->conteudo[1]->valor2=Campo2; $ Array [ 'dati'] -> contenuto [1] -> field2 = valore2;

    mas se eu encontrar algum exemplo eu aviso…. ma se ho trovato nessun esempio ho notato ....

    Abraço. Abbracciare abbraccio.

  20. Maio 29, 2008 às 3:47 pm | Permalink 29 maggio 2008 a 3:47 pm | Permalink

    Nem de proposito, ve aqui: Non per scopo, vedere qui:

    http://www.adobe.com/devnet/flex/quickstart/working_with_tree/ http://www.adobe.com/devnet/flex/quickstart/working_with_tree/

    junto ao final da pagina tem a criação de um dataProvider para a tree, basta em php usares a mesma estrutura de dados. verso la fine del sito è la creazione di un DataProvider ad un albero, solo in PHP utilizzando la stessa struttura dei dati.

    o código fonte está em: Il codice sorgente è il seguente:
    http://www.adobe.com/devnet/flex/quickstart/working_with_tree/src/TreeKeepOpen/index.html http://www.adobe.com/devnet/flex/quickstart/working_with_tree/src/TreeKeepOpen/index.html

    Abraço. Abbracciare abbraccio.