Delphi, C++ Builder & .NET Część sgcUI

sgcGauges, panel przyrządów dla Delphi, C++ Builder & .NET

Dziesięć typów wskaźników do pulpitów i paneli HMI, od tarczy radialnej po tablicę alarmową. Narysuj zielone, bursztynowe i czerwone pasma, wywołaj alarm, gdy wartość przekroczy limit, pozwól wskazówce płynnie dojść do każdego nowego odczytu i wyrenderuj ten sam wskaźnik do PNG lub SVG na serwerze.

VCL, FireMonkey, WinForms, WPF, AvaloniaDziesięć typów wskaźników, sześć w CommunityPNG i SVG bez oknaW sgcUI Professional
Demo HMIPanel ze zbiornikami, pompami, paskami LED i tablicą alarmową

Wszystko, czego potrzebuje panel przyrządów

Jedenaście możliwości w czterech grupach, z prawdziwymi nazwami klas i właściwości oraz linkiem do każdego tematu pomocy. Funkcje oznaczone jako Registered nie wchodzą w skład bezpłatnej wersji .NET Community.

Przyrządy i skale

Dziesięć typów w jednym modelu, z zakresami, stylami i kilkoma wskazówkami.

Galeria sgcGauges ze wskaźnikami radialnym, pierścieniowym, kompasem, zegarem, miernikiem VU, liniowym, cyfrowym i LED

Przyrządy i skale

Dziesięć typów przyrządów w jednej bibliotece

Pulpity, panele HMI i stanowiska testowe potrzebują różnych przyrządów: tarczy dla prędkości, paska dla poziomu, odczytu cyfrowego dla częstotliwości, lampki dla pompy, panelu kafelków dla alarmów. sgcGauges dostarcza dziesięć typów o wspólnym modelu, tych samych skalach, wskazówkach, zakresach, progach i motywach. Poznaj jedno API, a każdy przyrząd zachowuje się tak samo.

  • TsgcVCLRadialGauge, TsgcVCLLinearGauge, TsgcVCLDigitalGauge, TsgcVCLLEDGauge, TsgcVCLLEDBarGauge, TsgcVCLProgressRingGauge
  • TsgcVCLVUMeterGauge, TsgcVCLClockGauge, TsgcVCLCompassGauge, TsgcVCLAnnunciatorGauge
  • Każdy typ istnieje też dla FireMonkey, a w .NET dla WinForms, WPF i Avalonia
  • Niezależny od frameworka model dla każdego typu, taki jak TsgcRadialGauge, do użycia bez interfejsu

Community ma wskaźniki radialny, liniowy, cyfrowy 7-segmentowy, LED, pasek LED i pierścień postępu. Miernik VU, zegar, kompas i tablica alarmowa są w edycji Registered.

Przeczytaj temat pomocy
Prędkościomierz od 0 do 260 km/h z zielonym, bursztynowym i czerwonym zakresem

Przyrządy i skale

Kolorowe zakresy na każdej skali

Operator odczyta wskaźnik jednym spojrzeniem tylko wtedy, gdy zieleń, bursztyn i czerwień mówią, gdzie powinna być wartość. Nadaj skali dowolne minimum i maksimum, ustaw główny odstęp i znaczniki pomocnicze, a potem dodaj kolorowe zakresy dla istotnych pasm. Zakresy mają własną grubość i podpis, a skala może biec odwrotnie albo umieszczać znaczniki wewnątrz lub na zewnątrz. Zakresy są rysowane na samej skali, więc pojawiają się też w wyjściu PNG i SVG oraz w obu motywach bez dodatkowej pracy.

  • Scales[0].Ranges.Add z StartValue, EndValue, Color, Thickness i Caption
  • TsgcGaugeScale: Minimum, Maximum, MajorInterval, MinorCount, Reversed
  • LabelFormat i ShowLabels dla etykiet skali
  • StartAngle i SweepAngle kształtują łuk wskaźnika radialnego
Przeczytaj temat pomocy
Trzy pionowe wskaźniki liniowe: wykres bullet, termometr i pasek

Przyrządy i skale

Wykres bullet, termometr i pasek w jednej kontrolce

