Delphi, C++ Builder & .NET Parte de sgcUI

sgcGauges, el panel de instrumentos para Delphi, C++ Builder & .NET

Diez tipos de indicador para cuadros de mando y paneles HMI, del dial radial al anunciador. Dibuja bandas verdes, ámbar y rojas, lanza una alarma cuando un valor cruza un límite, deja que la aguja se deslice hasta cada nueva lectura y renderiza el mismo indicador a PNG o SVG en un servidor.

VCL, FireMonkey, WinForms, WPF, AvaloniaDiez tipos de indicador, seis en CommunityPNG y SVG sin ventanaIncluido en sgcUI Professional
Demo HMIPanel con depósitos, bombas, barras de LED y un anunciador

Todo lo que necesita un panel de instrumentos

Once capacidades en cuatro grupos, con los nombres reales de clases y propiedades y un enlace a cada tema de ayuda. Las funciones marcadas como registradas no están en la compilación .NET Community gratuita.

Instrumentos y escalas

Diez tipos sobre un mismo modelo, con rangos, estilos y varios punteros.

Galería de sgcGauges con indicadores radial, anillo, brújula, reloj, medidor VU, lineal, digital y LED

Instrumentos y escalas

Diez tipos de instrumento en una sola biblioteca

Los cuadros de mando, los paneles HMI y los bancos de pruebas necesitan instrumentos distintos: un dial para la velocidad, una barra para el nivel, una lectura digital para la frecuencia, una lámpara para una bomba, un panel de mosaicos para las alarmas. sgcGauges incluye diez tipos que comparten un mismo modelo, con las mismas escalas, punteros, rangos, umbrales y temas. Aprende una API y todos los instrumentos se comportan igual.

  • TsgcVCLRadialGauge, TsgcVCLLinearGauge, TsgcVCLDigitalGauge, TsgcVCLLEDGauge, TsgcVCLLEDBarGauge, TsgcVCLProgressRingGauge
  • TsgcVCLVUMeterGauge, TsgcVCLClockGauge, TsgcVCLCompassGauge, TsgcVCLAnnunciatorGauge
  • Cada tipo existe también para FireMonkey y, en .NET, para WinForms, WPF y Avalonia
  • Un modelo independiente del framework por tipo, como TsgcRadialGauge, para uso sin ventana

Community incluye los indicadores radial, lineal, digital de 7 segmentos, LED, barra de LED y anillo de progreso. El medidor VU, el reloj, la brújula y el anunciador son de la edición registrada.

Leer el tema de la ayuda
Velocímetro de 0 a 260 km/h con rangos verde, ámbar y rojo

Instrumentos y escalas

Rangos de colores en cualquier escala

Un operario lee un indicador de un vistazo solo cuando el verde, el ámbar y el rojo dicen dónde debería estar el valor. Da a una escala cualquier mínimo y máximo, define el intervalo principal y las marcas secundarias, y añade rangos de colores para las bandas que importan. Los rangos tienen su propio grosor y título, y la escala puede ir invertida o colocar sus marcas por dentro o por fuera. Los rangos se dibujan en la propia escala, así que también aparecen en la salida PNG y SVG y en ambos temas sin trabajo adicional.

  • Scales[0].Ranges.Add con StartValue, EndValue, Color, Thickness y Caption
  • TsgcGaugeScale: Minimum, Maximum, MajorInterval, MinorCount, Reversed
  • LabelFormat y ShowLabels para las etiquetas de la escala
  • StartAngle y SweepAngle dan forma al arco de un indicador radial
Leer el tema de la ayuda
Tres indicadores lineales verticales: gráfico de bala, termómetro y barra

Instrumentos y escalas

Gráfico de bala, termómetro y barra en un solo control

