Delphi, C++ Builder & .NET Teil von sgcUI

sgcGauges, das Instrumentenpanel für Delphi, C++ Builder & .NET

Zehn Gauge-Typen für Dashboards und HMI-Panels, vom Rundinstrument bis zum Annunciator. Zeichne grüne, gelbe und rote Bänder, löse einen Alarm aus, wenn ein Wert eine Grenze überschreitet, lass die Nadel zu jedem neuen Messwert gleiten und rendere dasselbe Gauge auf einem Server nach PNG oder SVG.

VCL, FireMonkey, WinForms, WPF, AvaloniaZehn Gauge-Typen, sechs in CommunityPNG und SVG ohne FensterEnthalten in sgcUI Professional
HMIPanel-Demo mit Tanks, Pumpen, LED-Balken und einem Annunciator

Alles, was ein Instrumentenpanel braucht

Elf Funktionen in vier Gruppen, mit den echten Klassen- und Eigenschaftsnamen und einem Link zu jedem Hilfethema. Als Registered markierte Funktionen sind nicht im kostenlosen .NET-Community-Build enthalten.

Instrumente und Skalen

Zehn Typen auf einem Modell, mit Bereichen, Stilen und mehreren Zeigern.

sgcGauges-Galerie mit radialen, Ring-, Kompass-, Uhr-, VU-Meter-, linearen, digitalen und LED-Gauges

Instrumente und Skalen

Zehn Instrumententypen in einer Bibliothek

Dashboards, HMI-Panels und Prüfstände brauchen verschiedene Instrumente: ein Rundinstrument für die Geschwindigkeit, einen Balken für den Füllstand, eine Digitalanzeige für die Frequenz, eine Lampe für eine Pumpe, ein Kachelpanel für Alarme. sgcGauges liefert zehn Typen, die ein Modell teilen, dieselben Skalen, Zeiger, Bereiche, Schwellenwerte und Themes. Lerne eine API, und jedes Instrument verhält sich gleich.

  • TsgcVCLRadialGauge, TsgcVCLLinearGauge, TsgcVCLDigitalGauge, TsgcVCLLEDGauge, TsgcVCLLEDBarGauge, TsgcVCLProgressRingGauge
  • TsgcVCLVUMeterGauge, TsgcVCLClockGauge, TsgcVCLCompassGauge, TsgcVCLAnnunciatorGauge
  • Jeder Typ gibt es auch für FireMonkey und in .NET für WinForms, WPF und Avalonia
  • Ein frameworkneutrales Modell pro Typ, etwa TsgcRadialGauge, für den Headless-Einsatz

Community hat die Gauges radial, linear, digital mit 7 Segmenten, LED, LED-Balken und Fortschrittsring. VU-Meter, Uhr, Kompass und Annunciator sind Registered.

Hilfethema lesen
Tachometer von 0 bis 260 km/h mit grünen, gelben und roten Bereichen

Instrumente und Skalen

Farbige Bereiche auf jeder Skala

Ein Bediener liest ein Gauge nur dann auf einen Blick, wenn Grün, Gelb und Rot zeigen, wo der Wert liegen soll. Gib einer Skala ein beliebiges Minimum und Maximum, lege das Hauptintervall und die Nebenstriche fest und füge farbige Bereiche für die wichtigen Bänder hinzu. Bereiche haben eigene Dicke und Beschriftung, und die Skala kann rückwärts laufen oder ihre Striche innen oder außen setzen. Bereiche werden auf der Skala selbst gezeichnet, sodass sie ohne Zusatzaufwand auch in der PNG- und SVG-Ausgabe und in beiden Themes erscheinen.

  • Scales[0].Ranges.Add mit StartValue, EndValue, Color, Thickness und Caption
  • TsgcGaugeScale: Minimum, Maximum, MajorInterval, MinorCount, Reversed
  • LabelFormat und ShowLabels für die Skalenbeschriftung
  • StartAngle und SweepAngle formen den Bogen eines radialen Gauges
