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

sgcGauges, o painel de instrumentos para Delphi, C++ Builder & .NET

Dez tipos de gauge para dashboards e painéis HMI, de um mostrador radial a um anunciador. Desenhe faixas verde, âmbar e vermelha, dispare um alarme quando um valor cruzar um limite, deixe o ponteiro deslizar até cada nova leitura e renderize o mesmo gauge em PNG ou SVG em um servidor.

VCL, FireMonkey, WinForms, WPF, AvaloniaDez tipos de gauge, seis na CommunityPNG e SVG sem janelaIncluído no sgcUI Professional
Demo HMIPanel com tanques, bombas, barras LED e um anunciador

Tudo o que um painel de instrumentos precisa

Onze recursos em quatro grupos, com os nomes reais de classes e propriedades e um link para cada tópico de ajuda. Os recursos marcados como Registrada não estão na edição .NET Community gratuita.

Instrumentos e escalas

Dez tipos em um só modelo, com faixas, estilos e vários ponteiros.

Galeria do sgcGauges com gauges radial, anel, bússola, relógio, VU meter, linear, digital e LED

Instrumentos e escalas

Dez tipos de instrumento em uma só biblioteca

Dashboards, painéis HMI e bancadas de teste precisam de instrumentos diferentes: um mostrador para velocidade, uma barra para nível, um display digital para frequência, uma lâmpada para uma bomba, um painel de tiles para alarmes. O sgcGauges traz dez tipos que compartilham um só modelo, com as mesmas escalas, ponteiros, faixas, limites e temas. Aprenda uma API e todos os instrumentos se comportam da mesma forma.

  • TsgcVCLRadialGauge, TsgcVCLLinearGauge, TsgcVCLDigitalGauge, TsgcVCLLEDGauge, TsgcVCLLEDBarGauge, TsgcVCLProgressRingGauge
  • TsgcVCLVUMeterGauge, TsgcVCLClockGauge, TsgcVCLCompassGauge, TsgcVCLAnnunciatorGauge
  • Cada tipo também existe para FireMonkey e, no .NET, para WinForms, WPF e Avalonia
  • Um modelo neutro quanto ao framework por tipo, como TsgcRadialGauge, para uso headless

A Community tem os gauges radial, linear, digital de 7 segmentos, LED, barra LED e anel de progresso. O VU meter, o relógio, a bússola e o anunciador são da edição Registrada.

Ler o tópico da ajuda
Velocímetro de 0 a 260 km/h com faixas verde, âmbar e vermelha

Instrumentos e escalas

Faixas coloridas em qualquer escala

Um operador lê um gauge de relance apenas quando verde, âmbar e vermelho indicam onde o valor deveria estar. Dê à escala qualquer mínimo e máximo, defina o intervalo principal e as marcas secundárias e adicione faixas coloridas para as zonas que importam. As faixas têm espessura e legenda próprias, e a escala pode ser invertida ou colocar suas marcas por dentro ou por fora. As faixas são desenhadas na própria escala, então também aparecem na saída PNG e SVG e nos dois temas sem trabalho extra.

  • Scales[0].Ranges.Add com StartValue, EndValue, Color, Thickness e Caption
  • TsgcGaugeScale: Minimum, Maximum, MajorInterval, MinorCount, Reversed
  • LabelFormat e ShowLabels para os rótulos da escala
  • StartAngle e SweepAngle definem o arco de um gauge radial
Ler o tópico da ajuda
Três gauges lineares verticais: bullet graph, termômetro e barra

Instrumentos e escalas

Bullet graph, termômetro e barra em um só controle

