Spanish Diseño con 2 vistas para mostrar/ingresar fechas mas un editext

Sergio Castellari

Active Member
Licensed User
Necesito crear una pantalla donde tenga 2 vistas para ingresar/editar fechas, un editText y un boton para "procesar".
No tengo idea como hacer para "cargar" las fechas. He leido sobre una libreria de "dialogos" pero no encuentro un ejemplo para cargar fechas.
Saludos
 

Gabino A. de la Gala

Well-Known Member
Licensed User
Longtime User
Necesito crear una pantalla donde tenga 2 vistas para ingresar/editar fechas, un editText y un boton para "procesar".
No tengo idea como hacer para "cargar" las fechas. He leido sobre una libreria de "dialogos" pero no encuentro un ejemplo para cargar fechas.
Saludos

Pégale un vistazo a este link:

Cuentas incluso con un diseñador de formularios para facilitarte el proceso de definición de los campos a introducir.
 
Last edited:

Sergio Castellari

Active Member
Licensed User
Hola @Gabino A. de la Gala !!!,
Gracias, pero creeme que no me doy cuenta. Lo que necesito son dos "vistas" donde pueda "cargar" fechas y no me doy cuenta como diseñarlo con el diseñador. Ya he utilizado la vista "editext", tanto para numeros como texto. Pero como hacerlos con fecha no me doy cuenta. Disculpa mi ignorancia.
Saludos,
 

Gabino A. de la Gala

Well-Known Member
Licensed User
Longtime User
Hola @Gabino A. de la Gala !!!,
Gracias, pero creeme que no me doy cuenta. Lo que necesito son dos "vistas" donde pueda "cargar" fechas y no me doy cuenta como diseñarlo con el diseñador. Ya he utilizado la vista "editext", tanto para numeros como texto. Pero como hacerlos con fecha no me doy cuenta. Disculpa mi ignorancia.
Saludos,
¿No te vale con un formulario como el de la imagen que adjunto?. En él puedes definir diferentes tipos de datos.
 

Attachments

  • Screenshot_20210824-034849.jpg
    Screenshot_20210824-034849.jpg
    196 KB · Views: 232

josejad

Expert
Licensed User
Longtime User
Hola Sergio:

Como te indica Gabino creo que es la forma más fácil. No sólo puedes añadir fechas, sino otro tipo de campos (numéricos, contraseñas, etc...)
Bájate el Forms Builder y ejecútalo con B4J, te saldrá una pantalla como esta, y añade dos campos "Date". Puedes ir añadiendo más campos de distintos tipos con el +, y puedes ir viendo cómo queda el formulario pulsando el icono del portátil a la derecha del +

1629784469052.png


Después ve al menú "File" y guarda el archivo .json con "Save As". Por ejemplo usaremos "form_fechas.json". Puedes crear más formularios.
Copia ese archivo a tu proyecto (en la carpeta "Shared files" si estás con un proyecto B4XPages, o en "Files" si estás en un proyecto "normal")

Luego mira el ejemplo B4A de B4XPreferencesDialog para ver cómo mostrar ese diálogo, pero, resumiendo:

- Declara una variable diálogo:
B4X:
Public Formulario As PreferencesDialog

- Inicialízalo sólo una vez, bien en B4XPage_Created (si estás con B4XPages) bien en Activity_Create
B4X:
Formulario.Initialize(Root, "Fechas", 300dip, 300dip) 'Puedes darle el nombre que quieras. Cambia Root por Activity si no es un proyecto B4XPages

- Cuando lo vayas a mostrar, carga el archivo .json que creamos antes con el Form Builder:
B4X:
Formulario.LoadFromJson(File.ReadString(File.DirAssets, "form_fechas.json"))
Dim mapFechas 'En este mapa se almacenan las fechas que elija el usuario en el formulario. Si por ejemplo usas un mapa que sea una variable global, y ya tiene fechas, se mostrarán esas fechas en el formulario por defecto. La clave del mapa será la "key" que usaste en el Form Builder (fíjate que en la imagen de arriba serían fecha_inicio y fecha_fin)
mapFechas.Initialize

- Muestras el formulario:
B4X:
Wait For (Formulario.ShowDialog(mapFechas, "OK", "CANCELAR")) Complete (Result As Int)
    If Result = xui.DialogResponse_Positive Then
        Log(mapFechas)
    End If

