Spanish ¿Es posible mas de un "Layout" en un mismo modulo de clase B4XPage ?

Sergio Castellari

Active Member
Licensed User
Hola,
Actualmente utilizo un codigo de clase B4XPage donde cargo un solo "layout".
¿Se pueden tener varios "layout" en una misma pagina?
¿Algun ejemplo de codigo?

Saludos
 

José J. Aguilar

Expert
Licensed User
Hola Sergio. Puedes cargar varios layouts igual que cargas el ptimero. O cargar un layout u otro según alguna condición.
Mira mi ejemplo de login, en la misma Bx4Page, si no te habías logueado con anterioridad, carga el layout de login, si ya te habías logueado, carga otro.

saludos,
 

Omar Parra A.

Expert
Licensed User
Longtime User
Hola,
Actualmente utilizo un codigo de clase B4XPage donde cargo un solo "layout".
¿Se pueden tener varios "layout" en una misma página?
¿Alguna vez ejemplo de codigo?

Saludos
Revisa el ejemplo y te dará una idea.


Saludos.
 

Omar Parra A.

Expert
Licensed User
Longtime User
y si desea usar varias B4Xpage.

Mira este ejemplo:

 

Sergio Castellari

Active Member
Licensed User
Hola Sergio. Puedes cargar varios layouts igual que cargas el ptimero. O cargar un layout u otro según alguna condición.
Mira mi ejemplo de login, en la misma Bx4Page, si no te habías logueado con anterioridad, carga el layout de login, si ya te habías logueado, carga otro.

saludos,
Hola @José J. Aguilar !!!
Gracias por tu sugerencia. Estuve mirando mucho tu ejemplo, por que fue el punto de partida para migrar el viejo proyecto originalmente con "activity" a B4Xpages.
Así que fue de GRAN ayuda !!!

Creo que no me estoy expresando correctamente o seguramente no entiendo bien el funcionamiento:
Situación:
a) Pretendo (pretendái) utilizar un SOLO código de clase (*.bas) donde tener varios "layouts"...peerooo...
b) Me encontré que si bien puedo cargar distintos "layout" (con la guia de varios colegas), los mismos deberían tener DISTINTOS nombres de vistas, por que sino entran en conflicto (básicamente se ejecuta el código de la vista del anterior Layout...y no el de la vista que cargué.
c) Por lo tanto, desistí por el momento utilizar mas de un layout para una misma B4Xpage y direcamente lo hago en una nueva B4XPage

Asi que, si bien lo resuelvo de esta manera...ahora tengo nuevas preguntas que las haré en un hilo nuevo.
Nuevamente mil gracias por tu sugerencia!os vemos!!!
 

Sergio Castellari

Active Member
Licensed User
y si desea usar varias B4Xpage.

Mira este ejemplo:

Hola @oparra !!!
GRACIAS!!!...voy a leer y mirar los LINKs que me pasas. Necesito "entender" mucho mejor las B4XPages.
Pero bueno, como le conteste a José Aguilar, desistí por el momento de varios Layout en una misma pagina.

Seguramente al leerlos haré alguna otra pregunta!
Abrazos y deseo que todo vaya bien por alla!
 

José J. Aguilar

Expert
Licensed User
los mismos deberían tener DISTINTOS nombres de vistas

¿Puedes contarnos qué es lo que quieres hacer? Quizás así veamos más claro lo que necesita y alguien vea una solución distinta. Es que no veo para qué necesitas tener varios layouts con los mismos nombres de vistas. ¿Te refieres a qué necesitas que un mismo layout tenga distinto orden (o disposición) de los campos? Por ejemplo, necesitas en uno: "Nombre y Apellidos" que estén uno a la izquierda y la derecha y otro en que "Nombre y Apellidos" estén encima uno del otro?
 

Sergio Castellari

Active Member
Licensed User
¿Puedes contarnos qué es lo que quieres hacer? Quizás así veamos más claro lo que necesita y alguien vea una solución distinta. Es que no veo para qué necesitas tener varios layouts con los mismos nombres de vistas. ¿Te refieres a qué necesitas que un mismo layout tenga distinto orden (o disposición) de los campos? Por ejemplo, necesitas en uno: "Nombre y Apellidos" que estén uno a la izquierda y la derecha y otro en que "Nombre y Apellidos" estén encima uno del otro?
Básicamente la intención era que dentro de una B4XPage (que requiere de un archivo *.bas), llamar a a otro Layout. Todo esto para "no" crear otra B4XPage.
Pero este segundo Layout, tenia los mismos nombres de vistas, ya que así lo había diseñado. Con lo cual, cuando lo cargué, al presionar algunos controles "llamaban" al código anteriormente creado y obviamente esto tiene lógica pero no es lo que deseaba.
Ahí me di cuenta, que si deseo usar mas de un Layout en una misma B4Xpage, debo usar nombres de vistas diferentes.
Por ese motivo, desistí en este caso, pero tendré que hacerlo mas adelante para otras funcionalidades de la APP.
La idea final de todo esto, era usar menos archivos (*bas) ya que después se dificulta su visualización y consulta dentro del IDE cuando son muchos.