Poziomy, temperatury i postęp względem celu są z natury liniowe. Jeden wskaźnik liniowy rysuje trzy style: zwykły pasek, termometr z bańką oraz wykres bullet porównujący wartość ze znacznikiem celu. Obróć go poziomo lub pionowo, aby pasował do zbiornika, paska bocznego lub wiersza tabeli. Cel wykresu bullet to właściwość, a nie dodatkowa wskazówka, więc wykres bullet działa także w bezpłatnej edycji Community. Mały wskaźnik mieści się w komórce siatki lub kafelku pulpitu.

  • LinearStyle: glsBar, glsThermometer lub glsBullet
  • Target rysuje znacznik celu bullet, w każdej edycji
  • Orientation i BulbSize
  • Zakresy i progi działają dokładnie tak jak we wskaźniku radialnym
Przeczytaj temat pomocy
Wskaźnik radialny z igłą dla wartości rzeczywistej i znacznikiem celu

Przyrządy i skale Tylko zarejestrowana

Kilka skal i wskazówek na jednym wskaźniku

Niektóre odczyty mają sens tylko obok siebie: wartość rzeczywista i cel, wlot i wylot, godziny i minuty. Wskaźnik może mieć więcej niż jedną skalę i więcej niż jedną wskazówkę, a każda wskazówka wybiera swoją skalę i styl: igłę, znacznik lub pasek. Progi mogą obserwować dowolną wskazówkę. Tarcza z podwójną wskazówką oszczędza miejsce na zatłoczonych panelach i od razu uwidacznia różnicę między celem a wartością rzeczywistą.

  • Kolekcja Pointers z TsgcGaugePointer i Kind, NeedleStyle, MarkerShape oraz ScaleIndex
  • Kolekcja Scales z Radius i Offset dla każdej skali
  • PointerIndex w progach i powiązaniach źródeł
  • Formularze z kilkoma wskazówkami nadal się wczytują w Community, które rysuje tylko pierwszą

Community rysuje jedną skalę i jedną wskazówkę na wskaźnik; edycja Registered rysuje wszystkie.

Przeczytaj temat pomocy

Alarmy, ruch i dane na żywo

Wskaźniki, które reagują: progi, animacja, wyświetlacze przemysłowe i źródła na żywo.

Alarmy, ruch i dane na żywo

Alarmy z histerezą, zgłaszane w wątku głównym

Ciśnienie krążące wokół limitu nie może wywoływać stu alarmów na minutę. Próg ma wartość, kierunek i pasmo histerezy: wyzwala się raz, gdy wartość go przekroczy, i uzbraja się ponownie dopiero po cofnięciu wartości o to pasmo. OnThreshold zawsze działa w wątku głównym, niezależnie od wątku, który zapisał wartość, więc możesz bezpośrednio zapalić diodę LED lub pokazać komunikat. Każdy próg może obserwować inną wskazówkę, więc jeden wskaźnik może zgłosić alarm górny dla wartości rzeczywistej i dolny dla drugiego odczytu.

  • Kolekcja Thresholds z TsgcGaugeThreshold oraz Value, Hysteresis i Direction
  • gtdRising, gtdFalling lub gtdBoth
  • ValueColor zmienia kolor tekstu wartości, gdy próg jest aktywny
  • Demo Gallery zapala diodę alarmową LED przy 200 km/h
Przeczytaj temat pomocy

Alarmy, ruch i dane na żywo

Płynna animacja igły z łagodzeniem

Igła, która skacze, wygląda na zepsutą, a ta, która płynie, wygląda jak prawdziwy przyrząd. Każda nowa wartość animuje się od poprzedniej w wybranym czasie, z jedną z pięciu krzywych łagodzenia, więc nagłą zmianę łatwo śledzić, a źródło na żywo nigdy nie migocze. Wyłącz animację na stanowiskach testowych, które potrzebują surowej wartości od razu. OnChange informuje o zmianie wartości, niezależnie od animacji na ekranie.

  • Animation (TsgcGaugeAnimation) z Enabled i Duration, domyślnie 300 ms
  • Easing: geLinear, geQuadOut, geCubicOut, geCubicInOut, geBackOut
  • Działa w każdym typie wskaźnika i w każdej edycji
  • IsAnimating mówi, czy wskazówka nadal się porusza
Przeczytaj temat pomocy
Wyświetlacze przemysłowe: segmenty, diody LED i tablice alarmowe