Los niveles, las temperaturas y el progreso frente a un objetivo son lineales por naturaleza. Un indicador lineal dibuja tres estilos: una barra simple, un termómetro con bulbo y un gráfico de bala que compara el valor con una marca de objetivo. Ponlo en horizontal o en vertical para encajarlo en un depósito, una barra lateral o una fila de tabla. El objetivo de la bala es una propiedad, no un puntero adicional, por lo que el gráfico de bala funciona también en la edición Community gratuita. Un indicador pequeño cabe en una celda de cuadrícula o en un mosaico de cuadro de mando.

  • LinearStyle: glsBar, glsThermometer o glsBullet
  • Target dibuja la marca de objetivo de la bala, en todas las ediciones
  • Orientation y BulbSize
  • Los rangos y umbrales funcionan exactamente igual que en el indicador radial
Leer el tema de la ayuda
Indicador radial con una aguja para el valor real y una marca para el objetivo

Instrumentos y escalas Solo registrada

Varias escalas y punteros en un mismo indicador

Algunas lecturas solo tienen sentido una junto a otra: real frente a objetivo, entrada frente a salida, horas y minutos. Un indicador puede llevar más de una escala y más de un puntero, y cada puntero elige su escala y su estilo: una aguja, una marca o una barra. Los umbrales pueden vigilar cualquier puntero. Un dial de doble puntero ahorra espacio en paneles saturados y hace visible de inmediato la diferencia entre objetivo y valor real.

  • Colección Pointers de TsgcGaugePointer con Kind, NeedleStyle, MarkerShape y ScaleIndex
  • Colección Scales con Radius y Offset por escala
  • PointerIndex en los umbrales y en los enlaces de datos
  • Los formularios hechos con varios punteros se siguen cargando en Community, que dibuja solo el primero

Community dibuja una escala y un puntero por indicador; la edición registrada los dibuja todos.

Leer el tema de la ayuda

Alarmas, movimiento y datos en vivo

Indicadores que reaccionan: umbrales, animación, pantallas industriales y fuentes en vivo.

Alarmas, movimiento y datos en vivo

Alarmas con histéresis, lanzadas en el hilo principal

Una presión que oscila alrededor de su límite no debe disparar cien alarmas por minuto. Un umbral tiene un valor, una dirección y una banda de histéresis: se dispara una vez cuando el valor lo cruza y solo se rearma cuando el valor ha retrocedido esa banda. OnThreshold se ejecuta siempre en el hilo principal, sea cual sea el hilo que escribió el valor, así que puedes encender un LED o mostrar un mensaje directamente. Cada umbral puede vigilar un puntero distinto, de modo que un indicador puede lanzar una alarma alta sobre el valor real y una alarma baja sobre una segunda lectura.

  • Thresholds de TsgcGaugeThreshold con Value, Hysteresis y Direction
  • gtdRising, gtdFalling o gtdBoth
  • ValueColor cambia el color del texto del valor mientras el umbral está activo
  • La demo Gallery enciende un LED de alarma a 200 km/h
Leer el tema de la ayuda

Alarmas, movimiento y datos en vivo

Animación suave de la aguja con suavizado

Una aguja que salta parece rota, una que se desliza parece un instrumento. Cada nuevo valor se anima desde el anterior durante la duración que elijas, con una de cinco curvas de suavizado, de modo que un cambio brusco es fácil de seguir y una fuente en vivo nunca parpadea. Desactiva la animación en los bancos de pruebas que necesitan el valor en bruto al instante. OnChange te avisa de cuándo cambió el valor, con independencia de la animación en pantalla.

  • Animation (TsgcGaugeAnimation) con Enabled y Duration, 300 ms por defecto
  • Easing: geLinear, geQuadOut, geCubicOut, geCubicInOut, geBackOut
  • Funciona en todos los tipos de indicador y en todas las ediciones
  • IsAnimating indica si un puntero sigue moviéndose
Leer el tema de la ayuda
Pantallas industriales: segmentos, LED y anunciadores

Alarmas, movimiento y datos en vivo

Pantallas industriales: segmentos, LED y anunciadores