Níveis, temperaturas e progresso em relação a uma meta são lineares por natureza. Um gauge linear desenha três estilos: uma barra simples, um termômetro com bulbo e um bullet graph que compara o valor com um marcador de meta. Coloque-o na horizontal ou na vertical para caber em um tanque, em uma barra lateral ou na linha de uma tabela. A meta do bullet é uma propriedade, não um ponteiro extra, então o bullet graph funciona também na edição Community gratuita. Um gauge pequeno cabe em uma célula de grade ou em um tile de dashboard.

  • LinearStyle: glsBar, glsThermometer ou glsBullet
  • Target desenha o marcador de meta do bullet, em todas as edições
  • Orientation e BulbSize
  • Faixas e limites funcionam exatamente como no gauge radial
Ler o tópico da ajuda
Gauge radial com uma agulha para o valor real e um marcador para a meta

Instrumentos e escalas Somente Registrada

Várias escalas e ponteiros em um só gauge

Algumas leituras só fazem sentido lado a lado: real contra meta, entrada contra saída, horas e minutos. Um gauge pode ter mais de uma escala e mais de um ponteiro, e cada ponteiro escolhe sua escala e seu estilo: uma agulha, um marcador ou uma barra. Os limites podem acompanhar qualquer ponteiro. Um mostrador de ponteiro duplo economiza espaço em painéis cheios e deixa a diferença entre meta e valor real visível de uma vez.

  • Coleção Pointers de TsgcGaugePointer com Kind, NeedleStyle, MarkerShape e ScaleIndex
  • Coleção Scales com Radius e Offset por escala
  • PointerIndex nos limites e nas ligações de feed
  • Formulários criados com vários ponteiros ainda carregam na Community, que desenha apenas o primeiro

A Community desenha uma escala e um ponteiro por gauge; a edição Registrada desenha todos.

Ler o tópico da ajuda

Alarmes, movimento e dados em tempo real

Gauges que reagem: limites, animação, displays industriais e feeds em tempo real.

Alarmes, movimento e dados em tempo real

Alarmes com histerese, disparados na thread principal

Uma pressão que oscila em torno do limite não deve disparar cem alarmes por minuto. Um limite tem um valor, uma direção e uma faixa de histerese: ele dispara uma vez quando o valor o cruza e só rearma depois que o valor recuar o equivalente à faixa. O OnThreshold sempre roda na thread principal, qualquer que seja a thread que gravou o valor, então você pode acender um LED ou mostrar uma mensagem diretamente. Cada limite pode acompanhar um ponteiro diferente, de modo que um gauge pode disparar um alarme de máxima sobre o valor real e um de mínima sobre uma segunda leitura.

  • Thresholds de TsgcGaugeThreshold com Value, Hysteresis e Direction
  • gtdRising, gtdFalling ou gtdBoth
  • ValueColor muda a cor do texto do valor enquanto o limite está ativo
  • O demo Gallery acende um LED de alarme a 200 km/h
Ler o tópico da ajuda

Alarmes, movimento e dados em tempo real

Animação suave do ponteiro com easing

Um ponteiro que pula parece quebrado, um que desliza parece um instrumento. Cada novo valor é animado a partir do anterior durante uma duração à sua escolha, com uma de cinco curvas de easing, então uma mudança brusca é fácil de acompanhar e um feed em tempo real nunca pisca. Desative a animação em bancadas de teste que precisam do valor bruto na hora. O OnChange avisa quando o valor mudou, independente da animação na tela.

  • Animation (TsgcGaugeAnimation) com Enabled e Duration, 300 ms por padrão
  • Easing: geLinear, geQuadOut, geCubicOut, geCubicInOut, geBackOut
  • Funciona em todos os tipos de gauge e em todas as edições
  • IsAnimating informa se um ponteiro ainda está se movendo
Ler o tópico da ajuda
Displays industriais: segmentos, LEDs e anunciadores

Alarmes, movimento e dados em tempo real

Displays industriais: segmentos, LEDs e anunciadores