Alarmy, ruch i dane na żywo

Wyświetlacze przemysłowe: segmenty, diody LED i tablice alarmowe

Panele sterownicze mają własny język wizualny. Wskaźnik cyfrowy rysuje cyfry 7-segmentowe, 14-segmentowe lub matrycowe z opcjonalnymi segmentami cienia i pochyleniem. Diody LED migają, pasek LED zatrzymuje szczyt, a tablica alarmowa pokazuje panel kafelków alarmów, które migają, dopóki operator ich nie potwierdzi. Każdy z tych wyświetlaczy ma te same skale, progi i motywy co pozostałe wskaźniki, więc alarmy działają wszędzie tak samo.

  • TsgcVCLDigitalGauge: DisplayType, Digits, ShowGhost, Skew
  • TsgcVCLLEDGauge z Blink i BlinkInterval; TsgcVCLLEDBarGauge z PeakHold
  • TsgcVCLAnnunciatorGauge: Tiles, FlashInterval, Acknowledge, AcknowledgeAll
  • Demo HMIPanel łączy je ze zbiornikami, pompami i ciśnieniami

Community ma cyfry 7-segmentowe, diody LED i pasek LED. Wyświetlacze 14-segmentowe i matrycowe oraz tablica alarmowa są w edycji Registered.

Przeczytaj temat pomocy

Alarmy, ruch i dane na żywo Tylko zarejestrowana

Powiąż tematy MQTT bezpośrednio ze wskazówkami

W konsoli IoT większość kodu to instalacja: subskrypcja, parsowanie, znalezienie wskaźnika, ustawienie wartości. Most sgcGaugesWS ją usuwa. Źródło danych podpina się do klienta sgcWebSockets, a każde powiązanie mapuje temat i ścieżkę JSON na wskazówkę wskaźnika. Obsługiwane są filtry tematów MQTT z + i #, a ścieżka filtra wybiera jedno urządzenie ze wspólnego strumienia. Kilka powiązań może dzielić jedno źródło, więc pojedyncze połączenie z brokerem napędza cały panel.

  • TsgcGaugeFeedSource_MQTT, TsgcGaugeFeedSource_WebSocket, TsgcGaugeFeedSource_SSE
  • Kolekcja Bindings z TsgcGaugeFeedBinding: Gauge, PointerIndex, Topic, ValuePath
  • FilterPath i FilterValue wybierają wiadomości
  • Zdarzenia OnValue i OnError w źródle

Most wymaga sgcWebSockets. W Community ustawiaj Value z własnego kodu; jest to bezpieczne z wątku w tle.

Przeczytaj temat pomocy

Wyjście i wygląd

Ten sam wskaźnik na serwerze i w dowolnym motywie.

Wyjście i wygląd

Wskaźniki jako PNG lub SVG bez okna

Wskaźniki bywają potrzebne także poza ekranem: w raporcie zmianowym, e-mailu ze statusem lub na stronie serwowanej przez Twój backend. Każdy model wskaźnika i każda kontrolka zapisuje się jako PNG lub SVG bez formularza, więc program konsolowy, usługa Windows lub serwer Linux64 może wyrenderować ten sam przyrząd, który widzi operator. Szerokość, wysokość i skala to parametry, więc jedno wywołanie tworzy miniaturę dla listy, a inne ostry obraz 2x dla raportu.

  • SaveToPNG i SaveToSVG w każdym modelu i kontrolce
  • Modele niezależne od frameworka, takie jak TsgcRadialGauge i TsgcLinearGauge
  • Linux64 bez interfejsu od Delphi 10.2; demo Headless zapisuje PNG i SVG w Win32, Win64 i Linux64
  • W .NET robi to samo demo ConsoleRender
Przeczytaj temat pomocy
Motywy dla zmiany dziennej i nocnej

Wyjście i wygląd

Motywy dla zmiany dziennej i nocnej