Los paneles de control tienen su propio lenguaje visual. El indicador digital dibuja dígitos de 7 segmentos, 14 segmentos o matriz de puntos, con segmentos fantasma e inclinación opcionales. Los LED parpadean, la barra de LED mantiene su pico y el anunciador muestra un panel de mosaicos de alarma que parpadean hasta que un operario los reconoce. Todas estas pantallas tienen las mismas escalas, umbrales y temas que los demás indicadores, así que las alarmas funcionan igual en todas partes.

  • TsgcVCLDigitalGauge: DisplayType, Digits, ShowGhost, Skew
  • TsgcVCLLEDGauge con Blink y BlinkInterval; TsgcVCLLEDBarGauge con PeakHold
  • TsgcVCLAnnunciatorGauge: Tiles, FlashInterval, Acknowledge, AcknowledgeAll
  • La demo HMIPanel los combina con depósitos, bombas y presiones

Community incluye dígitos de 7 segmentos, LED y la barra de LED. Las pantallas de 14 segmentos y de matriz de puntos y el anunciador son de la edición registrada.

Leer el tema de la ayuda

Alarmas, movimiento y datos en vivo Solo registrada

Enlaza temas MQTT directamente a punteros

En una consola IoT la mayor parte del código es fontanería: suscribirse, analizar, encontrar el indicador, asignar el valor. El puente sgcGaugesWS la elimina. Una fuente de datos se conecta a un cliente de sgcWebSockets y cada enlace asocia un tema y una ruta JSON a un puntero del indicador. Se admiten filtros de tema MQTT con + y #, y una ruta de filtro elige un dispositivo concreto dentro de un flujo compartido. Varios enlaces pueden compartir una fuente, de modo que una sola conexión con el broker maneja un panel completo.

  • TsgcGaugeFeedSource_MQTT, TsgcGaugeFeedSource_WebSocket, TsgcGaugeFeedSource_SSE
  • Bindings de TsgcGaugeFeedBinding: Gauge, PointerIndex, Topic, ValuePath
  • FilterPath y FilterValue seleccionan mensajes
  • Eventos OnValue y OnError en la fuente

El puente necesita sgcWebSockets. En Community, asigna Value desde tu propio código; es seguro hacerlo desde un hilo en segundo plano.

Leer el tema de la ayuda

Salida y aspecto

El mismo indicador en un servidor y en cualquier tema.

Salida y aspecto

Indicadores como PNG o SVG sin ventana

Los indicadores también se necesitan fuera de la pantalla: en un informe de turno, en un correo de estado o en una página web servida por tu backend. Cada modelo y cada control de indicador se guarda como PNG o SVG sin formulario, de modo que un programa de consola, un servicio de Windows o un servidor Linux64 pueden renderizar el mismo instrumento que ve el operario. El ancho, el alto y la escala son parámetros, así que una llamada produce una miniatura para una lista y otra una imagen nítida a 2x para un informe.

  • SaveToPNG y SaveToSVG en cada modelo y control
  • Modelos independientes del framework como TsgcRadialGauge y TsgcLinearGauge
  • Linux64 sin ventana desde Delphi 10.2; la demo Headless escribe PNG y SVG en Win32, Win64 y Linux64
  • En .NET, la demo ConsoleRender hace lo mismo
Leer el tema de la ayuda
Temas para los turnos de día y de noche

Salida y aspecto

Temas para los turnos de día y de noche

Una sala de control atenúa sus pantallas por la noche, una oficina prefiere un aspecto claro. Una propiedad cambia un indicador entre el tema claro y el oscuro, y los colores de la esfera, la escala, las etiquetas y el valor la siguen. Los indicadores usan el mismo tipo de tema que todos los productos sgcUI, así que cambian a la vez que los cuadros de mando, los gráficos y las cuadrículas. Los rangos conservan sus propios colores en ambos temas, así que el verde sigue significando normal por la noche. La propiedad FormatSettings fija el separador decimal de la lectura con independencia de la configuración regional del usuario.

  • Theme := utDark o utLight
  • FaceColor, BackgroundColor y las fuentes se pueden seguir definiendo por indicador
  • Title, Units y ValueFormat para la lectura
  • OnFormatValue para dar formato tú mismo al texto del valor
  • De derecha a izquierda para árabe y hebreo: los títulos y los textos de unidades siguen la dirección, mientras que los diales, los relojes, las brújulas y las barras de progreso mantienen su orientación