Hilfethema lesen
Drei vertikale lineare Gauges: Bullet-Graph, Thermometer und Balken

Instrumente und Skalen

Bullet-Graph, Thermometer und Balken in einem Steuerelement

Füllstände, Temperaturen und der Fortschritt gegen ein Ziel sind von Natur aus linear. Ein lineares Gauge zeichnet drei Stile: einen einfachen Balken, ein Thermometer mit Kolben und einen Bullet-Graph, der den Wert mit einer Zielmarke vergleicht. Stelle es horizontal oder vertikal ein, passend zu einem Tank, einer Seitenleiste oder einer Tabellenzeile. Das Bullet-Ziel ist eine Eigenschaft und kein zusätzlicher Zeiger, sodass der Bullet-Graph auch in der kostenlosen Community Edition funktioniert. Ein kleines Gauge passt in eine Grid-Zelle oder eine Dashboard-Kachel.

  • LinearStyle: glsBar, glsThermometer oder glsBullet
  • Target zeichnet die Zielmarke des Bullet-Graphen, in jeder Edition
  • Orientation und BulbSize
  • Bereiche und Schwellenwerte funktionieren genau wie beim radialen Gauge
Hilfethema lesen
Radiales Gauge mit einer Nadel für den Ist-Wert und einer Marke für das Ziel

Instrumente und Skalen Nur Registered

Mehrere Skalen und Zeiger an einem Gauge

Manche Messwerte ergeben nur nebeneinander Sinn: Ist gegen Soll, Eingang gegen Ausgang, Stunden und Minuten. Ein Gauge kann mehr als eine Skala und mehr als einen Zeiger tragen, und jeder Zeiger wählt seine Skala und seinen Stil: eine Nadel, eine Marke oder einen Balken. Schwellenwerte können jeden Zeiger überwachen. Ein Rundinstrument mit zwei Zeigern spart Platz auf vollen Panels und macht die Lücke zwischen Soll und Ist sofort sichtbar.

  • Sammlung Pointers aus TsgcGaugePointer mit Kind, NeedleStyle, MarkerShape und ScaleIndex
  • Sammlung Scales mit Radius und Offset pro Skala
  • PointerIndex an Schwellenwerten und Feed-Bindungen
  • Formulare mit mehreren Zeigern laden auch in Community, das nur den ersten zeichnet

Community zeichnet eine Skala und einen Zeiger pro Gauge; die registrierte Edition zeichnet alle.

Hilfethema lesen

Alarme, Bewegung und Live-Daten

Gauges, die reagieren: Schwellenwerte, Animation, Industrieanzeigen und Live-Feeds.

Alarme, Bewegung und Live-Daten

Alarme mit Hysterese, im Hauptthread ausgelöst

Ein Druck, der um seine Grenze pendelt, darf nicht hundert Alarme pro Minute auslösen. Ein Schwellenwert hat einen Wert, eine Richtung und ein Hysteresband: Er löst einmal aus, wenn der Wert die Grenze überschreitet, und scharf wird er erst wieder, nachdem der Wert um das Band zurückgegangen ist. OnThreshold läuft immer im Hauptthread, egal welcher Thread den Wert geschrieben hat, sodass du direkt eine LED einschalten oder eine Meldung zeigen kannst. Jeder Schwellenwert kann einen anderen Zeiger überwachen, sodass ein Gauge einen Hochalarm auf den Ist-Wert und einen Tiefalarm auf einen zweiten Messwert auslösen kann.

  • Thresholds aus TsgcGaugeThreshold mit Value, Hysteresis und Direction
  • gtdRising, gtdFalling oder gtdBoth
  • ValueColor färbt den Werttext um, solange der Schwellenwert aktiv ist
  • Die Gallery-Demo schaltet bei 200 km/h eine Alarm-LED ein
Hilfethema lesen

Alarme, Bewegung und Live-Daten