Dyspozytornia przyciemnia ekrany w nocy, biuro woli jasny wygląd. Jedna właściwość przełącza wskaźnik między jasnym a ciemnym motywem, a kolory tarczy, skali, etykiet i wartości podążają za nią. Wskaźniki używają tego samego typu motywu co każdy produkt sgcUI, więc przełączają się razem z pulpitami, wykresami i siatkami. Zakresy zachowują własne kolory w obu motywach, więc zieleń nocą nadal oznacza normę. Właściwość FormatSettings ustala separator dziesiętny odczytu niezależnie od ustawień regionalnych użytkownika.

  • Theme := utDark lub utLight
  • FaceColor, BackgroundColor i czcionki nadal można ustawiać dla każdego wskaźnika
  • Title, Units i ValueFormat dla odczytu
  • OnFormatValue, aby samodzielnie sformatować tekst wartości
  • Od prawej do lewej dla arabskiego i hebrajskiego: podpisy i teksty jednostek podążają za kierunkiem, a tarcze, zegary, kompasy i paski postępu zachowują swoją orientację
Przeczytaj temat pomocy

Dostępność

UI Automation dla czytników ekranu i wysoki kontrast, bez konfiguracji.

Dostępność

Wskaźniki udostępniające swoje wartości UI Automation

Każdy rodzaj wskaźnika udostępnia Microsoft UI Automation swój podpis, wartość i zakres, a przekroczenia progów są zgłaszane jako komunikaty. Wskaźnik opisuje się tym samym tekstem alternatywnym, który zapisuje do dostępnego pliku PDF.

  • Wskaźnik tylko pokazuje wartość, więc domyślnie nie znajduje się w kolejności tabulacji, a mimo to jest udostępniany UI Automation
  • Ustaw TabStop na True, gdy użytkownicy klawiatury mają trafiać na wskaźnik
  • Wskaźniki cyfrowe, LED, zegarowe i kompasowe udostępniają swoją wartość jako tekst, pozostałe rodzaje jako wartość z zakresu
  • W motywie wysokiego kontrastu systemu Windows wskaźniki rysują się kolorami systemowymi

Dostępność jest domyślnie włączona w każdej edycji, łącznie z bezpłatną edycją Community, w VCL w każdej wersji Delphi i C++Builder od Delphi 7 do Delphi 13, w FireMonkey w systemie Windows oraz w WinForms, WPF i Avalonia. W Delphi i C++Builder właściwości AccessibleName i AccessibleDescription ustawiają nazwę i opis udostępniane UI Automation, a w .NET to samo robią standardowa nazwa dostępności i tekst pomocy każdego frameworka. Zobacz raporty zgodności dotyczące dostępności.

Przeczytaj temat pomocy

Zobacz sgcGauges w akcji

sgcGauges w demach pakietu sgcUI: kompletne aplikacje działające offline na wbudowanych danych symulowanych.

Kto buduje z sgcGauges

Ekrany SCADA i HMI

HMI zakładu pokazuje dwa zbiorniki ze wskaźnikami poziomu, diody LED pomp, tarcze ciśnienia z czerwonymi pasmami i panel tablicy alarmowej. Progi z histerezą zgłaszają każdy alarm raz, tablica alarmowa miga, dopóki operator jej nie potwierdzi, a zmiana nocna przełącza się na ciemny motyw.

  • Zakresy i progi
  • Tablica alarmowa
  • Diody LED
  • Ciemny motyw
Uruchom demo HMIPanel

Konsole IoT i telemetrii

Konsola telemetrii subskrybuje brokera i pokazuje sześć odczytów na żywo z urządzeń terenowych. Powiązania mapują każdy temat i pole JSON na wskazówkę, igły płynnie dochodzą do każdej nowej wartości, a kod obsługi wiadomości nie jest pisany ręcznie. Te same wskaźniki renderują się jako PNG do codziennego maila ze statusem.

  • Powiązania MQTT
  • Animacja
  • PNG bez interfejsu
Uruchom demo MQTTLive

Pulpity KPI z przyrządami

Pulpit zarządczy umieszcza wskaźniki w kafelkach obok kart KPI i wykresów: wykorzystanie jako pierścień postępu, czas dostawy jako wykres bullet względem celu, a poziom usług jako tarcza z kolorowymi pasmami. Wszystko podąża za jedną właściwością motywu, a wskaźniki same dopasowują rozmiar do kafelków.

  • Pierścień postępu
  • Wykres bullet
  • Kafelki sgcDashboard
Uruchom 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;

Przeczytaj temat pomocy →

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

Przeczytaj temat pomocy →

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

Przeczytaj temat pomocy →

Uruchom dema sgcGauges

