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.
D: 1.Na prima pagina una foto emerge "carico" come fare?
A: 1. 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 copiare la cartella della vostra applicazione e il <mx:Application …> colocares preloader = "preload.CustomPreloader". Ho fatto alcune piccole implementazioni basate su questo esempio, ma se funziona bene se si utilizza lo stesso.
D: 2.Pagina accesso: effetto di errore, "il controllo di accesso" e la barra blu
A: 2 barra blu è un ProgressBar:
1: <mx: ProgressBar visibile = "false" x = "112" y = "175"
2: labelPlacement = "sinistra" label = "" width = "187"
3: Indeterminato = "true" showEffect = "Fade ()" hideEffect = "Fade ()"
4: id = "progressStatus" />
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;)
quando si ricevono i risultati (negativi, l'utente e pass non corrispondono) è la seguente:
blurRed.target = panelLogin;
blurRed.play ();
dove il panelLogin è il nostro pannello di login e offuscata effetto è il seguente:
1: <mx: Glow id = "offuscata" durata = "700"
2: alphaFrom = "1.0" alphaTo = "0.0"
3: blurXFrom = "0.0" blurXTo = "20.0"
4: blurYFrom = "0.0" blurYTo = "20.0"
5: color = "0 × 990000" />
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.
D: 3.Pagina Merito: effetto sui pulsanti sul lato sinistro
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" durata = "700"
2: alphaFrom = "1.0" alphaTo = "0.0"
3: blurXFrom = "0.0" blurXTo = "20.0"
4: blurYFrom = "0.0" blurYTo = "20.0"
5: color = "0 × 900aeef" />
6: <mx: Glow id = "blurBlueOut" durata = "700"
7: alphaFrom = "0.0" alphaTo = "1.0"
8: blurXFrom = "20.0" blurXTo = "0.0"
9: blurYFrom = "20.0" blurYTo = "0.0"
10: color = "0 × 00aeef" />
e il pulsante appena chiamato sul mouseover eventi mouseOut:
1: <MX: pulsante width = "85" height = "73" label = "pulsante di AGGIUNGERE" id = "aggiungere"
2: icona = "Incorpora @ (fonte = 'immagine / Home_add.png') x =" 10 "y =" 91 "
3: fillColors = "[# 000000, # 000000]" fillAlphas = "0" borderColor = "# 525151"
4: color = "# FDFBFB" themeColor = "# 535C75" textRollOverColor = "# 2667B0"
5: useHandCursor = "true" mouseover = "(buttonOver (aggiungere))"
6: mouseOut = "(buttonOut (aggiungere))" fare clic = "(changeTo ( 'bsf1'))"
7: buttonMode = "true" />
dove andare: il ruolo buttonOver (id_do_botão) e buttonOut (id_do_botão):
1: privato funzione buttonOver (uno: Button): void (
2: blurBlueOut.target = a;
3: blurBlueOut.play ();
4:)
5: privato funzione buttonOut (uno: Button): void (
6: blurBlueIn.target = a;
7: blurBlueIn.play ();
8:)
e hai fatto il tuo scopo ![]()
D: 4.Como aggiungere una foto in BD?
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).
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
dove il upload.php sarà qualcosa di simile: http://www.msdevstudio.com/mywork/upload.rar
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, nel caso di questa pagina hanno un numero di preimpostazione di pulsanti e non di paging?
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: I pulsanti su ogni elemento della "tavola"
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/ (codice sorgente)
http://www.adobe.com/devnet/flex/quickstart/using_item_renderers/
anche simile a quello che dovrebbe desidera:
http://axel.cfwebtools.com/ ... / UsingTheItemRendererWithADataGrid.html
Questi link sono la fonte di vista patrimoniale.
Parte II: E solo nel caso in cui questa pagina hanno un numero di preimpostazione di pulsanti per fare di paging?
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: pubblico var inizio: Numero = 0;
2: var porPagina pubblico: Numero = 10;
3: / / per essere chiamato oggetto remoto, è necessario dire di PHP per costruire la richiesta di SQL con i limiti.
4: / / flex, per esempio nel pulsante accanto precedente e chiamata a funzione goPag ( "Avanti"), o goPag ( "ex"); (a seconda del pulsante.)
5: funzione goPag privato (dove: String): void (
6: se (che == "Avanti") (
7: inizio = inizio 10;
8:)
9: se (che == "ex") (
10: start = start-10;
11: if (inizio <= 0) start = 0;
12:)
13: remoteObjectBusca.funcaoBusca.arguments.inicial = inizio; / / ripristinare i valori
14: remoteObjectBusca.funcaoBusca.arguments.porPag = porPagina; / / ripristinare i valori
15: remoteObjectBusca.funcaoBusca.send ();
16:)
dove il remoteObject saranno simili (AMFPHP):
1: <mx: RemoteObject id = = "remoteObjectBusca" destinazione "AMFPHP" source = "servico.class">
2: <mx: metodo name = = "funcaoBusca" risultato "(ity (event))">
3: <mx: arguments>
4: <initial>
5: ( "0")
6: </ inizio>
7: <porPag>
8: ( "10")
9: </ porPag>
10: </ mx: argomenti>
11: </ mx: metodo>
12: </ mx: RemoteObject>
e dove il ruolo del telecomando oggetto in php ricevere questi parametri e restituisce l'array di dati (l'oggetto):
1: funzione funcaoBusca ($ start, $ porPag) (
2: if (! Iniziale | | $ iniziale == NULL) $ start = 0;
3: if (! PorPag | | $ porPag == NULL) porPag $ = 10;
4:
5: con $ = mysql_connect ( "host", "utente", "pass");
6: $ sel = mysql_select_db ( "Bdados");
7:
8: $ sql = "SELECT * FROM` `tabelaDados LIMITE". Iniziale di €. "." PorPag $;
9: $ res = mysql_query ($ sql);
10:
11: if ($ res) return mysql_fetch_array ($ res);
12: else return "Errore";
13:)
quindi è necessario creare flex in funzione per leggere i dati:
1: [Bindable]
2: var dadosBusca pubblico: Oggetto;
3: pivate qualità funzione (evento: ResultEvent): void (
4: se (event. Risultato == "Errore") (
5: / / errore di ottenere i dati
6:)
7: altro dadosBusca = caso. Il risultato oggetto;
8: / / da qui si hanno i dati accessibili in dadosBusca variabile
9: / / per ogni elemento si utilizza per accedere dadosBusca [online]. CampoDaBd;
10:)
Nota: Questo codice di ultima risposta è stata elaborata senza essere controllati, non so se contiene alcuni errori .. ma solo di prova, non so se sarebbe molto che si desiderava.
Beh, credo potrebbe spiegare tutto .. si può capire?
Ho messo le risposte in un nuovo post, come è stato una grande risposta e, quindi, può aiutare un maggior numero di persone.
Abbracciare abbraccio.