Sanfte Nadelanimation mit Easing

Eine Nadel, die springt, wirkt kaputt, eine, die gleitet, wirkt wie ein Instrument. Jeder neue Wert wird über eine von dir gewählte Dauer vom alten aus animiert, mit einer von fünf Easing-Kurven, sodass eine plötzliche Änderung leicht zu verfolgen ist und ein Live-Feed nie flackert. Schalte die Animation für Prüfstände ab, die den Rohwert sofort brauchen. OnChange meldet dir, wann sich der Wert geändert hat, unabhängig von der Animation auf dem Bildschirm.

  • Animation (TsgcGaugeAnimation) mit Enabled und Duration, standardmäßig 300 ms
  • Easing: geLinear, geQuadOut, geCubicOut, geCubicInOut, geBackOut
  • Funktioniert bei jedem Gauge-Typ und in jeder Edition
  • IsAnimating verrät, ob sich ein Zeiger noch bewegt
Hilfethema lesen
Industrieanzeigen: Segmente, LEDs und Annunciatoren

Alarme, Bewegung und Live-Daten

Industrieanzeigen: Segmente, LEDs und Annunciatoren

Schaltpulte sprechen ihre eigene visuelle Sprache. Das digitale Gauge zeichnet Ziffern mit 7 Segmenten, 14 Segmenten oder als Punktmatrix, wahlweise mit Geistersegmenten und Neigung. LEDs blinken, der LED-Balken hält seinen Spitzenwert, und der Annunciator zeigt ein Panel aus Alarmkacheln, die blinken, bis ein Bediener sie quittiert. Jede dieser Anzeigen hat dieselben Skalen, Schwellenwerte und Themes wie die anderen Gauges, sodass Alarme überall gleich funktionieren.

  • TsgcVCLDigitalGauge: DisplayType, Digits, ShowGhost, Skew
  • TsgcVCLLEDGauge mit Blink und BlinkInterval; TsgcVCLLEDBarGauge mit PeakHold
  • TsgcVCLAnnunciatorGauge: Tiles, FlashInterval, Acknowledge, AcknowledgeAll
  • Die HMIPanel-Demo kombiniert sie mit Tanks, Pumpen und Drücken

Community hat Ziffern mit 7 Segmenten, LEDs und den LED-Balken. Die Anzeigen mit 14 Segmenten und als Punktmatrix sowie der Annunciator sind Registered.

Hilfethema lesen

Alarme, Bewegung und Live-Daten Nur Registered

MQTT-Topics direkt an Zeiger binden

In einer IoT-Konsole ist der meiste Code Rohrleitung: abonnieren, parsen, das Gauge finden, den Wert setzen. Die Brücke sgcGaugesWS beseitigt sie. Eine Feed-Quelle hängt sich an einen sgcWebSockets-Client, und jede Bindung ordnet ein Topic und einen JSON-Pfad einem Gauge-Zeiger zu. MQTT-Topic-Filter mit + und # werden unterstützt, und ein Filterpfad wählt ein Gerät aus einem gemeinsamen Strom. Mehrere Bindungen können sich eine Quelle teilen, sodass eine einzige Broker-Verbindung ein ganzes Panel antreibt.

  • TsgcGaugeFeedSource_MQTT, TsgcGaugeFeedSource_WebSocket, TsgcGaugeFeedSource_SSE
  • Bindings aus TsgcGaugeFeedBinding: Gauge, PointerIndex, Topic, ValuePath
  • FilterPath und FilterValue wählen Nachrichten aus
  • Ereignisse OnValue und OnError an der Quelle

Die Brücke braucht sgcWebSockets. In Community setzt du Value aus deinem eigenen Code; das ist aus einem Hintergrundthread sicher.

Hilfethema lesen

Ausgabe und Aussehen

Dasselbe Gauge auf einem Server und in jedem Theme.

Ausgabe und Aussehen