Leer el tema de la ayuda

Accesibilidad

UI Automation para lectores de pantalla y alto contraste, sin configuración.

Accesibilidad

Indicadores que exponen sus valores a UI Automation

Todos los tipos de indicador exponen su título, su valor y su rango a Microsoft UI Automation, y los umbrales se emiten como anuncios. El indicador se describe a sí mismo con la misma alternativa de texto que escribe en un PDF accesible.

  • Un indicador solo muestra un valor, por lo que no es una parada de tabulación por defecto, y aun así se expone a UI Automation
  • Establece TabStop a True cuando los usuarios de teclado deban llegar a un indicador
  • Los indicadores digital, LED, reloj y brújula exponen su valor como texto, y los demás tipos como un valor de rango
  • Con un tema de alto contraste de Windows, los indicadores se pintan con los colores del sistema

La accesibilidad está activada por defecto en todas las ediciones, también en la edición Community gratuita, en VCL en todas las versiones de Delphi y C++Builder desde Delphi 7 hasta Delphi 13, en FireMonkey en Windows, y en WinForms, WPF y Avalonia. En Delphi y C++Builder, AccessibleName y AccessibleDescription establecen el nombre y la descripción expuestos a UI Automation, y en .NET lo hacen el nombre accesible y el texto de ayuda estándar de cada framework. Consulta los informes de conformidad de accesibilidad (en inglés).

Leer el tema de la ayuda

Mira sgcGauges en acción

sgcGauges dentro de las demos de la suite sgcUI: aplicaciones completas que funcionan sin conexión con datos simulados integrados.

Quién construye con sgcGauges

Pantallas SCADA y HMI

Un HMI de planta muestra dos depósitos con indicadores de nivel, LED de bombas, diales de presión con bandas rojas y un panel anunciador para las alarmas. Los umbrales con histéresis lanzan cada alarma una sola vez, el anunciador parpadea hasta que el operario la reconoce y el turno de noche cambia al tema oscuro.

  • Rangos y umbrales
  • Anunciador
  • LED
  • Tema oscuro
Ejecuta la demo HMIPanel

Consolas IoT y de telemetría

Una consola de telemetría se suscribe a un broker y muestra seis lecturas en vivo de dispositivos de campo. Los enlaces asocian cada tema y campo JSON a un puntero, las agujas se deslizan hasta cada nuevo valor y no se escribe a mano ningún código de gestión de mensajes. Los mismos indicadores se renderizan como PNG para el correo de estado diario.

  • Enlaces MQTT
  • Animación
  • PNG sin ventana
Ejecuta la demo MQTTLive

Cuadros de mando KPI con instrumentos

Un cuadro de mando de dirección coloca indicadores en mosaicos junto a tarjetas KPI y gráficos: la utilización como anillo de progreso, el plazo de entrega como gráfico de bala frente a su objetivo y el nivel de servicio como un dial con bandas de colores. Todo sigue una única propiedad de tema y los indicadores se ajustan a sus mosaicos.

  • Anillo de progreso
  • Gráfico de bala
  • Mosaicos de sgcDashboard
Ejecuta la demo Gallery

Un panel de presión y nivel en pocas líneas

La misma API en Delphi, C++ Builder y C#: un indicador radial de presión con una banda roja y un umbral de alarma, un indicador de nivel de tipo bala y un LED de alarma parpadeante.

Un indicador radial de presión con una banda roja y un umbral de alarma, un indicador de nivel de tipo bala y un LED de alarma parpadeante en un formulario VCL.

