Los datos se muestran en el formulario mediante 'Labels' o etiquetas que se actualizan cuando pulsas un botón con el contenido de las celdas de la hoja.
El problema es que cuando quiero cambiar la propiedad 'Label' para mostrar otro texto en el formulario, no se refresca, en cambio los datos si que los carga bien.
Si volvemos a ejecutar el formulario, se ven los nuevos datos, pero duplica la ventana del formulario, tampoco he conseguido que me cierre la ventana usando .EndExec ni de ninguna forma.
En resumen ¿Cómo se puede refrescar la propiedad Label de una etiqueta en un formulario usando ooBasic?
Adjunto código y diseño del formulario y la tabla:
Código: Seleccionar todo
REM ***** BASIC *****
Option Explicit
Dim oDialogo As Object
Sub Main
'Cargamos el formulario inicialmente desde la hoja pulsando un botón al que le hemos asignado este código
DialogLibraries.LoadLibrary("Standard")
oDialogo=CreateUNODialog(DialogLibraries.Standard.Dialog1)
oDialogo.Execute()
oDialogo.Dispose
End Sub
' -------------------------------------------------------------------
Sub CargarPregunta
DialogLibraries.LoadLibrary("Standard")
oDialogo=CreateUNODialog(DialogLibraries.Standard.Dialog1)
Dim fila_dato As Integer, numpreguntas_dato As Integer, numaciertos_dato As Integer, numFallos_dato As Integer, nota_dato As Double
Dim preguntaDTA As String, respuestaaDTA As String, respuestabDTA As String, respuestacDTA As String, respuestadDTA As String
' Recuperar los datos de las estadísticas y la posición de la fila
fila_dato = ThisComponent.Sheets(0).GetCellByPosition(0,0).Value
numpreguntas_dato = ThisComponent.Sheets(0).GetCellByPosition(1,0).Value
numaciertos_dato = ThisComponent.Sheets(0).GetCellByPosition(2,0).Value
numFallos_dato = ThisComponent.Sheets(0).GetCellByPosition(3,0).Value
nota_dato = ThisComponent.Sheets(0).GetCellByPosition(4,0).Value
' Recuperar los datos y Mostrar la pregunta
preguntaDTA = ThisComponent.Sheets(0).GetCellByPosition(0,fila_dato).String
respuestaaDTA = ThisComponent.Sheets(0).GetCellByPosition(1,fila_dato).String
respuestabDTA = ThisComponent.Sheets(0).GetCellByPosition(2,fila_dato).String
respuestacDTA = ThisComponent.Sheets(0).GetCellByPosition(3,fila_dato).String
respuestadDTA = ThisComponent.Sheets(0).GetCellByPosition(4,fila_dato).String
With oDialogo.Model
.pregunta.BackgroundColor(&HFF0000)
.pregunta.Label = preguntaDTA
.respuestaa.Label = respuestaaDTA
.respuestab.Label = respuestabDTA
.respuestac.Label = respuestacDTA
.respuestad.Label = respuestadDTA
.numpreguntas.Label = numpreguntas_dato
End With
End Sub
' -------------------------------------------------------------------
Sub Aceptar
' El botón aceptar aún no está programado, esto son pruebas para ver si se repinta el formulario
DialogLibraries.LoadLibrary("Standard")
oDialogo=CreateUNODialog(DialogLibraries.Standard.Dialog1)
oDialogo.Model.pregunta.Label
oDialogo.Model.pregunta.Label = "Pregunta!!!!!"
oDialogo.EndExecute() ' No funciona!! no cierra el formulario
oDialogo.Execute() ' Vuelve a ejecutar el formulario y aparece otra ventana, ahora sí con los nuevos datos
End Sub