Gauges als PNG oder SVG ohne Fenster

Gauges werden auch außerhalb des Bildschirms gebraucht: in einem Schichtbericht, einer Status-E-Mail oder einer Webseite, die dein Backend ausliefert. Jedes Gauge-Modell und jedes Steuerelement speichert sich ohne Formular als PNG oder SVG, sodass ein Konsolenprogramm, ein Windows-Dienst oder ein Linux64-Server dasselbe Instrument rendern kann, das der Bediener sieht. Breite, Höhe und Skalierung sind Parameter, sodass ein Aufruf eine Miniatur für eine Liste und ein anderer ein scharfes 2x-Bild für einen Bericht erzeugt.

  • SaveToPNG und SaveToSVG an jedem Modell und Steuerelement
  • Frameworkneutrale Modelle wie TsgcRadialGauge und TsgcLinearGauge
  • Linux64 headless ab Delphi 10.2; die Headless-Demo schreibt PNG und SVG unter Win32, Win64 und Linux64
  • In .NET macht die Demo ConsoleRender dasselbe
Hilfethema lesen
Themes für Tag- und Nachtschichten

Ausgabe und Aussehen

Themes für Tag- und Nachtschichten

Ein Leitstand dimmt seine Bildschirme nachts, ein Büro bevorzugt einen hellen Look. Eine Eigenschaft schaltet ein Gauge zwischen dem hellen und dem dunklen Theme um, und die Farben von Zifferblatt, Skala, Beschriftung und Wert folgen. Gauges verwenden denselben Theme-Typ wie jedes sgcUI-Produkt, sodass sie gemeinsam mit Dashboards, Diagrammen und Grids umschalten. Bereiche behalten in beiden Themes ihre eigenen Farben, sodass Grün auch nachts normal bedeutet. Die Eigenschaft FormatSettings legt das Dezimaltrennzeichen der Anzeige unabhängig von der Locale des Benutzers fest.

  • Theme := utDark oder utLight
  • FaceColor, BackgroundColor und Schriften lassen sich weiterhin pro Gauge setzen
  • Title, Units und ValueFormat für die Anzeige
  • OnFormatValue, um den Werttext selbst zu formatieren
  • Rechts nach links für Arabisch und Hebräisch: Beschriftungen und Einheitentexte folgen der Richtung, während Zifferblätter, Uhren, Kompasse und Fortschrittsbalken ihre Ausrichtung behalten
Hilfethema lesen

Barrierefreiheit

UI Automation für Screenreader und hohen Kontrast, ohne Einrichtung.

Barrierefreiheit

Instrumente, die ihre Werte über UI Automation bereitstellen

Jede Instrumentenart stellt ihre Beschriftung, ihren Wert und ihren Bereich über Microsoft UI Automation bereit, und die Schwellenwerte werden als Ansagen ausgelöst. Das Instrument beschreibt sich mit derselben Textalternative, die es in ein barrierefreies PDF schreibt.

  • Ein Instrument zeigt nur einen Wert, daher ist es standardmäßig kein Tabstopp, wird aber weiterhin über UI Automation bereitgestellt
  • Setze TabStop auf True, wenn Tastaturnutzer auf einem Instrument landen sollen
  • Digital-, LED-, Uhr- und Kompass-Instrumente stellen ihren Wert als Text bereit, die anderen Arten als Bereichswert
  • Unter einem Windows-Kontrastdesign zeichnen die Instrumente mit den Systemfarben

Barrierefreiheit ist in jeder Edition standardmäßig aktiv, auch in der kostenlosen Community-Edition, unter VCL in jeder Delphi- und C++Builder-Version von Delphi 7 bis Delphi 13, in FireMonkey unter Windows sowie unter WinForms, WPF und Avalonia. In Delphi und C++Builder legen AccessibleName und AccessibleDescription den Namen und die Beschreibung fest, die über UI Automation bereitgestellt werden, und unter .NET leisten der Standardname und der Standard-Hilfetext des jeweiligen Frameworks dasselbe. Siehe die Konformitätsberichte zur Barrierefreiheit.