Gallery, GalleryFMX, Headless, HMIPanel, DashboardGauges i MQTTLive dla Delphi i C++ Builder. Dema .NET to Gallery (WinForms), GalleryWpf, GalleryAvalonia, ConsoleRender, HMIPanel i MQTTLive.

HMIPanel

HMIPanel

Dwa zbiorniki z pompami, poziomami, ciśnieniami i alarmami tablicy alarmowej, układ typowego ekranu procesowego.

DashboardGauges

Sześć wskaźników w kafelkach sgcDashboard, podążających za motywem pulpitu. Buduje się z edycją Community.

Headless

Program konsolowy zapisujący PNG i SVG w Win32, Win64 i Linux64.

GalleryFMX

Galeria w FireMonkey, dla Windows i Androida.

Tylko zarejestrowana MQTTLive

Sześć wskaźników zasilanych przez MQTT za pomocą mostu sgcGaugesWS. Wymaga sgcWebSockets i brokera.

Skompilowane dema

Gotowe do uruchomienia pliki wykonywalne każdego produktu sgcUI, nic nie trzeba instalować.

Pobierz sgcUI_bin.zip →

Gdzie jest sgcGauges

sgcGauges wchodzi w skład edycji sgcUI Professional i Enterprise, a jest też sprzedawany osobno. sgcGauges jest również w pakiecie All-Access.

Pojedynczy pakiet sgcGauges

€199 / programista, pełny kod źródłowy, 1 rok aktualizacji.

Kup sgcGauges → Zobacz cennik →

sgcUI Professional

Standard plus sgcGauges, sgcCharts i sgcDashboard, od €529.

Zobacz Professional →

sgcUI Enterprise

Wszystkie produkty sgcUI (14), od €699.

Zobacz Enterprise →

Bezpłatna edycja Community (esegece.sgcGauges.Community w NuGet) ma wskaźniki radialny, liniowy, cyfrowy 7-segmentowy, LED, pasek LED i pierścień postępu z zakresami, progami, animacją, motywami i wyjściem bez interfejsu. Nie ma miernika VU, zegara, kompasu ani tablicy alarmowej, dodatkowych skal i wskazówek ani mostu sgcGaugesWS.

FunkcjaCommunity (bezpłatna)Zarejestrowana
Radialny, liniowy, cyfrowy 7-segmentowy, LED, pasek LED i pierścień postępu✓✓
Zakresy, progi, animacja i motywy✓✓
Wyjście PNG i SVG bez interfejsu✓✓
Miernik VU, zegar, kompas i tablica alarmowa−✓
Kilka skal i wskazówek na wskaźnik−✓
Wyświetlacze 14-segmentowe i matrycowe−✓
Most sgcGaugesWS (MQTT, WebSocket, SSE)−✓

Obsługiwane frameworki i platformy

Komponenty w sgcGauges

Każdy wskaźnik ma niezależny od frameworka model do renderowania bez interfejsu, kontrolkę VCL (używaną także z C++ Builder), kontrolkę FireMonkey oraz kontrolki WinForms, WPF i Avalonia.

WskaźnikVCL i C++ BuilderFireMonkey.NET
RadialnyTsgcVCLRadialGaugeTsgcFMXRadialGaugeTsgcWinFormsRadialGauge
Liniowy (pasek, termometr, bullet)TsgcVCLLinearGaugeTsgcFMXLinearGaugeTsgcWpfLinearGauge
Cyfrowy (7-segmentowy, 14-segmentowy, matrycowy)TsgcVCLDigitalGaugeTsgcFMXDigitalGaugeTsgcWinFormsDigitalGauge
LEDTsgcVCLLEDGaugeTsgcFMXLEDGaugeTsgcWinFormsLEDGauge
Pasek LEDTsgcVCLLEDBarGaugeTsgcFMXLEDBarGaugeTsgcWinFormsLEDBarGauge
Pierścień postępuTsgcVCLProgressRingGaugeTsgcFMXProgressRingGaugeTsgcWinFormsProgressRingGauge
Miernik VUTsgcVCLVUMeterGaugeTsgcFMXVUMeterGaugeTsgcWinFormsVUMeterGauge
ZegarTsgcVCLClockGaugeTsgcFMXClockGaugeTsgcWinFormsClockGauge
KompasTsgcVCLCompassGaugeTsgcFMXCompassGaugeTsgcWpfCompassGauge
Tablica alarmowaTsgcVCLAnnunciatorGaugeTsgcFMXAnnunciatorGaugeTsgcAvaloniaAnnunciatorGauge

