Comunidad Gambas-es
Ejemplo de uso de Settings y paso de datos entre formularios - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html)
+--- Tema: Ejemplo de uso de Settings y paso de datos entre formularios (/thread-1794.html)



Ejemplo de uso de Settings y paso de datos entre formularios - Shell - 20-09-2024

Buenas!

Viendo un ejemplo para la terminal me dio por hacerlo con formularios, añadirle la posibilidad de
poder pasar información entre los formularios y agregar la posibilidad de grabar al salir
la información en un archivo setting.

El ejemplo consiste en una recepción de una consulta médica.
Se agregan nombres de pacientes y se van llamando a estos según van llegando.
Ah y si queda alguno y se ha cerrado la consulta, que vuelva mañana.

[Imagen: OPw3mse.png]

Los nombres de los pacientes no se eliminan de la lista hasta pasar el tiempo estipulado.
Van en orden de llegada.

Si cerramos la aplicación se guarda la lista de pacientes que no fueron atendidos.

Creo que la forma de pasar información de un formulario a otra es la más adecuada,
aunque sea poca en este caso.

Formulario FMain:

Código:
' Gambas class file

Const TITULO As String = "Recepción de la consulta"
Const TIEMPOMAXCONSULTA As Integer = 5

Private tiempo As Integer
Property nombre As String Use $nombre

Public Sub Form_Open()

  Settings.Read(Me)

  lstboxPacientes.List = Settings["ListaPacientes", []]

  'No se puede llamar a pacientes si no existen
  If lstboxPacientes.Count = 0 Then btnCallNext.Enabled = False

End

Public Sub Opciones_Click()

  Select Case Last.tag
    Case 0
      'Añadir un nuevo paciente
      RegistrarPaciente()
    Case 1
      If lstboxPacientes.Count >= 1 Then
        Timer1.Delay = 1000
        Timer1.Start
        'Si ya no hay más pacientes, desactivamos la opción de llamar a otros pacientes
        If lstboxPacientes.Count = 0 Then btnCallNext.Enabled = False
      Endif
    Case 2
      Me.Close
  End Select

End

Public Function RegistrarPaciente() As String

  Dim fpaciente As New FormPaciente

  fpaciente.formu = Me
  fpaciente.ShowModal()

  lstboxPacientes.Add(Me.nombre)
  If Not btnCallNext.Enabled Then btnCallNext.Enabled = True

End

Public Sub Timer1_Timer()

  If tiempo = TIEMPOMAXCONSULTA Then
    lstboxPacientes.Remove(0)
    If lstboxPacientes.Count = 0 Then btnCallNext.Enabled = False
    tiempo = 0
    Me.Title = TITULO
    Timer1.Stop
  Else
    Me.Title = "Paciente: " & lstboxPacientes.List.First & " en la consulta..." & tiempo
    tiempo += 1
  Endif

End

Public Sub Form_Close()

  Settings.Write(Me)
  Settings["ListaPacientes"] = lstboxPacientes.List
  Settings.Save()

End

Formulario de entrada del nombre del paciente

Código:
Property formu As Object Use $formu

Public Sub Form_Open()

End

Public Sub btnEntrarSalir_Click()

  If IsNull(Trim(txtbPaciente.text)) Then
    txtbPaciente.Text = ""
    Stop Event
  Else
    $formu.nombre = Trim(txtbPaciente.Text)
    Me.Close
  Endif

End

Public Sub txtbPaciente_KeyPress()

  If Key.Code = Key.Enter Or Key.Code = Key.Return Then btnEntrarSalir_Click()

End

Para alinear mejor los controles y situarlos en el formulario del paciente, usé organizadores.

Puede darse el caso cuando ejecutamos un formulario es que veces cuando se presentan
los controles ( incluso usando organizadores) estos queden más a un lado que otro con respecto
al superior. Esto es a veces es una lata y requiere algo de tiempo. Rolleyes

Saludos


RE: Ejemplo de uso de Settings y paso de datos entre formularios - Shordi - 22-09-2024

Ta guay. ¿En qué caso no se alinean? A mí me sale bien y nunca me ha pasado eso que dices.


Por cierto...¿Habitación de espera? ¿Qué pasó con la vieja y querida/odiada Sala de Espera? Big Grin Big Grin Tongue


RE: Ejemplo de uso de Settings y paso de datos entre formularios - Shell - 22-09-2024

(22-09-2024, 08:08)Shordi escribió: ¿En qué caso no se alinean? A mí me sale bien y nunca me ha pasado eso que dices.

Alinear se alinean pero a veces es complicado encontrar la forma de que estos queden como quieres a la primera.
Sobre todo cuando usas más de un organizador, como están distribuidos estos con respecto unos a otros, los controles de
cada uno de los organizadores, que si quieres que queden todos los controles alineados, de ambos organizadores, etc.
Lleva su tiempo. Supongo que no solo me ha pasado a mí. El diseño de un formulario requiere tiempo y dedicación,
entretiene bastante.
 
(22-09-2024, 08:08)Shordi escribió: Por cierto...¿Habitación de espera? ¿Qué pasó con la vieja y querida/odiada Sala de Espera?

Fue un problema de traducción por mi parte. El ejercicio era para Python, un libro en inglés, como
tantos que no se traducen. Sad

Si traduces literalmente, puede ser habitación. Pero si luego lo ves más claro,es sala de espera.
Cosas que al principio puedes no darte cuenta. Y luego dices, ah, sala de espera!.

La sentencia es esta: "Doctor’s Waiting Room".

Este año, continuo con A2 o comienzo con este en la academia oficial de idiomas.
Mi profe de A1 dice que a veces soy "muy literal". Smile . Creo que para entender bien el idioma,
habría que haber nacido allí o al menos vivir unos años en el lugar.

Saludos


RE: Ejemplo de uso de Settings y paso de datos entre formularios - Shordi - 22-09-2024

Cita:Este año, continuo con A2 o comienzo con este en la academia oficial de idiomas.
Sí señor: esfuerzo, iniciativa y entusiasmo.