Saltar navegación

Documentación de FlexPro 2025

Presentación de diagramas en un formulario

Este ejemplo muestra una visualización de datos de baja frecuencia medidos o calculados.

Se añade un nuevo par de valores (tiempo, valor de medición) a una señal una vez por segundo. A continuación, se actualiza y refresca en el formulario un diagrama que contiene esta señal en forma de curva. Mientras el conjunto de datos con los valores registrados contenga menos de 100 valores, se mostrará la señal completa; en caso contrario, solo se mostrarán los últimos 100 valores.

El código de ejemplo y los objetos FlexPro asociados se almacenan en la base de datos Visualize.fpd. El nombre de la ruta de acceso de la base de datos del proyecto es normalmente C:\Users\Public\Documents\Weisang\FlexPro\2025\Examples\VBA\Visualize\Visualize.fpd o C:>Usuarios>Acceso público>Documentos públicos>Weisang>FlexPro>2025>Examples>VBA>Visualize>Visualize.fpd.

Creación de un formulario para la visualización del diagrama

El formulario requerido solo contiene un control de visualización, que posteriormente se hace cargo de la visualización del diagrama, así como un botón para cerrar el formulario.

Cuando se inicializa el formulario, se inicializa el generador de números aleatorios.

Private Sub UserForm_Initialize()

    ' init random number generator (needed for the sample data)

    Randomize

    nTimerID = SetTimer(0, 0, 1000, AddressOf UpdateProc)

End Sub

Private Sub UserForm_Terminate()

    KillTimer 0, nTimerID

End Sub

Insertar y actualizar el diagrama

En el procedimiento UpdateProc, primero se utiliza

On Error Resume Next

para impedir que se cancele el procedimiento en caso de error. Esto es necesario debido al uso de la API SetTimer, para garantizar que la llamada al procedimiento siempre vuelva a Windows. A continuación, se comprueba si la señal de destino de los datos ya existe en la carpeta raíz de la base de datos. Si no es el caso, se crea y se inicializa; de lo contrario, se inserta una nueva fila en la señal.

If oSignal Is Nothing Then

    Set oSignal = ActiveDatabase.RootFolder.Add("Signal", fpObjectTypeDataSet)

    oSignal.DataStructure = fpDataStructureSignal

    oSignal.DataType(fpDataComponentX)= fpDataTypeCalendarTime

    oSignal.DataType(fpDataComponentY) = fpDataTypeFloat64

    ' we now have a signal with one value

Else ' increase the rows of the signal

    oSignal.NumberOfRows = oSignal.NumberOfRows + 1

End If

A continuación, se calcula el nuevo valor y se añade a la señal existente con ayuda del objeto Range (véase también Trabajar con conjuntos de datos).

' you could acquire the data here, in this sample we calculate

' the new value pair

oSignal.Value(fpDataComponentX, , oSignal.NumberOfRows) = Now

oSignal.Value(fpDataComponentY, , oSignal.NumberOfRows) = (fMax - fMin + 1)_

                                                          * Rnd + fMin

Al final de la función, se actualiza el diagrama que se mostrará en el formulario y la propiedad Picture del diagrama se asigna a la propiedad Picture del control de visualización del formulario.

Set oDiag = ActiveDatabase.RootFolder.Object("Diagrama 2D.2D")

oDiag.Update

Display.DiagramImage.Picture = oDiag.Picture

Objetos FlexPro necesarios para la visualización

Para visualizar de la forma descrita anteriormente, se crearon un objeto de diagrama y un objeto de fórmula en la carpeta raíz de la base de datos. El diagrama sirve de base para la presentación en el formulario. Contiene exactamente una curva consistente en la señal proporcionada por la fórmula LastValuesOfSignal. La fórmula comprueba si el número de valores de la señal es superior a un máximo libremente seleccionable (en el ejemplo: 100). En este caso, la fórmula solo devuelve los 100 últimos valores de la señal; en caso contrario, la señal completa.

nMax = 100

nCount = NumberOfRows(Signal)

if nCount < nMax then

 return Signal

else

 return Signal[-nMax, -1]

end