Kolumna .NET pokazuje jeden przykład dla każdego wskaźnika, każdy wskaźnik istnieje jako TsgcWinForms, TsgcWpf i TsgcAvalonia. Wszystkie wskaźniki dzielą klasę bazową TsgcCustomGauge z kolekcjami Scales, Pointers, Thresholds i Ranges. Modele niezależne od frameworka (TsgcRadialGauge, TsgcLinearGauge i tak dalej) renderują się bez okna.

CelKomponentPlatformy
Delphi 7 do 13, VCLWskaźniki TsgcVCLWin32 oraz Win64 od XE2
Delphi XE6 do 13, FireMonkeyWskaźniki TsgcFMXWindows, macOS, iOS i Android
C++ Builder 2007 do 13Wskaźniki TsgcVCLWygenerowane nagłówki .hpp i biblioteki statyczne
Delphi 10.2 do 13, niezależnie od frameworkaModele wskaźników i wyjście PNG i SVG bez interfejsuLinux64 (bez kontrolek dla Linuksa)
.NET Framework 4.7.2, .NET 8, 9 i 10Wskaźniki WinForms, WPF i AvaloniaPulpit Windows, platformy Avalonia, renderowanie bez interfejsu

Najczęściej zadawane pytania

Tak. Ustaw Value z wątku, który odbiera dane. Progi są oceniane za Ciebie, a OnThreshold zawsze uruchamia się w wątku głównym, więc procedura obsługi może aktualizować kontrolki bez dodatkowej synchronizacji. Most sgcGaugesWS robi to samo, gdy zasila wskazówki z MQTT, WebSocket lub SSE.

Wskaźniki radialny, liniowy, cyfrowy 7-segmentowy, LED, pasek LED i pierścień postępu, z zakresami, progami, animacją, motywami i wyjściem bez interfejsu. Miernik VU, zegar, kompas, tablica alarmowa, dodatkowe skale i wskazówki, cyfry 14-segmentowe i matrycowe oraz most są w edycji Registered. Zobacz Edycje.

Tak, z edycją Registered i sgcWebSockets. Upuść TsgcGaugeFeedSource_MQTT, połącz klienta MQTT i dodaj powiązanie dla każdego wskaźnika z Topic i ścieżką JSON ValuePath. Filtry tematów z + i # działają, a FilterPath wybiera jedno urządzenie ze wspólnego tematu.

Kontrolki FireMonkey działają od Delphi XE6, a demo GalleryFMX działa w Windows i Androidzie. W Linux64 sgcGauges jest tylko bez interfejsu: modele kompilują się i renderują PNG oraz SVG od Delphi 10.2, ale nie ma kontrolek dla Linuksa.

Tak. Każda skala ma własne Minimum, Maximum, MajorInterval i znaczniki pomocnicze oraz dowolną liczbę kolorowych zakresów z początkiem, końcem, kolorem, grubością i podpisem. Wskaźnik radialny pozwala też wybrać kąt początkowy i rozpiętość łuku.

Tak. SaveToPNG i SaveToSVG działają w każdej kontrolce i każdym modelu, bez okna, więc usługa lub serwer Linux64 może wstawić bieżące odczyty do PDF lub e-maila. Demo Gallery eksportuje też PNG w 2x.

Wskaźnik cyfrowy dobiera rozmiar ze skali: przy Digits równym 0 rezerwuje tyle cyfr, ile potrzebuje maksimum skali, a domyślna skala biegnie od 0 do 100. Ustaw Scales[0].Maximum na największą oczekiwaną wartość albo ustaw Digits jawnie.

Pomoc sgcGauges

3,000+Programistów
20+Lat
761+Komponentów
30+Integracji API
5Platform
30-dniowa gwarancja zwrotu pieniędzyNie jesteś zadowolony? Poproś o pełny zwrot pieniędzy w ciągu 30 dni od zakupu. Zobacz politykę zwrotów

Wypróbuj sgcGauges już dziś

Wersja próbna sgcUI zawiera sgcGauges i każdy inny produkt sgcUI.