A petición de Jose Carlos Fonseca, aquí hay algunas explicaciones y detalles de partes de mi sistema de código utilizado en el sector inmobiliario, a fin de ayudar a él y me puede ayudar a más personas interesadas.
Q: 1.Na primera página aparece una imagen "cargando" como de hecho están haciendo?
R: 1. El efecto de carga se consigue mediante la sustitución de "cargadora" flex normal de una imagen, se puede ver aquí http://www.onflex.org/ted/2006/07/flex-2-preloaders-swf-png-gif- examples.php donde se puede encontrar gif, png, swf y ejemplos con código fuente. Just copiares a la carpeta de su solicitud y <mx:Application …> colocares preloader = "preload.CustomPreloader". He hecho algunos pequeños despliegues basados en este ejemplo, pero si utilizamos funciona bien en él.
Q: 2.Pagina el ingreso: efecto de error, "control diario" y la barra azul
A: 2 barra azul es un ProgressBar:
1: <mx: ProgressBar visible = "false" x = "112" y = "175"
2: labelPlacement = "izquierda" label = "" width = "187"
3: indeterminada = "verdadero" showEffect = "Fade ()" hideEffect = "Fade ()"
4: id = "progressStatus" />
que se activa (progressStatus.visible = true;) cuando la solicitud inicial, para comprobar el registro en remoteObject (enviar) y cuando se baje la respuesta de remoteObject (resultado). (progressStatus.visible = false;)
al recibir el resultado (no, el usuario y pass no coinciden) es la siguiente:
blurRed.target = panelLogin;
blurRed.play ();
panelLogin dónde está nuestro panel de login y borrosa es el siguiente efecto:
1: <mx: Glow id = "borrosa" duration = "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" />
Como para el control de acceso es el mismo sistema que el anterior, dentro o fuera de la progressStatus desde la Flex aún no ha aplicado el evento con una remoteObject progreso.
Q: 3.Pagina casa: efecto sobre los botones de la izquierda
R: Por lo que respecta a los botones de la izquierda, el efecto es el mismo panel del registro de errores, los efectos son los siguientes:
1: <mx: Glow id = "blurBlueIn" duration = "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" duration = "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" />
y sólo el botón de llamada en mouseover mouseOut eventos:
1: <mx: Botón width = "85" altura = "73" label = "ADD" id = "añadir"
2: icono = "Insertar @ (fuente = 'IMG / Home_add.png')" x = "10" y = "91"
3: fillColors = [# 000000, # 000000] "fillAlphas =" 0 "borderColor =" # 525151 "
4: color = "# FDFBFB" themeColor = "# 535C75" textRollOverColor = "# 2667B0"
5: useHandCursor = "verdadero" mouseover = "(buttonOver (añadir))"
6: mouseOut = "(buttonOut (añadir))" = click "(changeTo ( 'bsf1'))"
7: buttonMode = "true" />
si usted tiene: la función buttonOver (id_do_botão) y buttonOut (id_do_botão):
1: private function buttonOver (a: Botón): void (
2: blurBlueOut.target = a;
3: blurBlueOut.play ();
4:)
5: privado función buttonOut (a: Botón): void (
6: blurBlueIn.target = a;
7: blurBlueIn.play ();
8:)
y que haya realizado sus propósitos ![]()
Q: 4.Como añadido una foto en BD?
R: La foto se inserta a través de la vía php amfphp en Flex sólo se seleccionaron las fotos y enviada por correo a un script upload.php se ocupan de la transmisión al servidor, y restablecer la ubicación de las fotografías que se almacenan en una matriz, donde termina de enviar todas las imágenes, se llama una función de remoteObject que custodian los caminos de las fotos en la base de datos (yo elegí a utilizar rutas relativas en lugar poner la imagen directamente en la base de datos, ya las imágenes pueden ser de gran tamaño lo que llenar la base de datos).
Como el sistema de carga, se puede ver aquí un sistema similar a lo que hice (con código):
http://weblog.cahlan.com/files/file_uploads/FileUpload.html
donde la upload.php será algo así como: http://www.msdevstudio.com/mywork/upload.rar
Q: Ahora fuera de su aplicación, tengo una mesa con varios artículos y desea que aparezca en una página cada una en un botón, es posible? Y en el caso de esta página tiene un número predeterminado de los botones de cómo hacer la paginación?
R: Ahora el monstruo de las respuestas (nota que escribí este artículo sin pruebas, es necesario cambiar muchos de los campamentos, pero la esencia está ahí:)
Parte I: Los botones en cada uno de los elementos de la "mesa"
En cuanto a los botones, puede poner en cada línea de DataGrid o cualquier elemento de una lista de cualquier otro componente, siendo la más común, casilla, listbox, o radioButton botón, ve esto:
http://www.returnundefined.com/files/ItemRendererExample/ (código fuente)
http://www.adobe.com/devnet/flex/quickstart/using_item_renderers/
incluso similar a lo que desea:
http://axel.cfwebtools.com/… / UsingTheItemRendererWithADataGrid.html
Estos vínculos tienen la opinión de activos de origen.
Parte II: Y en el caso de esta página tienen una serie de botones de paginación predefinindo cómo?
Qaunto para hacer el diseño, que depende en gran medida del tipo de sistema que usted tiene, si puede limitar php mysql (límite) a la lista sólo lo que quiere, simplemente crear una variable publica guardares para el inicio de la lista y otro con el número de entradas por página:
1: público var inicio: Número = 0;
2: var público porPagina: Número = 10;
3: / / que se llama el objeto remoto, usted tiene que decir al php para construir la petición SQL con las limitaciones.
4: / / flex, por ejemplo, en el botón y el seguimiento de la convocatoria para el personal goPag ( "siguiente"), o goPag ( "up"), (dependiendo del botón).
5: función goPag privado (donde: String): void (
6: si (donde == "siguiente") (
7: start = empezar 10;
8:)
9: si (donde == "up") (
10: inicio = inicio-10;
11: if (inicio <= 0) inicio = 0;
12:)
13: remoteObjectBusca.funcaoBusca.arguments.inicial = inicio; / / con reajuste de los valores
14: remoteObjectBusca.funcaoBusca.arguments.porPag = porPagina; / / con reajuste de los valores
15: remoteObjectBusca.funcaoBusca.send ();
16:)
donde la remoteObject será algo así como (amfphp):
1: <mx: RemoteObject id = "remoteObjectBusca" destino = fuente "amfphp" = "servico.class">
2: <mx: método name = "funcaoBusca" resultado = "(lidaDados (event))">
3: <mx: arguments>
4: <initial>
5: ( "0")
6: </ inicial>
7: <porPag>
8: ( "10")
9: </ porPag>
10: </ mx: argumentos>
11: </ mx: método>
12: </ mx: RemoteObject>
y donde la función del objeto remoto en php recibir estos parámetros y devolver la matriz de datos (el objeto):
1: función funcaoBusca ($ original, $ porPag) (
2: if (! Inicial | | $ inicial == NULL) $ original = 0;
3: if (! PorPag | | $ porPag == NULL) $ porPag = 10;
4:
5: $ con = mysql_connect ( "host", "usuario", "pass");
6: $ sel = mysql_select_db ( "Bdados");
7:
8: $ sql = "SELECT * FROM` `tabelaDados LÍMITE." Original dólares ".." $ PorPag;
9: $ res = mysql_query ($ sql);
10:
11: if ($ res) return mysql_fetch_array ($ res);
12: otra vuelta "Error";
13:)
sólo entonces hay que crear en el flex funçâo para leer los datos:
1: [bindable]
2: var dadosBusca público: Objeto;
3: pivate función lidaDados (caso: ResultEvent): void (
4: if (event. == Resultados "Error") (
5: / / error de búsqueda de datos
6:)
7: = dadosBusca otro evento. El resultado del objeto;
8: / / Desde Aquí tienes los datos disponibles en la variable dadosBusca
9: / / para el acceso a cada elemento utiliza dadosBusca [línea]. CampoDaBd;
10:)
Nota: Este código de la última respuesta se ha elaborado sin haber sido probado, no sé si contiene algunos errores .. pero sólo prueba, no sé si esto sería de su interés.
Bueno, creo que podría explicar todo .. se puede entender?
Ponga las respuestas en un nuevo puesto, ya que es una enorme respuesta, y, por tanto, puede ayudar a más gente.
Abraço.









44 Comentarios
Hola,
Lo sentimos, pero ahora sólo responder, pero yo estaba fuera por un tiempo en el trabajo y sólo volvió ontém.
Gracias por la ayuda. Y que la velocidad de respuesta. Gracias de nuevo.
En respuesta a la pregunta 4 (Como una imagen añadido a BD?), Por citar un enlace, que ha sido analizar el código, pero siempre me da "ERROR IO". No sé cómo utilizar el upload.php.
Me ayuda?
Un abrazo.
José Carlos Fonseca
Fafe - Portugal
En principio la upload.php que he dado a descargar deben trabajar sin ningún cambio, están los vínculos que hacen referencia a upload.php son así:
const privado _strUploadDomain: String = "http://codycodingcowboy.cahlan.com/";
const privado _strUploadScript: String = _strUploadDomain "archivos / upload.php";
y el directorio donde se ejecuta el. php debe tener el directorio myFileDir ya que en tales upload.php es:
$ File_path = $ _SERVER [ 'DOCUMENT_ROOT']."/ myFileDir ";
si después de esas conclusiones que sigan prestando error, indica si he hecho algunos cambios en el código para "investigar" mejor.
cumps.
Hola Juan,
De hecho no se upload.php en el directorio y no está seguro de la guía. Después de resolver ya no me da error. Esto confirma la subida de la imagen y la envía al lugar. Sin embargo, la verificación de si la imagen no existe. Voy a tratar de vêr ¿dónde está el problema.
En bd guardias de la forma en que el panorama en su conjunto, ¿verdad?
Ahora otra pregunta, (esperemos no aburrido !!!).
Como muestra el registro 1 bd textinput sin estar directamente en un DataGrid?
Obrigadão en busca de ayuda.
Usted ha sido fantástico.
Un abrazo.
José Carlos Fonseca
Fafe - Portugal
Sí, en la base de datos de Guardo el camino de la imagen debido a que muchas imágenes y sobrecargar la base de datos.
para mostrar un registro en la base de datos directamente en el campo de texto puede hacer lo siguiente, imagine la siguiente función (que recibe datos de remoteObject):
Imagino que el mando a distancia vuelve objeto (por ejemplo en php amfphp)
<? PHP
Dev función () (
/ / Ejemplo 1
Volver "Hola";
/ / Ejemplo 2
$ Datos [ 'nombre'] = "Soares";
$ Datos [ 'nombre'] = "Julie";
$ retorno de datos;
/ / Ejemplo 3
$ Datos [ 'antonio'] [ 'nombre'] = "doener";
$ Datos [ 'antonio'] [ 'edad'] = "19";
$ Datos [ 'Pedro'] [ 'nombre'] = "leer";
$ Datos [ 'Pedro'] [ 'edad'] = "25";
)
>
private function lidaDados (ev: ResultEvent): void (
/ / Ejemplo 1, recibe solamente una variable:
meucampo.text = ev.result
/ / Ejemplo 2, recibe una serie de variavels:
meuCampo.text = ev.result.nome; / / devuelve Soares
meuCampo.text = ev.result.prenome; / / Julie regresa
/ / El ejemplo 3, recibe una "matriz" de arrays:
meuCampo.text = ev.result.antonio.nome; / / devuelve valeria
meuCampo.text = ev.result.antonio.idade; / / devuelve 19
meuCampo.text = ev.result.joao.nome; / / devuelve leer
meuCampo.text = ev.result.joao.idade; / / devuelve 25
)
Para facilitar este proceso, crea una variable bindable:
[Bindable]
var DadosRo público: Objeto;
y después de la función que recibe datos de la RO, plantea
DadosRo = new Object ();
DadosRo = ev.result el Object;
y, por tanto, sus datos se puede acceder desde esta variable en cualquier parte de su código, y se actualizará cada vez que el remoteObject se llama.
En el ejemplo 3:
en lugar meuCampo.text = ev.result.joao.nome;
podrían utilizar:
meuCampo.text = DadosRo.joao.nome;
Es entender la ERP?
Abraço.
Bueno, no sé si ha seguido mi serie de tutoriales (http://msdevstudio.com/blog/2008/04/08/adobe-flex-a-partir-do-zero-parte-iv/), pero en el cuarto exemplifico un poco parte de la comunicación con un sistema de backend en php, tal vez puede ayudarnos a comprender mejor algunos detalles de Flex.
Juan Bueno,
Simplemente brillante. Trabajó direitinho.
Sí! He seguido todos sus tutoriales, son más. Si no se concerteza el aprendizaje de flex sería más tiempo. Gran ayuda, gracias!
(llega el piso!) Otra pregunta, tengo un viewStack a donde cada elemento es un componente. Estos componentes son activadas por un botón, lo que sucede después de visitar una vez, el próximo viaje no se actualiza.
Es posible soslayar esto?
Si lo desea, puede agregar mi correo electrónico para enviar mensajes instantáneos.
Gracias de nuevo.
José Carlos Fonseca
Fafe - Portugal
Carlos, disculpe única respuesta ahora .. He sido un poco ocupado con el trabajo: el pie es, por tanto, tal vez no estaba claro sus dudas, si el código se puso en su lugar no muy largo .. pero trataré de explicar más ..
un abrazo.
Hola Juan, ahora ya para las respuestas y usted no tiene que pedir disculpas.
EStive a revisar el código y creo que he descubierto el error.
Sin embargo le pido otra pregunta, estoy tratando de hacer algo que tendrán acceso a través de la conexión. ¿Cómo se muestran los ecrã1 al administrador, al ecrã2 para el usuario, y así sucesivamente. Hemos intentado, pero creo que todavía estoy verde en flex.
Gracias.
Un abraço.
José Carlos Fonseca
Fafe - Portugal
Carlos Bueno, puede hacerlo de 2 maneras, ahora depende de si o no a los consumidores mediante un backend (php, java, etc ..)
Sin Backend.
La solución puede pasar por definires un variavél general, o declaras la variavél, por ejemplo
var admin: Boolean = false;
Luego, justo cuando verificares siempre esta variable se solicita el acceso a una parte del administrador.
Lo ideal es separares su solicitud de al menos 3 estados; Usuario, administrador, usuario
A continuación, sólo hacer el registro, y las funciones que valida el login definires el variavél admin = true, y cambiar su estado a favor, en este caso currentState = "Admin", o si el usuario, admin = false; currentState = "Usuario";
Otra forma de hacer esto, se utiliza un backend en php por ejemplo, y hacer uso de los períodos de sesiones, a verificares si el usuario se identifica como administrador o no… pero es un poco más extensa, pero si usted ve lo que es la mejor manera, dice que debo hacer un pequeño ejemplo.
Sería lo que queríamos?
Abraço.
Hola Juan,
De hecho, la idea sería crear un backend en php y el uso de sesiones. Arranjas mí un ejemplo.
Gracias.
Abraço.
José Carlos Fonseca
Fafe - Portugal
Hola Juan,
A medida que su sistema inmobiliario a la caja de ingreso no es como una ventana emergente no. Puede utilizar usted? Traté de hacerlo, pero el cuadro no aparece desde arriba y no puede hacer el efecto final.
En aplicación de lo que estoy tratando de hacer es algo como:
-- ¿Acceder, entrar en diversas pantallas y me fuera sin cerrar el navegador. Al acceder de nuevo entrar en la última pantalla y yo no estaba en lo que está previsto que aparecen y los efectos son sólo la primera vez.
-- Y si está dentro de la aplicación y hacer F5 (actualizar) sale y pedirá que firme.
Esto es normal? Subvenciones para la contronar.
Gracias por tu ayuda y paciencia.
Un abrazo.
José Carlos Fonseca
Fafe - Portugal
Carlos Bueno, el efecto inicial es un simple panel, que se crea en la parte superior de la aplicación con visibilidad = false; se inició después de la final se muestra.
El efecto final es un simple mx: Mover (como el original), ambos con easingFunction = Elástico (mx.effects.easing.Elastic) y, a continuación, la visibilidad = false; termina cuando el efecto (se puede saber cuando el efecto termina con un eventListner la final, algo así como efeito.addEventListener (EffectEvent.EFFECT_END, funcao_que_esconde_o_panel);
en función de:
private function funcao_que_esconde_panel (evt: EffectEvent) (
painel_login.visibility = false;
efeito.removeEventListner (EffectEvent.EFFECT_END, funcao_que_esconde_o_panel);
)
Haga esto con hechos, usted debe eliminar la eventListners…
Cuando vueltas para hacer el signo de nuevo, la función que comprueba la validez del registro, se indica a regresar al país que desea alerta. this.currentstate = "StateEntrada";
Para realizar el F5 es normal que esto ocurra, lo que puede hacer es con este período de sesiones, marque esta vez en la entrada en el registro, y si la sesión es válida directa del Estado vai él quería, sin señal alguna del grupo, ya que el período de sesiones se celebrará durante la carga en la F5. Este fin de semana yo no tenía mucho tiempo para obtener un ejemplo, pero también lo puedo hacer.
Buenas tardes Juan,
Usted puede darme una mano?
Después de entrar en algunos textinputs, quería los datos surgen en un DataGrid sin registro en BD. Y escribir para la BD a través de un botón, grabar todo lo que está en el mismo DataGrid.
Gracias.
Carlos, el consejo es crear un ArrayCollection, trabajo y todos sus datos en ella, que sirve tanto para dataProvider DataGrid y, a continuación, enviar a la base de datos.
Tengo un ejemplo en el blog que explica cómo un arrayCollection pueden servir para trabajar con datos en la base de datos.
Véase: http://msdevstudio.com/blog/2008/03/25/flex-datagrid-operaes-no-dataprovider/
En el registro en la base de datos, enviar arrayCollection que como parámetro para la remoteObject.
Ve un ejemplo, si no logran, pone sus dudas
Abraço.
Hola Mario,
Tengo una arrayCollection con los datos.
No remoteObject sería?
() Datos
donde "los datos" es mi arrayCollection.
Y en PHP cómo sería para insertar en la tabla desde la arrayCollection está estructurado de la siguiente manera:
datos = [ "campo1, campo2, campo3"
"campo3, campo4, campo5"]
Gracias!
José Carlos Fonseca
Fafe - Portugal
Bueno!
Pero entonces, teniendo en cuenta las siguientes funciones en php
función inserta ($ datos) (
$ Sql = "INSERT INTO` tabla `(` campo1 `,` campo2 `,` campo3 `,` campo4 `,` campo5 `,` campo6 `) VALUES ( '$ datos [0] [campo1]', '$ datos [0] [campo2] ',' $ datos [0] [campo3] ',' $ datos [1] [campo4] ',' $ datos [1] [campo5] ',' $ datos [1] [campo6] ') ";
if (mysql_query ($ sql)) return "ok";
otra vuelta "error". mysql_error ();
)
entonces simplemente llame a las funciones del mando a distancia objeto, algo así como un método bien en
mx: remoteObject resto…… como objetivo, detination ..>
mx: método name = "insertar" resultado = "insereRes (event)">
MX: argumentos>
datos>
() Datos
/ Datos>
/ MX: argumentos>
/ MX: Método>
/ MX: remoteObject>
ps carecen de la "<" al comienzo de cada línea, porque para poner el código tiene que ser así!
Esto debería resolver su pregunta…
A arrayCollection es tratado como un array de arrays en php, o la típica matriz (en una escala de los datos) y una simple serie se trata como conjunto…
Esperimenta y al igual que pasó….
Hola Juan,
Yo estaba ausente por unos días por lo que es sólo ahora que responder.
Trabajó impcável! Gracias.
Estoy tratando de controlar los campamentos textinput antes de enviar los datos al DataGrid. Sólo me falta una prueba que no me lograr.
Compruebe si introduce la textinput ya existe en el DataGrid. Usted puede darme una mano?
Gracias.
José Carlos Fonseca
Fafe - Portugal
private function existe (texto: String): Boolean (
Var existeV: Boolean;
existeV = false;
for (var x: int = 0; x <meuDataProvider.lenght; x ) (
if (String (meuDataProvider [x]. campo_a_comparar) == texto) existeV = true;
)
Volver existeV;
)
sólo para verificar el uso
si (existe (String (meu_text_imput.text)) = true) (/ /) existe
else / / no existe.
Tenga en cuenta que no probado, pero debería funcionar sin problemas.
Sería esto?
Abraço.
Juan Bueno,
¡Perfecto! Mi error fue no ir a la Cadena con la condición de SI.
Otra solicitud de ayuda:
Tengo un jerárquica tablas de datos, o equipo-> marcas-> modelos
EX: Monitores -> ELOTouch -> 15 Polgadas
Crear una pantalla para mostrar estos datos el mejor, en mi opinión, sería un TreeControl DataGrid.
En TreeControl apareció Monitores -> ELOTouch -> 15 Polgadas DataGrid y los distintos datos de su equipo (número de serie, registro, fecha, etc)
Será muy duro para hacer esto? ¿Tiene usted algún ejemplo donde me pueden guiar? Aún no encontró nada en la red.
Gracias.
José Carlos Fonseca
Fafe - Portugal
Bueno, en realidad los ejemplos que están todos en MXML o XML también por qué nunca trabajó con el árbol, sino ver en este ejemplo:
http://blog.flexexamples.com/2007/12/03/using-an-array-as-a-data-provider-in-a-flex-tree-control/
como dataProvider tiene una variedad de objetos, esto puede ser recreado en el guión de acción y, a continuación, sólo tienes que mandar la salida de php en el mismo formato, que ya están adecuadamente para mandar el flex, debe servir sin problemas, pero usted tiene que construir la php en sus datos como objetos…
$ Array [ 'datos'] -> nombre = campoCategoria;
$ Array [ 'datos'] -> contenido [0] -> valor1 = Campo1;
$ Array [ 'datos'] -> contenido [1] -> valor2 = Campo2;
pero si he encontrado ningún ejemplo me doy cuenta….
Abraço.
Ni de respeto, ve aquí:
http://www.adobe.com/devnet/flex/quickstart/working_with_tree/
cerca del final de la página es la creación de un dataProvider para el árbol, justo en PHP utilizando la misma estructura de datos.
las fuentes es el siguiente:
http://www.adobe.com/devnet/flex/quickstart/working_with_tree/src/TreeKeepOpen/index.html
Abraço.