Painéis de controle têm sua própria linguagem visual. O gauge digital desenha dígitos de 7 segmentos, 14 segmentos ou matriz de pontos, com segmentos fantasma e inclinação opcionais. Os LEDs piscam, a barra LED retém seu pico e o anunciador mostra um painel de tiles de alarme que piscam até um operador reconhecê-los. Todos esses displays têm as mesmas escalas, limites e temas dos outros gauges, então os alarmes funcionam da mesma forma em todo lugar.

  • TsgcVCLDigitalGauge: DisplayType, Digits, ShowGhost, Skew
  • TsgcVCLLEDGauge com Blink e BlinkInterval; TsgcVCLLEDBarGauge com PeakHold
  • TsgcVCLAnnunciatorGauge: Tiles, FlashInterval, Acknowledge, AcknowledgeAll
  • O demo HMIPanel os combina com tanques, bombas e pressões

A Community tem dígitos de 7 segmentos, LEDs e a barra LED. Os displays de 14 segmentos e de matriz de pontos e o anunciador são da edição Registrada.

Ler o tópico da ajuda

Alarmes, movimento e dados em tempo real Somente Registrada

Vincule tópicos MQTT direto aos ponteiros

Em um console de IoT, a maior parte do código é infraestrutura: assinar, interpretar, achar o gauge, definir o valor. A ponte sgcGaugesWS elimina isso. Uma fonte de feed se conecta a um cliente sgcWebSockets, e cada vínculo associa um tópico e um caminho JSON a um ponteiro de gauge. Os filtros de tópico MQTT com + e # são suportados, e um caminho de filtro escolhe um dispositivo em um stream compartilhado. Vários vínculos podem compartilhar uma fonte, então uma única conexão com o broker aciona um painel inteiro.

  • TsgcGaugeFeedSource_MQTT, TsgcGaugeFeedSource_WebSocket, TsgcGaugeFeedSource_SSE
  • Bindings de TsgcGaugeFeedBinding: Gauge, PointerIndex, Topic, ValuePath
  • FilterPath e FilterValue selecionam as mensagens
  • Eventos OnValue e OnError na fonte

A ponte exige o sgcWebSockets. Na edição Community, defina Value pelo seu próprio código; é seguro a partir de uma thread em segundo plano.

Ler o tópico da ajuda

Saída e aparência

O mesmo gauge em um servidor e em qualquer tema.

Saída e aparência

Gauges em PNG ou SVG sem janela

Os gauges também são necessários fora da tela: em um relatório de turno, um e-mail de status ou uma página web servida pelo seu back-end. Todo modelo de gauge e todo controle se salva como PNG ou SVG sem formulário, então um programa de console, um serviço do Windows ou um servidor Linux64 pode renderizar o mesmo instrumento que o operador vê. Largura, altura e escala são parâmetros, então uma chamada gera uma miniatura para uma lista e outra uma imagem nítida 2x para um relatório.

  • SaveToPNG e SaveToSVG em todo modelo e controle
  • Modelos neutros quanto ao framework, como TsgcRadialGauge e TsgcLinearGauge
  • Linux64 headless a partir do Delphi 10.2; o demo Headless grava PNG e SVG no Win32, Win64 e Linux64
  • No .NET, o demo ConsoleRender faz o mesmo
Ler o tópico da ajuda
Temas para turnos de dia e de noite

Saída e aparência

Temas para turnos de dia e de noite

Uma sala de controle reduz o brilho das telas à noite, um escritório prefere um visual claro. Uma propriedade alterna um gauge entre o tema claro e o escuro, e as cores do mostrador, da escala, dos rótulos e do valor acompanham. Os gauges usam o mesmo tipo de tema de todo produto sgcUI, então mudam junto com dashboards, gráficos e grades. As faixas mantêm suas próprias cores nos dois temas, então o verde continua significando normal à noite. A propriedade FormatSettings fixa o separador decimal do display, independente da localidade do usuário.

  • Theme := utDark ou utLight
  • FaceColor, BackgroundColor e as fontes ainda podem ser definidos por gauge
  • Title, Units e ValueFormat para o display
  • OnFormatValue para formatar você mesmo o texto do valor
  • Da direita para a esquerda para árabe e hebraico: legendas e textos de unidade seguem a direção, enquanto mostradores, relógios, bússolas e barras de progresso mantêm sua orientação