Hilfethema lesen

sgcGauges in Aktion erleben

sgcGauges in den sgcUI-Suite-Demos: vollständige Anwendungen, die offline mit integrierten Simulationsdaten laufen.

Wer mit sgcGauges baut

SCADA- und HMI-Bildschirme

Eine Werks-HMI zeigt zwei Tanks mit Füllstand-Gauges, Pumpen-LEDs, Druckanzeigen mit roten Bändern und ein Annunciator-Panel für Alarme. Schwellenwerte mit Hysterese lösen jeden Alarm einmal aus, der Annunciator blinkt, bis der Bediener quittiert, und die Nachtschicht schaltet auf das dunkle Theme.

  • Bereiche und Schwellenwerte
  • Annunciator
  • LEDs
  • Dunkles Theme
Demo HMIPanel ausführen

IoT- und Telemetriekonsolen

Eine Telemetriekonsole abonniert einen Broker und zeigt sechs Live-Messwerte von Feldgeräten. Bindungen ordnen jedes Topic und jedes JSON-Feld einem Zeiger zu, die Nadeln gleiten zu jedem neuen Wert, und es wird kein Code zur Nachrichtenverarbeitung von Hand geschrieben. Dieselben Gauges werden für die tägliche Status-Mail als PNG gerendert.

  • MQTT-Bindungen
  • Animation
  • Headless-PNG
Demo MQTTLive ausführen

KPI-Dashboards mit Instrumenten

Ein Management-Dashboard setzt Gauges in Kacheln neben KPI-Karten und Diagramme: die Auslastung als Fortschrittsring, die Lieferzeit als Bullet-Graph gegen ihr Ziel und das Service-Level als Rundinstrument mit farbigen Bändern. Alles folgt einer Theme-Eigenschaft, und die Gauges passen sich der Größe ihrer Kacheln an.

  • Fortschrittsring
  • Bullet-Graph
  • sgcDashboard-Kacheln
Demo Gallery ausführen

Ein Druck- und Füllstandspanel in wenigen Zeilen

Dieselbe API in Delphi, C++ Builder und C#: ein radiales Druck-Gauge mit rotem Band und einem Alarmschwellenwert, ein Bullet-Füllstand-Gauge und eine blinkende Alarm-LED.

Ein radiales Druck-Gauge mit rotem Band und einem Alarmschwellenwert, ein Bullet-Füllstand-Gauge und eine blinkende Alarm-LED auf einem VCL-Formular.

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;

Hilfethema lesen →

Dasselbe Panel in C++ Builder mit den generierten Headern.

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

Hilfethema lesen →

Die WinForms-Version in C#, mit denselben Klassennamen wie in 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

Hilfethema lesen →

Die sgcGauges-Demos ausführen

Gallery, GalleryFMX, Headless, HMIPanel, DashboardGauges und MQTTLive für Delphi und C++ Builder. Die .NET-Demos sind Gallery (WinForms), GalleryWpf, GalleryAvalonia, ConsoleRender, HMIPanel und MQTTLive.

HMIPanel

HMIPanel

Zwei Tanks mit Pumpen, Füllständen, Drücken und Annunciator-Alarmen, das Layout eines typischen Prozessbildschirms.

DashboardGauges

Sechs Gauges in sgcDashboard-Kacheln, die dem Dashboard-Theme folgen. Baut mit der Community Edition.

Headless

Ein Konsolenprogramm, das PNG und SVG unter Win32, Win64 und Linux64 schreibt.

GalleryFMX

Die Galerie unter FireMonkey, für Windows und Android.

Nur Registered MQTTLive

Sechs Gauges, über die Brücke sgcGaugesWS per MQTT gespeist. Braucht sgcWebSockets und einen Broker.

Kompilierte Demos

