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:
Public Formulario As PreferencesDialog
- Inicialízalo sólo una vez, bien en B4XPage_Created (si estás con B4XPages) bien en Activity_Create
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:
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:
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,