uses
  SysUtils, Classes, Controls, Forms, sgcUICore_Theme,
  sgcGauges_Types, sgcGauges_Model, sgcGauges_VCL;

type
  TTankPanel = class(TComponent)
  public
    Pressure: TsgcVCLRadialGauge;
    Level: TsgcVCLLinearGauge;
    Alarm: TsgcVCLLEDGauge;
    procedure PressureThreshold(Sender: TObject; aThreshold: TsgcGaugeThreshold;
      aValue: Double; aRising: Boolean);
  end;

procedure TTankPanel.PressureThreshold(Sender: TObject;
  aThreshold: TsgcGaugeThreshold; aValue: Double; aRising: Boolean);
begin
  // runs in the main thread, whatever thread wrote the value
  Alarm.Active := aRising;
end;

function CreateTankPanel(aForm: TForm): TTankPanel;
begin
  Result := TTankPanel.Create(aForm);
  Result.Pressure := TsgcVCLRadialGauge.Create(aForm);
  Result.Pressure.Parent := aForm;
  Result.Pressure.SetBounds(16, 16, 240, 240);
  Result.Pressure.Title := 'Pressure';
  Result.Pressure.Units := 'bar';
  Result.Pressure.Theme := utDark;
  Result.Pressure.Scales[0].Maximum := 10;
  Result.Pressure.Scales[0].MajorInterval := 2;
  with Result.Pressure.Scales[0].Ranges.Add do
  begin
    StartValue := 8;
    EndValue := 10;
    Color := $FFE34948;
  end;
  with Result.Pressure.Thresholds.Add do
  begin
    Value := 8;
    Hysteresis := 0.5;
    Direction := gtdBoth;
  end;
  Result.Pressure.Animation.Easing := geCubicOut;
  Result.Pressure.OnThreshold := Result.PressureThreshold;
  Result.Level := TsgcVCLLinearGauge.Create(aForm);
  Result.Level.Parent := aForm;
  Result.Level.SetBounds(272, 16, 320, 110);
  Result.Level.Title := 'Tank level';
  Result.Level.Units := '%';
  Result.Level.LinearStyle := glsBullet;
  Result.Level.Target := 80;
  Result.Alarm := TsgcVCLLEDGauge.Create(aForm);
  Result.Alarm.Parent := aForm;
  Result.Alarm.SetBounds(272, 140, 64, 64);
  Result.Alarm.OnColor := $FFE34948;
  Result.Alarm.Blink := True;
  Result.Level.Value := 62;
  Result.Pressure.Value := 6.5;
  // the same drawing code exports the gauge to PNG at twice its size
  Result.Pressure.SaveToPNG(ExtractFilePath(ParamStr(0)) + 'pressure.png', 2);
end;

Leer el tema de la ayuda →

El mismo panel en C++ Builder con las cabeceras generadas.

#include <vcl.h>
#include "sgcUICore_Theme.hpp"
#include "sgcGauges_Types.hpp"
#include "sgcGauges_Model.hpp"
#include "sgcGauges_VCL.hpp"

class TTankPanel : public TObject
{
public:
  TsgcVCLRadialGauge *Pressure;
  TsgcVCLLinearGauge *Level;
  TsgcVCLLEDGauge *Alarm;
  void __fastcall PressureThreshold(TObject *Sender,
    TsgcGaugeThreshold *aThreshold, double aValue, bool aRising);
};

void __fastcall TTankPanel::PressureThreshold(TObject *Sender,
  TsgcGaugeThreshold *aThreshold, double aValue, bool aRising)
{
  // runs in the main thread, whatever thread wrote the value
  Alarm->Active = aRising;
}