Ler o tópico da ajuda

Acessibilidade

UI Automation para leitores de tela e o alto contraste, sem nenhuma configuração.

Acessibilidade

Indicadores que expõem seus valores ao UI Automation

Cada tipo de indicador expõe sua legenda, seu valor e sua faixa ao Microsoft UI Automation, e os limites são emitidos como anúncios. O indicador se descreve com a mesma alternativa em texto que grava em um PDF acessível.

  • Um indicador apenas mostra um valor, portanto não é uma parada de tabulação por padrão, e continua exposto ao UI Automation
  • Defina TabStop como True quando os usuários de teclado devem chegar a um indicador
  • Os indicadores digital, LED, relógio e bússola expõem seu valor como texto, os demais tipos como um valor de faixa
  • Sob um tema de alto contraste do Windows, os indicadores são pintados com as cores do sistema

A acessibilidade vem ativada por padrão em todas as edições, inclusive a edição Community gratuita, no VCL em todas as versões do Delphi e do C++Builder do Delphi 7 ao Delphi 13, no FireMonkey no Windows e no WinForms, WPF e Avalonia. No Delphi e no C++Builder, AccessibleName e AccessibleDescription definem o nome e a descrição expostos ao UI Automation, e no .NET o nome acessível e o texto de ajuda padrão de cada framework fazem o mesmo. Veja os relatórios de conformidade de acessibilidade.

Leia o tópico da ajuda

Veja o sgcGauges em ação

sgcGauges dentro das demos da suíte sgcUI: aplicações completas que rodam offline com dados simulados integrados.

Quem cria com o sgcGauges

Telas SCADA e HMI

Uma HMI de fábrica mostra dois tanques com gauges de nível, LEDs de bombas, mostradores de pressão com faixas vermelhas e um painel anunciador de alarmes. Limites com histerese disparam cada alarme uma vez, o anunciador pisca até o operador reconhecê-lo e o turno da noite muda para o tema escuro.

  • Faixas e limites
  • Anunciador
  • LEDs
  • Tema escuro
Execute o demo HMIPanel

Consoles de IoT e telemetria

Um console de telemetria assina um broker e mostra seis leituras em tempo real de dispositivos de campo. Os vínculos associam cada tópico e campo JSON a um ponteiro, as agulhas deslizam até cada novo valor e nenhum código de tratamento de mensagens é escrito à mão. Os mesmos gauges são renderizados em PNG para o e-mail diário de status.

  • Vínculos MQTT
  • Animação
  • PNG headless
Execute o demo MQTTLive

Dashboards de KPI com instrumentos

Um dashboard gerencial coloca gauges em tiles ao lado de cartões de KPI e gráficos: a utilização como anel de progresso, o prazo de entrega como bullet graph contra a meta e o nível de serviço como um mostrador com faixas coloridas. Tudo segue uma única propriedade de tema e os gauges se ajustam ao tamanho dos seus tiles.

  • Anel de progresso
  • Bullet graph
  • Tiles do sgcDashboard
Execute o demo Gallery

A Pressure and Level Panel in a Few Lines

The same API in Delphi, C++ Builder and C#: a radial pressure gauge with a red band and an alarm threshold, a bullet level gauge and a blinking alarm LED.

A radial pressure gauge with a red band and an alarm threshold, a bullet level gauge and a blinking alarm LED on a VCL form.

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;

Ler o tópico da ajuda →

The same panel in C++ Builder with the generated headers.

#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;
}

Ler o tópico da ajuda →

The WinForms version in C#, with the same class names as 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

Ler o tópico da ajuda →