Así explicado puede parecer engorroso, pero verás como es más fácil de lo que parece. Lo bueno, que ya puedes usar el mismo formulario en distintas partes del programa para mostrar otros formularios simplemente cargando otros .json.

saludos,
 

Sergio Castellari

Active Member
Licensed User
Hola Sergio:

Como te indica Gabino creo que es la forma más fácil. No sólo puedes añadir fechas, sino otro tipo de campos (numéricos, contraseñas, etc...)
Bájate el Forms Builder y ejecútalo con B4J, te saldrá una pantalla como esta, y añade dos campos "Date". Puedes ir añadiendo más campos de distintos tipos con el +, y puedes ir viendo cómo queda el formulario pulsando el icono del portátil a la derecha del +

View attachment 118181

Después ve al menú "File" y guarda el archivo .json con "Save As". Por ejemplo usaremos "form_fechas.json". Puedes crear más formularios.
Copia ese archivo a tu proyecto (en la carpeta "Shared files" si estás con un proyecto B4XPages, o en "Files" si estás en un proyecto "normal")

Luego mira el ejemplo B4A de B4XPreferencesDialog para ver cómo mostrar ese diálogo, pero, resumiendo:

- Declara una variable diálogo:
B4X:
Public Formulario As PreferencesDialog

- Inicialízalo sólo una vez, bien en B4XPage_Created (si estás con B4XPages) bien en Activity_Create
B4X:
Formulario.Initialize(Root, "Fechas", 300dip, 300dip) 'Puedes darle el nombre que quieras. Cambia Root por Activity si no es un proyecto B4XPages

- Cuando lo vayas a mostrar, carga el archivo .json que creamos antes con el Form Builder:
B4X:
Formulario.LoadFromJson(File.ReadString(File.DirAssets, "form_fechas.json"))
Dim mapFechas 'En este mapa se almacenan las fechas que elija el usuario en el formulario. Si por ejemplo usas un mapa que sea una variable global, y ya tiene fechas, se mostrarán esas fechas en el formulario por defecto. La clave del mapa será la "key" que usaste en el Form Builder (fíjate que en la imagen de arriba serían fecha_inicio y fecha_fin)
mapFechas.Initialize

- Muestras el formulario:
B4X:
Wait For (Formulario.ShowDialog(mapFechas, "OK", "CANCELAR")) Complete (Result As Int)
    If Result = xui.DialogResponse_Positive Then
        Log(mapFechas)
    End If

Así explicado puede parecer engorroso, pero verás como es más fácil de lo que parece. Lo bueno, que ya puedes usar el mismo formulario en distintas partes del programa para mostrar otros formularios simplemente cargando otros .json.

saludos,
Hola @José J. Aguilar !!!!
Tu explicación es GENIAL. Creo que es directamente un Mini TUTORIAL. Pero creo que estos dialogos los voy necesitar mas adelante, cuando tenga que diseñar la pagina de configuraciones.
En esta ocacion, necesito que una pagina (antes activity) todas las vistas estén incrustadas 2 datepicker, un editext, un boton e inclusive debera ir una B4XTable.
En algun momento me pareció ver una vista tipo DatePicker pero Yo solo tengo estos:
Controles.png


Disculpa si no me doy cuenta de algo.
Saludos y nuevamente gracias!
 

Gabino A. de la Gala

Well-Known Member
Licensed User
Longtime User
@Gabino A. de la Gala ,
Gracias por tu ayuda, pero creo que no es lo que necesito en este momento para esta Pagina.
Necesito que los controles (vistas) estén en la misma Pagina (incrustados).
Tiene que existir alguna forma de un DatePicker.

Saludos y gracias!
Aquí tienes un video donde puedes ver todas las posibilidades de formularios "precocinados" por así decirlo.


Hay un botón donde te saca el formulario para seleccionar fechas. Ese formulario, en lugar de lanzarlo en el evento onclick del botón lo lanzas cuando el edit de fecha coja el foco y ya te podría servir.
 

Sergio Castellari

Active Member
Licensed User
Aquí tienes un video donde puedes ver todas las posibilidades de formularios "precocinados" por así decirlo.


Hay un botón donde te saca el formulario para seleccionar fechas. Ese formulario, en lugar de lanzarlo en el evento onclick del botón lo lanzas cuando el edit de fecha coja el foco y ya te podría servir.
Gracias @Gabino A. de la Gala !!!
Con esto tengo por donde empezar y creo que me va ayudar a resolver el tema.
Ya te contaré como me fué!
GRACIAS!!!
 
Top