Sofort lauffähige Programme jedes sgcUI-Produkts, nichts zu installieren.

sgcUI_bin.zip herunterladen →

Wo sgcGauges enthalten ist

sgcGauges ist in den Editionen sgcUI Professional und Enterprise enthalten und wird auch einzeln verkauft. sgcGauges ist außerdem im All-Access-Paket enthalten.

sgcGauges Einzelpaket

€199 / Entwickler, voller Quellcode, 1 Jahr Updates.

sgcGauges kaufen → Preise ansehen →

sgcUI Professional

Standard plus sgcGauges, sgcCharts und sgcDashboard, ab €529.

Professional ansehen →

sgcUI Enterprise

Alle 14 sgcUI-Produkte, ab €699.

Enterprise ansehen →

Die kostenlose Community Edition (esegece.sgcGauges.Community auf NuGet) hat die Gauges radial, linear, digital mit 7 Segmenten, LED, LED-Balken und Fortschrittsring, mit Bereichen, Schwellenwerten, Animation, Themes und Headless-Ausgabe. Sie hat kein VU-Meter, keine Uhr, keinen Kompass und keinen Annunciator, keine zusätzlichen Skalen oder Zeiger und keine Brücke sgcGaugesWS.

FunktionCommunity (kostenlos)Registered
Radial, linear, digital mit 7 Segmenten, LED, LED-Balken und Fortschrittsring✓✓
Bereiche, Schwellenwerte, Animation und Themes✓✓
Headless-Ausgabe als PNG und SVG✓✓
VU-Meter, Uhr, Kompass und Annunciator−✓
Mehrere Skalen und Zeiger pro Gauge−✓
Anzeigen mit 14 Segmenten und als Punktmatrix−✓
Brücke sgcGaugesWS (MQTT, WebSocket, SSE)−✓

Unterstützte Frameworks und Plattformen

Komponenten in sgcGauges

Jedes Gauge hat ein frameworkneutrales Modell für das Headless-Rendering, ein VCL-Steuerelement (auch aus C++ Builder nutzbar), ein FireMonkey-Steuerelement sowie Steuerelemente für WinForms, WPF und Avalonia.

GaugeVCL und C++ BuilderFireMonkey.NET
RadialTsgcVCLRadialGaugeTsgcFMXRadialGaugeTsgcWinFormsRadialGauge
Linear (Balken, Thermometer, Bullet)TsgcVCLLinearGaugeTsgcFMXLinearGaugeTsgcWpfLinearGauge
Digital (7 Segmente, 14 Segmente, Punktmatrix)TsgcVCLDigitalGaugeTsgcFMXDigitalGaugeTsgcWinFormsDigitalGauge
LEDTsgcVCLLEDGaugeTsgcFMXLEDGaugeTsgcWinFormsLEDGauge
LED-BalkenTsgcVCLLEDBarGaugeTsgcFMXLEDBarGaugeTsgcWinFormsLEDBarGauge
FortschrittsringTsgcVCLProgressRingGaugeTsgcFMXProgressRingGaugeTsgcWinFormsProgressRingGauge
VU-MeterTsgcVCLVUMeterGaugeTsgcFMXVUMeterGaugeTsgcWinFormsVUMeterGauge
UhrTsgcVCLClockGaugeTsgcFMXClockGaugeTsgcWinFormsClockGauge
KompassTsgcVCLCompassGaugeTsgcFMXCompassGaugeTsgcWpfCompassGauge
AnnunciatorTsgcVCLAnnunciatorGaugeTsgcFMXAnnunciatorGaugeTsgcAvaloniaAnnunciatorGauge

Die .NET-Spalte zeigt ein Beispiel pro Gauge, jedes Gauge gibt es als TsgcWinForms, TsgcWpf und TsgcAvalonia. Alle Gauges teilen die Basisklasse TsgcCustomGauge mit den Sammlungen Scales, Pointers, Thresholds und Ranges. Die frameworkneutralen Modelle (TsgcRadialGauge, TsgcLinearGauge und so weiter) rendern ohne Fenster.