46 Commenti
Ciao,
Ci scusiamo per rispondere solo ora, ma ero fuori per un po 'sul posto di lavoro e solo ieri è tornato.
Grazie per il vostro aiuto. E che la rapidità di risposta. Grazie ancora.
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". Non so come utilizzare il upload.php.
Potrebbe aiutarmi?
Un abbraccio.
Jose Carlos Fonseca
Georgia - Portogallo
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:
const _strUploadDomain privato: String = "http://codycodingcowboy.cahlan.com/";
const _strUploadScript privato: _strUploadDomain String = "file / upload.php";
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 ";
se, dopo tali constatazioni continuare a fare errore, ho fatto alcuni cambiamenti indica se il codice a "studiare" meglio.
cumps.
Ciao Giovanni,
In realtà non era vero upload.php sulla directory e non hanno avuto la directory. Dopo aver risolvere il problema non è più mi dà errore. Conferma l'caricare l'immagine e lo invia al sito. Tuttavia, la verifica se l'immagine non esiste già. Vorrei provare a vedere dove è il problema.
Bd guardie nel modo in cui l'intera immagine, giusto?
Ora un altro problema, (si spera non noioso !!!).
Come uno spettacolo di 1 bd registrare direttamente in textinput senza essere un DataGrid?
Obrigadão di aiuto.
Sei stato fantastico.
Un abbraccio.
Jose Carlos Fonseca
Georgia - Portogallo
Sì, nel suo database per tenere traccia di come l'immagine molte immagini e sovraccaricare il database.
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):
Immagino che il telecomando ritorna oggetto (ad esempio in PHP AMFPHP)
<? Php
dev funzione () (
/ / Esempio 1
return "Ciao";
/ / Esempio 2
$ Dati [ 'name'] = "Soares";
$ Dati [ 'Nome'] = "John";
return $ dati;
/ / Esempio 3
$ Dati [ 'Antonio'] [ 'name'] = "Sousa";
$ Dati [ 'Antonio'] [ 'età'] = "19";
$ Dati [ 'pedro'] [ 'name'] = "leggere";
$ Dati [ 'pedro'] [ 'età'] = "25";
)
?>
privato funzione qualità (EV: ResultEvent): void (
/ / Esempio 1, riceve solo una variabile:
meucampo.text = ev.result
/ / Esempio 2, riceve un array di variabili:
meuCampo.text = ev.result.nome; / / restituisce Soares
meuCampo.text = ev.result.prenome; / / restituisce noi
/ / Esempio 3, riceve una "matrice" di array:
meuCampo.text = ev.result.antonio.nome; / / restituisce Sousa
meuCampo.text = ev.result.antonio.idade; / / restituisce 19
meuCampo.text = ev.result.joao.nome; / / restituisce leggere
meuCampo.text = ev.result.joao.idade; / / restituisce 25
)
Per facilitare questo processo, crea una variabile bindable:
[Bindable]
var pubblico DadosRo: Oggetto;
e poi alla funzione che riceve i dati dalla Romania, solleva
DadosRo = new Object ();
DadosRo = ev.result Object;
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.
In questo esempio 3:
invece di meuCampo.text = ev.result.joao.nome;
potrebbe usare:
meuCampo.text = DadosRo.joao.nome;
Egli ha dato a capire?
Abbracciare abbraccio.
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.
Buona Mario,
Semplicemente geniale. Ha funzionato correttamente.
Sì! Ho seguito tutti i vostri tutorial, sono troppo. Se non è evidente che per lo studio del flex sarebbe più a lungo. Grande aiuto, Grazie!
(c'è la fastidiosa!) Un altro problema, ho un viewStack al punto in cui ogni elemento è una componente. Questi componenti sono attivate da un pulsante, che succede dopo si visita una volta, il prossimo viaggio non si aggiorna.
E 'possibile aggirare questo?
Se si desidera, è possibile aggiungere la mia e-mail al Messaggero.
Grazie ancora.
Jose Carlos Fonseca
Georgia - Portogallo
Carlos, dispiace solo rispondere ora .. 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 ..
un abbraccio.
Ciao Giovanni, grazie per ora non ha ottenuto risposta e che si scusa.
Mi è stato rivedere il mio codice e suppongo che ho scoperto l'errore.
Tuttavia vi chiedo un'altra domanda, sto cercando di fare qualcosa che avrà accesso attraverso il login. Come ha fatto lo spettacolo ecrã1 per l'amministratore, l'ecrã2 per l'utente, e così via. Ho provato, ma credo che sono ancora verdi in flesso.
Grazie.
Un abbraccio.
Jose Carlos Fonseca
Georgia - Portogallo
Carlos Beh, potete farlo in 2 modi, ora dipende da se o non indossare un backend (PHP, Java, ecc ..)
Senza back-end.
La soluzione può passare per impostare una variabile globale, vale a dire, che dichiara la variabile, ad esempio
var admin: Boolean = false;
E poi, solo verificare se questa variabile è applicato quando l'accesso ad una parte del admin.
Idealmente, la vostra domanda sarà separati da almeno 3 membri; Login, amministratore, l'utente
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";
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.
E 'ciò che si voleva?
Abbracciare abbraccio.
Ciao Giovanni,
In realtà l'idea di creare un backend in PHP e l'utilizzo di sessioni. Poi mi si ottiene un esempio.
Grazie.
Abbracciare abbraccio.
Jose Carlos Fonseca
Georgia - Portogallo
Ciao Giovanni,
Proprietà del sistema nel vostro segno nel riquadro non è un popup come non è così. È possibile utilizzare fino membri? Ho provato a farlo, ma la casella non appare da sopra e non posso fare l'effetto finale.
Nella domanda che sto cercando di fare è qualcosa di simile:
- Non ho l'accesso, inserire su più schermi e senza chiudere il browser. 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 siete all'interno della domanda e rendere F5 (refresh) esce e chiede di accedere.
È normale questo? Potrebbe contronar.
Grazie per il vostro aiuto e la pazienza.
Un abbraccio.
Jose Carlos Fonseca
Georgia - Portogallo
Carlos Ebbene, il primo effetto è un semplice pannello, che viene creato in cima alla domanda con visibilità = false; iniziato dopo la fine viene mostrato.
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);
in funzione:
funcao_que_esconde_panel privato funzione (EVT: EffectEvent) (
painel_login.visibility = false;
efeito.removeEventListner (EffectEvent.EFFECT_END, funcao_que_esconde_o_panel);
)
Se si esegue questa operazione con eventi, è necessario rimuovere la eventListners ...
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";
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. Questo fine settimana io non dovrebbe avere molto tempo per voi per fare un esempio, ma in modo che io possa fare.
Buon pomeriggio Giovanni,
Potete darmi una mano?
Dopo l'entrata in alcuni textinputs, ha voluto sollevare i dati in un record senza BD DataGrid. E scrivere la BD, attraverso un pulsante, registrando tutto ciò che si trova sullo stesso DataGrid.
Grazie.
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.
Ho un esempio, nel blog che spiega come uno arrayCollection il possibile per lavorare con i dati nel database.
vedi: http://msdevstudio.com/blog/2008/03/25/flex-datagrid-operaes-no-dataprovider/
Come il record nel database, inviare arrayCollection che come parametro per la remoteObject.
Vedere l'esempio, se non riescono, mettete i vostri dubbi
Abbracciare abbraccio.
Ciao Mario,
Ho un arrayCollection con i dati.
N. remoteObject sarebbe come questo?
(dati)
dove "dati" è il mio arrayCollection.
In PHP e come potrebbe essere quella di inserire nella tabella poiché la arrayCollection è strutturata come segue:
dati = [ "field1, field2, field3"
"field3, campo4, campo5"]
Grazie!
Jose Carlos Fonseca
Georgia - Portogallo
Buono!
Ma allora, considerando la seguente funzione in PHP
funzione inserire ($ dati) (
$ 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";
else return "errore". mysql_error ();
)
quindi è sufficiente richiamare la funzione del telecomando in oggetto, qualcosa come un metodo ben
MX: remoteObject resto ... ... come obiettivo, detination ..>
MX: metodo name = "inserire" risultato = "si inserisce (evento)">
mx: argomenti>
Dati>
(dati)
/ Dati>
/ Mx: argomenti>
/ Mx: metodo>
/ Mx: remoteObject>
ps manca il "<" all'inizio di ogni riga, perché per mettere il codice deve essere in questo modo!
Questo dovrebbe risolvere il tuo problema ...
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 dire come ha fatto ....
Ciao Giovanni,
Sono stato assente per un paio di giorni in modo che solo ora la risposta.
Impcável lavorato! Grazie.
Sono un textinput provare a controllare i campi prima di inviare i dati al DataGrid. Solo bisogno di una prova che io non sono riuscita.
Controllare se l'inserto nel textinput che già esiste in DataGrid. Potete darmi una mano?
Grazie.
Jose Carlos Fonseca
Georgia - Portogallo
privato funzione esiste (testo: String): booleano (
var existeV: Boolean;
existeV = false;
for (var x: int = 0, x <meuDataProvider.lenght; x ) (
if (String (meuDataProvider [x]. campo_a_comparar) == testo) existeV = true;
)
existeV ritorno;
)
solo per verificare l'usura
if (exists (String (meu_text_imput.text)) = true) (/ / esiste)
altro / / non esiste.
Si noti che non testato, ma dovrebbe funzionare senza problemi.
Sarebbe?
Abbracciare abbraccio.
Buona Mario,
Perfetto! Il mio errore è stato che non era intenzione di stringa a condizione SE.
Una più richiesta di aiuto:
Ho gerarchica dei dati in tabelle, ovvero le attrezzature-> marca-> modelli
EX: Monitor -> EloTouch -> 15 Polgar
Creare uno schermo per visualizzare questi dati, il migliore, a mio avviso, sarebbe attraverso una TreeControl DataGrid.
In TreeControl apparso Monitor -> EloTouch -> 15 Polgar in DataGrid e le varie dati delle rispettive attrezzature (n ° di serie, la registrazione, data, ecc)
Sarà molto difficile farlo? Per caso avete qualche esempio dove posso guidare? Ho ancora a trovare nulla in rete.
Grazie.
Jose Carlos Fonseca
Georgia - Portogallo
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/
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 [ 'dati'] -> nome = campoCategoria;
$ Array [ 'dati'] -> contenuto [0] -> Field1 = valore1;
$ Array [ 'dati'] -> contenuto [1] -> field2 = valore2;
ma se ho trovato nessun esempio ho notato ....
Abbracciare abbraccio.
Non per scopo, vedere qui:
http://www.adobe.com/devnet/flex/quickstart/working_with_tree/
verso la fine del sito è la creazione di un DataProvider ad un albero, solo in PHP utilizzando la stessa struttura dei dati.
Il codice sorgente è il seguente:
http://www.adobe.com/devnet/flex/quickstart/working_with_tree/src/TreeKeepOpen/index.html
Abbracciare abbraccio.