TTankPanel * __fastcall CreateTankPanel(TForm *Form)
{
  TTankPanel *P = new TTankPanel();
  P->Pressure = new TsgcVCLRadialGauge(Form);
  P->Pressure->Parent = Form;
  P->Pressure->SetBounds(16, 16, 240, 240);
  P->Pressure->Title = "Pressure";
  P->Pressure->Units = "bar";
  P->Pressure->Theme = utDark;
  P->Pressure->Scales->Items[0]->Maximum = 10;
  P->Pressure->Scales->Items[0]->MajorInterval = 2;
  TsgcGaugeRange *R = P->Pressure->Scales->Items[0]->Ranges->Add();
  R->StartValue = 8;
  R->EndValue = 10;
  R->Color = 0xFFE34948;
  TsgcGaugeThreshold *T = P->Pressure->Thresholds->Add();
  T->Value = 8;
  T->Hysteresis = 0.5;
  T->Direction = gtdBoth;
  P->Pressure->Animation->Easing = geCubicOut;
  P->Pressure->OnThreshold = P->PressureThreshold;
  P->Level = new TsgcVCLLinearGauge(Form);
  P->Level->Parent = Form;
  P->Level->SetBounds(272, 16, 320, 110);
  P->Level->Title = "Tank level";
  P->Level->Units = "%";
  P->Level->LinearStyle = glsBullet;
  P->Level->Target = 80;
  P->Alarm = new TsgcVCLLEDGauge(Form);
  P->Alarm->Parent = Form;
  P->Alarm->SetBounds(272, 140, 64, 64);
  P->Alarm->OnColor = 0xFFE34948;
  P->Alarm->Blink = true;
  P->Level->Value = 62;
  P->Pressure->Value = 6.5;
  // the same drawing code exports the gauge to PNG at twice its size
  P->Pressure->SaveToPNG(ExtractFilePath(ParamStr(0)) + "pressure.png", 2);
  return P;
}

Leer el tema de la ayuda →

La versión WinForms en C#, con los mismos nombres de clase que en Delphi.

using System;
using System.Drawing;
using System.Windows.Forms;
using esegece.sgcGauges;
using esegece.sgcUICore;

public class TankForm : Form
{
    private readonly TsgcWinFormsRadialGauge pressure;
    private readonly TsgcWinFormsLinearGauge level;
    private readonly TsgcWinFormsLEDGauge alarm;

    public TankForm()
    {
        ClientSize = new Size(610, 270);
        pressure = new TsgcWinFormsRadialGauge { Bounds = new Rectangle(10, 10, 240, 240) };
        pressure.Title = "Pressure";
        pressure.Units = "bar";
        pressure.Theme = TsgcUITheme.utDark;
        pressure.Scales[0].Maximum = 10;
        pressure.Scales[0].MajorInterval = 2;
        TsgcGaugeRange red = pressure.Scales[0].Ranges.Add();
        red.StartValue = 8;
        red.EndValue = 10;
        red.Color = 0xFFE34948;
        TsgcGaugeThreshold limit = pressure.Thresholds.Add();
        limit.Value = 8;
        limit.Hysteresis = 0.5;
        limit.Direction = TsgcGaugeThresholdDirection.gtdBoth;
        pressure.Animation.Easing = TsgcGaugeEasing.geCubicOut;

        level = new TsgcWinFormsLinearGauge { Bounds = new Rectangle(260, 10, 340, 110) };
        level.Title = "Tank level";
        level.Units = "%";
        level.LinearStyle = TsgcGaugeLinearStyle.glsBullet;
        level.Target = 80;

        alarm = new TsgcWinFormsLEDGauge { Bounds = new Rectangle(260, 130, 64, 64) };
        alarm.OnColor = 0xFFE34948;
        alarm.Blink = true;

        // OnThreshold runs in the UI thread, whatever thread wrote the value
        pressure.OnThreshold = (sender, threshold, value, rising) => alarm.Active = rising;
        Controls.AddRange(new Control[] { pressure, level, alarm });
        level.Value = 62;
        pressure.Value = 6.5;
    }
}
dotnet add package esegece.sgcGauges.WinForms

Leer el tema de la ayuda →