ZielKomponentePlattformen
Delphi 7 bis 13, VCLTsgcVCL-GaugesWin32 und Win64 ab XE2
Delphi XE6 bis 13, FireMonkeyTsgcFMX-GaugesWindows, macOS, iOS und Android
C++ Builder 2007 bis 13TsgcVCL-GaugesGenerierte .hpp-Header und statische Bibliotheken
Delphi 10.2 bis 13, frameworkneutralGauge-Modelle und Headless-Ausgabe als PNG und SVGLinux64 (keine Linux-Steuerelemente)
.NET Framework 4.7.2, .NET 8, 9 und 10Gauges für WinForms, WPF und AvaloniaWindows-Desktop, Avalonia-Ziele, Headless-Rendering

Häufig gestellte Fragen

Ja. Setze Value aus dem Thread, der die Daten empfängt. Schwellenwerte werden für dich ausgewertet, und OnThreshold wird immer im Hauptthread ausgelöst, sodass ein Handler Steuerelemente ohne zusätzliche Synchronisierung aktualisieren kann. Die Brücke sgcGaugesWS tut dasselbe, wenn sie Zeiger aus MQTT, WebSocket oder SSE speist.

Die Gauges radial, linear, digital mit 7 Segmenten, LED, LED-Balken und Fortschrittsring, mit Bereichen, Schwellenwerten, Animation, Themes und Headless-Ausgabe. VU-Meter, Uhr, Kompass, Annunciator, zusätzliche Skalen und Zeiger, Ziffern mit 14 Segmenten und als Punktmatrix sowie die Brücke sind Registered. Siehe Editionen.

Ja, mit der registrierten Edition und sgcWebSockets. Lege eine TsgcGaugeFeedSource_MQTT auf das Formular, verknüpfe deinen MQTT-Client und füge pro Gauge eine Bindung mit dem Topic und dem JSON-ValuePath hinzu. Topic-Filter mit + und # funktionieren, und FilterPath wählt ein Gerät aus einem gemeinsamen Topic.

Die FireMonkey-Steuerelemente funktionieren ab Delphi XE6, und die Demo GalleryFMX läuft auf Windows und Android. Unter Linux64 ist sgcGauges nur headless: Die Modelle kompilieren und rendern ab Delphi 10.2 PNG und SVG, aber es gibt keine Linux-Steuerelemente.

Ja. Jede Skala hat ihr eigenes Minimum, Maximum, MajorInterval und ihre Nebenstriche sowie beliebig viele farbige Bereiche mit Anfang, Ende, Farbe, Dicke und Beschriftung. Bei einem radialen Gauge kannst du außerdem Start- und Öffnungswinkel des Bogens wählen.

Ja. SaveToPNG und SaveToSVG funktionieren bei jedem Steuerelement und jedem Modell ohne Fenster, sodass ein Dienst oder ein Linux64-Server die aktuellen Messwerte in ein PDF oder eine E-Mail setzen kann. Die Gallery-Demo exportiert PNG auch in 2x.

Das digitale Gauge richtet seine Größe nach der Skala: Mit Digits auf 0 reserviert es so viele Ziffern, wie das Skalenmaximum braucht, und die Standardskala läuft von 0 bis 100. Setze Scales[0].Maximum auf den größten erwarteten Wert oder setze Digits ausdrücklich.

sgcGauges Hilfe

3,000+Entwickler
20+Jahre
761+Komponenten
30+API-Integrationen
5Plattformen
30 Tage Geld-zurück-GarantieNicht zufrieden? Fordere innerhalb von 30 Tagen nach dem Kauf eine vollständige Rückerstattung an. Rückerstattungsrichtlinie ansehen

sgcGauges noch heute testen

Die sgcUI-Testversion enthält sgcGauges und alle anderen sgcUI-Produkte.