Execute os demos do sgcGauges

Gallery, GalleryFMX, Headless, HMIPanel, DashboardGauges e MQTTLive para Delphi e C++ Builder. Os demos .NET são Gallery (WinForms), GalleryWpf, GalleryAvalonia, ConsoleRender, HMIPanel e MQTTLive.

HMIPanel

HMIPanel

Dois tanques com bombas, níveis, pressões e alarmes de anunciador, o layout de uma tela de processo típica.

DashboardGauges

Seis gauges em tiles do sgcDashboard, seguindo o tema do dashboard. Compila com a edição Community.

Headless

Um programa de console que grava PNG e SVG no Win32, Win64 e Linux64.

GalleryFMX

A galeria no FireMonkey, para Windows e Android.

Somente Registrada MQTTLive

Seis gauges alimentados por MQTT pela ponte sgcGaugesWS. Requer o sgcWebSockets e um broker.

Demos compilados

Executáveis prontos para rodar de todos os produtos sgcUI, sem nada para instalar.

Baixar sgcUI_bin.zip →

Onde o sgcGauges está incluído

O sgcGauges está nas edições sgcUI Professional e Enterprise e também é vendido separadamente. O sgcGauges também está incluído no pacote All-Access.

sgcGauges pacote individual

€199 / desenvolvedor, código-fonte completo, 1 ano de atualizações.

Comprar o sgcGauges → Ver preços →

sgcUI Professional

Standard mais sgcGauges, sgcCharts e sgcDashboard, a partir de €529.

Ver Professional →

sgcUI Enterprise

Todos os 14 produtos sgcUI, a partir de €699.

Ver Enterprise →

A edição Community gratuita (esegece.sgcGauges.Community no NuGet) tem os gauges radial, linear, digital de 7 segmentos, LED, barra LED e anel de progresso, com faixas, limites, animação, temas e saída headless. Ela não tem VU meter, relógio, bússola nem anunciador, nem escalas ou ponteiros extras, nem a ponte sgcGaugesWS.

RecursoCommunity (gratuita)Registrada
Radial, linear, digital de 7 segmentos, LED, barra LED e anel de progresso✓✓
Faixas, limites, animação e temas✓✓
Saída headless em PNG e SVG✓✓
VU meter, relógio, bússola e anunciador−✓
Várias escalas e ponteiros por gauge−✓
Displays de 14 segmentos e de matriz de pontos−✓
Ponte sgcGaugesWS (MQTT, WebSocket, SSE)−✓

Frameworks e plataformas suportados

Componentes do sgcGauges

Cada gauge tem um modelo neutro quanto ao framework para renderização headless, um controle VCL (também usado no C++ Builder), um controle FireMonkey e controles WinForms, WPF e Avalonia.

GaugeVCL e C++ BuilderFireMonkey.NET
RadialTsgcVCLRadialGaugeTsgcFMXRadialGaugeTsgcWinFormsRadialGauge
Linear (barra, termômetro, bullet)TsgcVCLLinearGaugeTsgcFMXLinearGaugeTsgcWpfLinearGauge
Digital (7 segmentos, 14 segmentos, matriz de pontos)TsgcVCLDigitalGaugeTsgcFMXDigitalGaugeTsgcWinFormsDigitalGauge
LEDTsgcVCLLEDGaugeTsgcFMXLEDGaugeTsgcWinFormsLEDGauge
Barra LEDTsgcVCLLEDBarGaugeTsgcFMXLEDBarGaugeTsgcWinFormsLEDBarGauge
Anel de progressoTsgcVCLProgressRingGaugeTsgcFMXProgressRingGaugeTsgcWinFormsProgressRingGauge
VU meterTsgcVCLVUMeterGaugeTsgcFMXVUMeterGaugeTsgcWinFormsVUMeterGauge
RelógioTsgcVCLClockGaugeTsgcFMXClockGaugeTsgcWinFormsClockGauge
BússolaTsgcVCLCompassGaugeTsgcFMXCompassGaugeTsgcWpfCompassGauge
AnunciadorTsgcVCLAnnunciatorGaugeTsgcFMXAnnunciatorGaugeTsgcAvaloniaAnnunciatorGauge