Ejecuta las demos de sgcGauges

Gallery, GalleryFMX, Headless, HMIPanel, DashboardGauges y MQTTLive para Delphi y C++ Builder. Las demos .NET son Gallery (WinForms), GalleryWpf, GalleryAvalonia, ConsoleRender, HMIPanel y MQTTLive.

HMIPanel

HMIPanel

Dos depósitos con bombas, niveles, presiones y alarmas de anunciador, la disposición de una pantalla de proceso típica.

DashboardGauges

Seis indicadores en mosaicos de sgcDashboard, que siguen el tema del cuadro de mando. Se compila con la edición Community.

Headless

Un programa de consola que escribe PNG y SVG en Win32, Win64 y Linux64.

GalleryFMX

La galería en FireMonkey, para Windows y Android.

Solo registrada MQTTLive

Seis indicadores alimentados por MQTT mediante el puente sgcGaugesWS. Necesita sgcWebSockets y un broker.

Demos compiladas

Ejecutables listos para usar de cada producto sgcUI, sin nada que instalar.

Descargar sgcUI_bin.zip →

Dónde se incluye sgcGauges

sgcGauges está en las ediciones sgcUI Professional y Enterprise, y también se vende por separado. sgcGauges se incluye además en el paquete All-Access.

Paquete individual de sgcGauges

€199 / desarrollador, código fuente completo, 1 año de actualizaciones.

Comprar sgcGauges → Ver precios →

sgcUI Professional

Standard más sgcGauges, sgcCharts y sgcDashboard, desde €529.

Ver Professional →

sgcUI Enterprise

Los 14 productos sgcUI, desde €699.

Ver Enterprise →

La edición Community gratuita (esegece.sgcGauges.Community en NuGet) incluye los indicadores radial, lineal, digital de 7 segmentos, LED, barra de LED y anillo de progreso con rangos, umbrales, animación, temas y salida sin ventana. No incluye el medidor VU, el reloj, la brújula ni el anunciador, ni escalas o punteros adicionales, ni el puente sgcGaugesWS.

FunciónCommunity (gratuita)Registrada
Radial, lineal, digital de 7 segmentos, LED, barra de LED y anillo de progreso✓✓
Rangos, umbrales, animación y temas✓✓
Salida PNG y SVG sin ventana✓✓
Medidor VU, reloj, brújula y anunciador−✓
Varias escalas y punteros por indicador−✓
Pantallas de 14 segmentos y de matriz de puntos−✓
Puente sgcGaugesWS (MQTT, WebSocket, SSE)−✓

Frameworks y plataformas compatibles

Componentes de sgcGauges

Cada indicador tiene un modelo independiente del framework para renderizar sin ventana, un control VCL (que también se usa desde C++ Builder), un control FireMonkey y controles WinForms, WPF y Avalonia.

IndicadorVCL y C++ BuilderFireMonkey.NET
RadialTsgcVCLRadialGaugeTsgcFMXRadialGaugeTsgcWinFormsRadialGauge
Lineal (barra, termómetro, bala)TsgcVCLLinearGaugeTsgcFMXLinearGaugeTsgcWpfLinearGauge
Digital (7 segmentos, 14 segmentos, matriz de puntos)TsgcVCLDigitalGaugeTsgcFMXDigitalGaugeTsgcWinFormsDigitalGauge
LEDTsgcVCLLEDGaugeTsgcFMXLEDGaugeTsgcWinFormsLEDGauge
Barra de LEDTsgcVCLLEDBarGaugeTsgcFMXLEDBarGaugeTsgcWinFormsLEDBarGauge
Anillo de progresoTsgcVCLProgressRingGaugeTsgcFMXProgressRingGaugeTsgcWinFormsProgressRingGauge
Medidor VUTsgcVCLVUMeterGaugeTsgcFMXVUMeterGaugeTsgcWinFormsVUMeterGauge
RelojTsgcVCLClockGaugeTsgcFMXClockGaugeTsgcWinFormsClockGauge
BrújulaTsgcVCLCompassGaugeTsgcFMXCompassGaugeTsgcWpfCompassGauge
AnunciadorTsgcVCLAnnunciatorGaugeTsgcFMXAnnunciatorGaugeTsgcAvaloniaAnnunciatorGauge