Abrazos totales!!
 

Sergio Castellari

Active Member
Licensed User
Claro que este ejemplo funciona.
En este caso muy simple, el contenido del SUB Label1_Click, por ejemplo es un simple muestra de texto.
Pero, en mi App, Label1_Click del Layout UNO, hace una cosa totalmente distinta del Label1_Click del Layout DOS.
De todas formas, cuando me di cuenta de esto (obviamente ya tenia hecho el segundo Layout), decidi seguir con otra B4XPage y listo.

Creo que una aplicacion grande (con varias decenas o quizas centenas de Layouts, conviene hacer diseños con nombres de vistas bien determinados para poder cargarlos en una misma B4XPage y hacer referencia especifica)

Gracias por tu seguimiento!!!...Voy progresando mucho, ya tengo varias Pages funcionales en mi App (y lo mas importante que logré que funcionara jRDC2 Multi base de datos!!)
Abrazos totales y a seguir programando en B4X!!!!









 

José J. Aguilar

Expert
Licensed User
Pero, en mi App, Label1_Click del Layout UNO, hace una cosa totalmente distinta del Label1_Click del Layout DOS.

Bueno, eso lo podrías solucionar con una variable por ejemplo "Private LayoutCargado as String" y luego hacer algo como:

B4X:
Sub Label1_Click
    Select Case LayoutCargado
        Case "Layout1"
            ...
        Case "Layout2"
            ...
    End Select
End Sub

conviene hacer diseños con nombres de vistas bien determinados para poder cargarlos en una misma B4XPage y hacer referencia especifica

Recuerda siempre que un proyecto grande, puedes gestionarlo en el IDE ordenándolo un poco:

1631129727751.png


De todas formas, no hay problema en crear muchas B4XPages, al fin y al cabo, siempre estás en la misma actividad. Lo que era más difícil de gestionar era el tener que estar cambiando de Activity, debido al ciclo de vida de Android. Con B4XPages puedes crear todas las que quieras sin problemas.

saludos,
 

Sergio Castellari

Active Member
Licensed User
ahhhhhh!!! esto me gustó!!!!

Sub Label1_Click
Select Case LayoutCargado
Case "Layout1"
...
Case "Layout2"
...
End Select
End Sub

NO se me habia ocurrido....aplausos!!!!

y esto???
1631131808569.png


¿Como es que vos tenes distintas carpetas??????.....Yo solo tengo Default Group....
Esto es interesante:
1) ¿ Podes crear distintas carpetas ?
2) ¿ Podes mover grupos de archivos a las carpetas que deseas ?

Por que esto tiene mas color cuando el proyecto comienza a ser grande...son muchos los archivos que intervienen...

MUCHISIMAS gracias @José J. Aguilar !!
 

Sergio Castellari

Active Member
Licensed User
De todas formas, no hay problema en crear muchas B4XPages, al fin y al cabo, siempre estás en la misma actividad. Lo que era más difícil de gestionar era el tener que estar cambiando de Activity, debido al ciclo de vida de Android. Con B4XPages puedes crear todas las que quieras sin problemas.
Esto lo termine de ENTENDER hoy!!!!....ya que tenia varios links para leer del tema, y lo comprendí hace un rato!!
Dije: ENCONTRÉ el beneficio a las B4XPages!!!!

Me quedan algunos puntos que voy a consultar mas adelante con el tema Variables Globales de B4XPages entre distintas B4XPages....NO HE LOGRADO que funcionen como se supone (o entiendo) debieran funcionar.

Saludosss!
 

Sergio Castellari

Active Member
Licensed User
Genial!!!
Logré crear nuevas carpetas y empezar a agrupar por reglas de negocio!
Tambien entendi que puedo hacer lo mismo con los MODULOS !!!!

Esto me gusta!!!...ayuda mucho a ordenar y encontrar enseguida el BAS que necesitas (y hacer seguiemiento)

Muy productivo!!

Nos vemos!!!
 
Top