A coluna .NET mostra um exemplo por gauge; todo gauge existe como TsgcWinForms, TsgcWpf e TsgcAvalonia. Todos os gauges compartilham a classe base TsgcCustomGauge com as coleções Scales, Pointers, Thresholds e Ranges. Os modelos neutros quanto ao framework (TsgcRadialGauge, TsgcLinearGauge e assim por diante) renderizam sem janela.

DestinoComponentePlataformas
Delphi 7 a 13, VCLGauges TsgcVCLWin32, e Win64 a partir do XE2
Delphi XE6 a 13, FireMonkeyGauges TsgcFMXWindows, macOS, iOS e Android
C++ Builder 2007 a 13Gauges TsgcVCLCabeçalhos .hpp gerados e bibliotecas estáticas
Delphi 10.2 a 13, neutro quanto ao frameworkModelos de gauge e saída headless em PNG e SVGLinux64 (sem controles para Linux)
.NET Framework 4.7.2, .NET 8, 9 e 10Gauges WinForms, WPF e AvaloniaDesktop Windows, destinos Avalonia, renderização headless

Perguntas frequentes

Sim. Defina Value a partir da thread que recebe os dados. Os limites são avaliados para você e o OnThreshold sempre dispara na thread principal, então um manipulador pode atualizar controles sem sincronização extra. A ponte sgcGaugesWS faz o mesmo quando alimenta os ponteiros por MQTT, WebSocket ou SSE.

Os gauges radial, linear, digital de 7 segmentos, LED, barra LED e anel de progresso, com faixas, limites, animação, temas e saída headless. O VU meter, o relógio, a bússola, o anunciador, as escalas e ponteiros extras, os dígitos de 14 segmentos e de matriz de pontos e a ponte são da edição Registrada. Veja Editions.

Sim, com a edição Registrada e o sgcWebSockets. Solte um TsgcGaugeFeedSource_MQTT, vincule seu cliente MQTT e adicione um vínculo por gauge com o Topic e o ValuePath JSON. Os filtros de tópico com + e # funcionam, e o FilterPath escolhe um dispositivo em um tópico compartilhado.

Os controles FireMonkey funcionam a partir do Delphi XE6, e o demo GalleryFMX roda no Windows e no Android. No Linux64, o sgcGauges é apenas headless: os modelos compilam e renderizam PNG e SVG a partir do Delphi 10.2, mas não há controles para Linux.

Sim. Cada escala tem seus próprios Minimum, Maximum, MajorInterval e marcas secundárias, e qualquer número de faixas coloridas com início, fim, cor, espessura e legenda. Um gauge radial também permite escolher o ângulo inicial e a abertura do arco.

Sim. SaveToPNG e SaveToSVG funcionam em todo controle e todo modelo, sem janela, então um serviço ou um servidor Linux64 pode colocar as leituras atuais em um PDF ou em um e-mail. O demo Gallery também exporta PNG em 2x.

O gauge digital se dimensiona a partir da escala: com Digits em 0, ele reserva quantos dígitos o máximo da escala exigir, e a escala padrão vai de 0 a 100. Defina Scales[0].Maximum com o maior valor esperado ou defina Digits explicitamente.

Ajuda do sgcGauges

3,000+Desenvolvedores
20+Anos
761+Componentes
30+Integrações de API
5Plataformas
Garantia de reembolso de 30 diasNão ficou satisfeito? Solicite o reembolso total em até 30 dias após a compra. Ver política de reembolso

Experimente o sgcGauges hoje

A avaliação do sgcUI inclui o sgcGauges e todos os outros produtos sgcUI.