La columna .NET muestra un ejemplo por indicador, cada indicador existe como TsgcWinForms, TsgcWpf y TsgcAvalonia. Todos los indicadores comparten la clase base TsgcCustomGauge con las colecciones Scales, Pointers, Thresholds y Ranges. Los modelos independientes del framework (TsgcRadialGauge, TsgcLinearGauge y otros) se renderizan sin ventana.

DestinoComponentePlataformas
Delphi 7 a 13, VCLIndicadores TsgcVCLWin32, y Win64 desde XE2
Delphi XE6 a 13, FireMonkeyIndicadores TsgcFMXWindows, macOS, iOS y Android
C++ Builder 2007 a 13Indicadores TsgcVCLCabeceras .hpp generadas y bibliotecas estáticas
Delphi 10.2 a 13, independiente del frameworkModelos de indicador y salida PNG y SVG sin ventanaLinux64 (sin controles para Linux)
.NET Framework 4.7.2, .NET 8, 9 y 10Indicadores WinForms, WPF y AvaloniaEscritorio Windows, destinos Avalonia, renderizado sin ventana

Preguntas frecuentes

Sí. Asigna Value desde el hilo que recibe los datos. Los umbrales se evalúan por ti y OnThreshold se dispara siempre en el hilo principal, de modo que un manejador puede actualizar controles sin sincronización adicional. El puente sgcGaugesWS hace lo mismo cuando alimenta punteros desde MQTT, WebSocket o SSE.

Los indicadores radial, lineal, digital de 7 segmentos, LED, barra de LED y anillo de progreso, con rangos, umbrales, animación, temas y salida sin ventana. El medidor VU, el reloj, la brújula, el anunciador, las escalas y punteros adicionales, los dígitos de 14 segmentos y de matriz de puntos y el puente son de la edición registrada. Consulta Ediciones.

Sí, con la edición registrada y sgcWebSockets. Coloca un TsgcGaugeFeedSource_MQTT, enlaza tu cliente MQTT y añade un enlace por indicador con el Topic y el ValuePath JSON. Los filtros de tema con + y # funcionan, y FilterPath elige un dispositivo de un tema compartido.

Los controles FireMonkey funcionan desde Delphi XE6, y la demo GalleryFMX se ejecuta en Windows y Android. En Linux64 sgcGauges es solo sin ventana: los modelos se compilan y renderizan PNG y SVG desde Delphi 10.2, pero no hay controles para Linux.

Sí. Cada escala tiene sus propios Minimum, Maximum, MajorInterval y marcas secundarias, y cualquier número de rangos de colores con inicio, fin, color, grosor y título. Un indicador radial también permite elegir el ángulo inicial y el barrido del arco.

Sí. SaveToPNG y SaveToSVG funcionan en cada control y cada modelo, sin ventana, así que un servicio o un servidor Linux64 pueden volcar las lecturas actuales en un PDF o en un correo. La demo Gallery también exporta PNG a 2x.

El indicador digital se dimensiona a partir de la escala: con Digits en 0 reserva tantos dígitos como necesita el máximo de la escala, y la escala por defecto va de 0 a 100. Asigna a Scales[0].Maximum el mayor valor que esperas, o define Digits de forma explícita.

Ayuda de sgcGauges

3,000+Desarrolladores
20+Años
761+Componentes
30+Integraciones de API
5Plataformas
Garantía de devolución de 30 días¿No estás satisfecho? Solicita un reembolso completo en los 30 días posteriores a la compra. Ver política de reembolso

Prueba sgcGauges hoy

La prueba de sgcUI incluye sgcGauges y todos los demás productos sgcUI.