Delphi, C++ Builder & .NET Onderdeel van sgcUI

sgcToolbar, de werkbalk en statusbalk voor Delphi, C++ Builder & .NET

Bouw het raamwerk van een desktopapplicatie met twee besturingselementen die op elke UI hetzelfde eruitzien. Een werkbalk met knoppen, schakelaars, radiogroepen en dropdowns, en een echte statusbalk met voortgangs- en indicatorpanelen die een workerthread rechtstreeks kan bijwerken.

VCL, FireMonkey, WinForms, WPF, AvaloniaStatusbalk bijwerken vanuit elke threadGratis .NET Community-editieInbegrepen in sgcUI Standard
EditorShell-werkbalk op 2x met toelichtingen bij een knop, schakelaar, scheidingslijn, dropdown, label en spacer

Een complete commando- en statusbalk

Twaalf functies voor de twee balken die elke desktopapplicatie nodig heeft, van radiogroepen tot live voortgang vanuit een workerthread.

Commando's

Elk item dat een commandobalk nodig heeft, waarbij het besturingselement de groepering, menu's en overflow afhandelt.

Elke werkbalkitemsoort in één besturingselement

Commando's

Elke werkbalkitemsoort in één besturingselement

Een echte applicatiewerkbalk combineert gewone knoppen, knoppen die ingedrukt blijven, knoppen met een menu, scheidingslijnen en een stukje tekst. Bij sgcToolbar is elk daarvan één item van dezelfde collectie, en Kind bepaalt hoe het wordt getekend en hoe het reageert. Items worden van links naar rechts neergezet met Spacing ertussen, en een spacer neemt de vrije breedte in, zodat je Help of een gebruikersnaam naar de rechterrand kunt duwen zonder indelingscode. Width legt een item vast wanneer je een stabiele grootte nodig hebt. Hints, uitgeschakelde statussen en hot tracking worden voor elke soort getekend.

  • tikButton, tikToggle en tikDropdown voor commando's
  • tikSeparator tekent een dunne verticale lijn
  • tikSpacer duwt de volgende items naar rechts
  • tikLabel toont tekst in de balk
Het helponderwerp lezen
Radiogroepen zonder code

Commando's

Radiogroepen zonder code

Tekstuitlijning, weergavemodi en tekengereedschappen zijn klassieke keuzes uit meerdere opties. Geef meerdere schakelitems dezelfde GroupIndex en ze vormen een radiogroep: Down zetten op één ervan, met een klik of vanuit code, geeft de andere vrij, en een klik op het item dat al ingedrukt is laat het ingedrukt, zodat er altijd één keuze geselecteerd blijft. Een schakelaar met GroupIndex 0 is een eenvoudige aan-uitschakelaar zoals Vet of Regelafbreking. De klik zet Down om voordat OnItemClick wordt geactiveerd, zodat je handler de nieuwe status leest. Er is geen gebeurtenisbedrading nodig om de groep consistent te houden.

  • GroupIndex boven 0 maakt een radiogroep
  • Down leest of zet de status vanuit code
  • De ingedrukte status wordt getekend met een accenttint
  • Een gekoppelde actie stuurt Down aan via zijn Checked
Het helponderwerp lezen

Commando's

Zoomniveaus, exportformaten en recente bestanden horen in een menu onder een knop, niet in tien extra knoppen. Een tikDropdown-item tekent een klein pijltje achter zijn bijschrift en toont het popupmenu dat je aan DropdownMenu toewijst direct onder de knop: een TPopupMenu in VCL en FireMonkey, een ContextMenuStrip in WinForms. OnItemClick en de OnClick van het item worden geactiveerd voordat het menu opent, zodat je de items eerst kunt vullen of aanvinken. Als het menu wordt vrijgegeven, wist de balk de verwijzing voor je. Eén klikdoel, één menu en een werkbalk die kort blijft, ook als de commando's toenemen.

  • DropdownMenu neemt de popup van jouw framework
  • Het pijltje wordt na het bijschrift getekend
  • Vul of vink het menu aan in OnItemClick
  • Werkt ook vanuit het overflowmenu
Het helponderwerp lezen

Commando's Alleen geregistreerd

Items die niet passen verhuizen naar een overflowmenu

Gebruikers wijzigen de venstergrootte, en een werkbalk die zijn laatste knoppen simpelweg afknipt, verbergt commando's die ze nodig hebben. Als de items niet passen, verplaatst sgcToolbar de laatste naar een overflowlijst en tekent een knop met een dubbele chevron aan het rechteruiteinde. Erop drukken toont OverflowMenu, tijdens runtime opgebouwd met één item per verborgen item, en een item kiezen werkt precies als een klik: een schakelaar wisselt om, OnItemClick wordt geactiveerd en een dropdown toont zijn menu. Het model vertelt je wat verborgen is. Wordt het venster weer groter, dan keren de items zelf terug in de balk.

  • OverflowMenu wordt tijdens runtime voor je opgebouwd
  • HasOverflow, OverflowCount en InOverflow per item
  • ItemAtPos meldt een treffer op de overflowknop
  • Gecompileerd onder SGC_TOOLBAR_ADVANCED

Community: de items die niet passen worden afgeknipt, er is geen overflowknop.

Het helponderwerp lezen

Commando's Alleen geregistreerd

Hergebruik je TActions

Als je commando's al in een TActionList staan, hoeft de werkbalk ze niet te dupliceren. Koppel een item via de eigenschap Action aan een willekeurige VCL- of FireMonkey-TAction en het volgt Caption, Enabled, Visible, Hint, ImageIndex en Checked van de actie. Een klik voert de actie uit met de balk als ActionComponent, tenzij het item een OnClick-handler heeft. De balken roepen bij inactiviteit InitiateAction aan, zodat een uitgeschakelde actie zijn knop uitschakelt zonder extra code. In .NET heeft het item Command en CommandParameter voor ICommand. Eén TActionList kan de werkbalk, het hoofdmenu en de navigatiebalk samen aansturen.

  • Action koppelt een item aan een willekeurige TBasicAction
  • Checked van de actie stuurt Down van een schakelaar aan
  • OnUpdate van de acties draait bij inactiviteit
  • .NET: Command en CommandParameter

Community: handel de OnClick van het item of de OnItemClick van de balk af in plaats van een actie.

Het helponderwerp lezen

Statusbalk

Een statusbalk die zichzelf indeelt, voortgang en status toont en updates uit elke thread accepteert.

Statuspanelen die zichzelf indelen

Statusbalk

Statuspanelen die zichzelf indelen

Regel en kolom, een bestandsnaam, de opslagstatus en een hoofdbericht strijden allemaal om de onderrand van het venster. TsgcVCLStatusBar deelt zijn Panels van links naar rechts in drie stappen in: vaste panelen nemen hun Width, AutoSize-panelen nemen de breedte van hun tekst en Spring-panelen delen wat er overblijft. Gebruik één springpaneel voor het hoofdbericht en de balk blijft netjes bij elke venstergrootte. Een dunne lijn scheidt de panelen en OnPanelClick vertelt je op welke is geklikt. Panelen zijn een collectie, dus je kunt ze tijdens ontwerptijd toevoegen en bewerken in de Object Inspector.

  • spkText-panelen met Alignment en Hint
  • Spring-panelen delen de vrije breedte
  • AutoSize-panelen passen zich aan hun tekst aan
  • OnPanelClick meldt een klik op een paneel
Het helponderwerp lezen
Voortgangsbalken en statusindicatoren

Statusbalk

Voortgangsbalken en statusindicatoren

Lange bewerkingen hebben een voortgangsbalk nodig, en live verbindingen een lampje dat laat zien of alles goed gaat. Een paneel kan een voortgangsbalk zijn die tot Progress procent in de accentkleur is gevuld, of een indicator: een gekleurde stip gevolgd door de tekst van het paneel. IndicatorState kiest uit, ok, waarschuwing of fout, met groen, oranje en rood apart afgestemd op het lichte en het donkere thema. Het past bij de status van een databaseverbinding, een datafeed of een achtergrondsynchronisatie. Zet Progress of IndicatorState en het paneel tekent zichzelf opnieuw, er is geen tekencode om te schrijven.

  • spkProgress met Progress van 0 tot 100
  • spkIndicator met IndicatorState
  • sisOff, sisOk, sisWarning, sisError
  • GetIndicatorColor geeft de kleur voor het thema terug
Het helponderwerp lezen

Statusbalk

Werk de statusbalk bij vanuit een workerthread

Downloads, feeds en lange berekeningen draaien in workerthreads, en elke statusupdate terugsturen naar de hoofdthread is vervelend en gemakkelijk fout te doen. SetPanelText, SetProgress en SetIndicator mogen vanuit elke thread worden aangeroepen, zonder Synchronize of Queue. Het model beschermt de waarden met een lock en activeert OnChange alleen wanneer een waarde echt veranderd is, zodat dezelfde waarde herhalen niets kost. De VCL-balk post daarna een bericht naar zijn venster en de FireMonkey-balk zet het hertekenen in de wachtrij, zodat de UI nooit buiten de hoofdthread wordt aangeraakt. Een thread die een paneel overleeft, is ook veilig.

  • SetPanelText, SetProgress, SetIndicator vanuit elke thread
  • Geen Synchronize of Queue in je code
  • Ongewijzigde waarden kosten niets
  • Een index buiten het bereik wordt genegeerd, nooit als fout gegeven
Het helponderwerp lezen

Uiterlijk, toetsenbord en uitvoer

Pictogrammen, thema's en toetsenbordondersteuning die passen bij de rest van sgcUI, plus afbeeldingen van de balken voor je documentatie.

Pictogrammen of glyphletters, bijschriften optioneel

Uiterlijk, toetsenbord en uitvoer

Pictogrammen of glyphletters, bijschriften optioneel

Elk klikbaar item heeft een pictogramplek van 16 logische pixels. Die toont de afbeelding op ImageIndex van de Images-lijst van de balk of, als een item geen afbeelding heeft, zijn Glyph: een letter of kort symbool waarvoor helemaal geen afbeeldingenlijst nodig is. Zet ShowCaptions uit voor een compacte balk met alleen pictogrammen, en het bijschrift wordt de hint, zodat er niets verloren gaat. VCL-afbeeldingenlijsten worden één keer geconverteerd naar straight ARGB met herstelde alfa en gecachet tot de lijst verandert, zodat lijsten met masker en van 32 bit er allebei goed uitzien. Combineer beide vrij zolang de pictogrammen nog worden ontworpen.

  • Images en ImageIndex voor afbeeldingenlijsten
  • Glyph wanneer er geen afbeelding is
  • ShowCaptions False voor alleen pictogrammen
  • FireMonkey-afbeeldingenlijsten vanaf Delphi XE8
  • Rechts naar links voor Arabisch en Hebreeuws: items stromen vanaf rechts, en MirrorGlyph spiegelt richtingsgebonden pictogrammen zoals terug, vooruit, ongedaan maken en opnieuw uitvoeren
Het helponderwerp lezen
Licht, donker en je eigen accentkleur

Uiterlijk, toetsenbord en uitvoer

Licht, donker en je eigen accentkleur

De balken nemen hun kleuren uit de sgcUICore-thematokens, dezelfde die elk product van de suite gebruikt, zodat een werkbalk boven een sgcGrid en naast een sgcNavigation-balk eruitziet als één applicatie. Theme kiest utLight of utDark, en AccentColor vervangt het accent dat de focusring, de ingedrukte tint van schakelaars en de voortgangsbalken gebruiken. Hot-, pressed-, down-, focused- en disabled-statussen worden allemaal voor je afgeleid. Elke balk heeft zijn eigen Theme, dus zet het op de werkbalk en op de statusbalk. Tijdens runtime wisselen tekent beide balken tegelijk opnieuw.

  • Theme: utDefault (standaard, volgt het applicatiethema), utLight of utDark
  • AccentColor als $AARRGGBB, 0 behoudt het themaaccent
  • Indicatorkleuren volgen het thema
  • Wissel tijdens runtime voor een donkere-modusschakelaar
Het helponderwerp lezen

Uiterlijk, toetsenbord en uitvoer

Toetsenbordtoegang en een werkende formaatgreep

De werkbalk kan deel uitmaken van de tabvolgorde wanneer je gebruikers dat nodig hebben: zet TabStop en de knop met focus toont een focusring, Links en Rechts verplaatsen tussen ingeschakelde knoppen, Home en End springen, Enter of Spatie activeert. Standaard staat het uit, zodat de werkbalk nooit de focus steelt van de editor eronder. ClickItem activeert een item vanuit code, bijvoorbeeld vanuit een formuliersneltoets. Op de statusbalk tekent SizeGrip greeppunten, en onder VCL verandert slepen ervan de grootte van een formulier waarvan het formaat kan worden gewijzigd. Onder FireMonkey wordt de greep getekend maar verandert hij het formaat van het formulier niet, dus zet SizeGrip daar uit wanneer het formulier niet vergroot kan worden.

  • TabStop onder VCL, CanFocus onder FireMonkey
  • ClickItem voert een item uit vanuit code
  • SizeGrip en GripRect op de statusbalk
  • De greep wijzigt het formaat van het formulier alleen als dat kan
Het helponderwerp lezen

Uiterlijk, toetsenbord en uitvoer

Render beide balken zonder venster

Schermafbeeldingen van een werkbalk in een handleiding zijn bij elke release verouderd. De renderer in sgcToolbar_Render tekent een TsgcToolbarModel of een TsgcStatusBarModel zonder venster en zonder VCL of FireMonkey, zodat een consoleprogramma, een test of een webserver dezelfde balken als afbeelding kan maken. SaveToPNG en SaveToSVG nemen een grootte in logische pixels en een schaal, dus 560 bij 44 op schaal 2 geeft een scherpe afbeelding van 1120 bij 88. De units bouwen op elk platform, Linux64 inbegrepen. Geef je eigen afbeeldingen door via OnGetImage en de afbeelding komt overeen met de draaiende applicatie.

  • SaveToPNG schrijft een PNG-bestand of -stream
  • SaveToSVG schrijft dezelfde balk als SVG
  • Werkt op TsgcToolbarModel en TsgcStatusBarModel
  • OnGetImage levert pictogrammen aan de headless uitvoer
Het helponderwerp lezen

Zie sgcToolbar in actie

sgcToolbar in de sgcUI suite-demo's: complete applicaties die offline draaien met ingebouwde gesimuleerde gegevens.

Wie bouwt er met sgcToolbar

Document- en code-editors

Een editor heeft schakelaars voor Vet en Cursief nodig, een radiogroep voor uitlijning, een Zoom-menu en een statusbalk met de regel, de kolom en de opslagstatus. sgcToolbar dekt dat allemaal met één itemcollectie en één paneelcollectie, gekoppeld aan de TActionList die je al hebt. Wanneer het venster smaller wordt, houdt het overflowmenu elk commando bereikbaar. De EditorShell-demo bouwt precies dit rond een TMemo.

  • Itemsoorten
  • Radiogroepen
  • Overflowmenu
Start de EditorShell-demo

Langlopende tools en live feeds

Importtools, synchronisatieclients en monitoringapps doen hun werk in achtergrondthreads en moeten dat rapporteren. Roep SetProgress, SetIndicator en SetPanelText rechtstreeks aan vanuit de workerthread en de statusbalk tekent opnieuw op de hoofdthread zonder Synchronize in je code. De indicator wordt groen, oranje of rood met de status van de taak. De LiveStatus-demo simuleert een download die precies dat doet.

  • Threadveilige updates
  • Voortgangspanelen
  • Indicatoren
Start de LiveStatus-demo

Eén commandobalk op elk platform

Een FireMonkey-applicatie die op Windows, macOS en mobiel wordt geleverd, verdient overal dezelfde werkbalk. TsgcFMXToolbar en TsgcFMXStatusBar hebben dezelfde items, panelen en gebeurtenissen als de VCL-balken, en de .NET-balken voor WinForms, WPF en Avalonia volgen dezelfde namen. EditorShellFMX is de FireMonkey-versie van de editorschil, met dezelfde items, hetzelfde overflowmenu en dezelfde statuspanelen.

  • FireMonkey-balken
  • Thema's
  • Statuspanelen
Start de EditorShellFMX-demo

Een werkbalk en statusbalk in een paar regels

Dezelfde API in Delphi, C++ Builder en C#: een schakelaar, een radiogroep, een dropdown en een statusbalk die wordt bijgewerkt vanuit de klikhandler.

procedure TMainForm.CreateBars;
var
  oItem: TsgcToolbarItem;
  oPanel: TsgcStatusBarPanel;
begin
  // a toolbar with a toggle, a Left/Center radio group and a dropdown
  FToolbar := TsgcVCLToolbar.Create(Self);
  FToolbar.Parent := Self;
  FToolbar.ShowCaptions := True;
  FToolbar.ShowHint := True;
  FToolbar.OnItemClick := ToolbarItemClick;
  oItem := FToolbar.Items.Add;
  oItem.Caption := 'Save';
  oItem.Glyph := 'S';
  oItem.Hint := 'Save the document';
  FToolbar.Items.Add.Kind := tikSeparator;
  oItem := FToolbar.Items.Add;
  oItem.Kind := tikToggle;
  oItem.Caption := 'Bold';
  oItem.Glyph := 'B';
  oItem := FToolbar.Items.Add;
  oItem.Kind := tikToggle;
  oItem.GroupIndex := 1;
  oItem.Down := True;
  oItem.Caption := 'Left';
  oItem := FToolbar.Items.Add;
  oItem.Kind := tikToggle;
  oItem.GroupIndex := 1;
  oItem.Caption := 'Center';
  oItem := FToolbar.Items.Add;
  oItem.Kind := tikDropdown;
  oItem.Caption := 'Zoom';
  oItem.DropdownMenu := FZoomMenu;
  // a status bar: a spring text panel, a progress bar and an indicator
  FStatusBar := TsgcVCLStatusBar.Create(Self);
  FStatusBar.Parent := Self;
  oPanel := FStatusBar.Panels.Add;
  oPanel.Spring := True;
  oPanel.Text := 'Ready';
  FStatusBar.Panels.Add.Kind := spkProgress;
  oPanel := FStatusBar.Panels.Add;
  oPanel.Kind := spkIndicator;
  oPanel.AutoSize := True;
  oPanel.Text := 'Saved';
  oPanel.IndicatorState := sisOk;
end;

procedure TMainForm.ToolbarItemClick(Sender: TObject; aItem: TsgcToolbarItem);
begin
  // the setters are thread safe, a worker thread can call them directly
  FStatusBar.SetPanelText(0, aItem.Caption + ' clicked');
  FStatusBar.SetProgress(1, 60);
  FStatusBar.SetIndicator(2, sisWarning);
end;
#include <vcl.h>
#include <Vcl.Menus.hpp>
#include "sgcUICore_Theme.hpp"
#include "sgcToolbar_Model.hpp"
#include "sgcToolbar_VCL.hpp"

class TBarHandler : public TObject
{
public:
  TsgcVCLStatusBar *StatusBar;
  void __fastcall ItemClick(TObject *Sender, TsgcToolbarItem *aItem);
};

void __fastcall TBarHandler::ItemClick(TObject *Sender, TsgcToolbarItem *aItem)
{
  // the setters are thread safe, a worker thread can call them directly
  StatusBar->SetPanelText(0, aItem->Caption + " clicked");
  StatusBar->SetProgress(1, 60);
  StatusBar->SetIndicator(2, sisWarning);
}

void __fastcall CreateBars(TForm *Form, TBarHandler *Handler, TPopupMenu *ZoomMenu)
{
  // a toolbar with a toggle, a Left/Center radio group and a dropdown
  TsgcVCLToolbar *Toolbar = new TsgcVCLToolbar(Form);
  Toolbar->Parent = Form;
  Toolbar->ShowCaptions = true;
  Toolbar->OnItemClick = Handler->ItemClick;
  TsgcToolbarItem *Item = Toolbar->Items->Add();
  Item->Caption = "Save";
  Item->Glyph = "S";
  Item->Hint = "Save the document";
  Toolbar->Items->Add()->Kind = tikSeparator;
  Item = Toolbar->Items->Add();
  Item->Kind = tikToggle;
  Item->Caption = "Bold";
  Item = Toolbar->Items->Add();
  Item->Kind = tikToggle;
  Item->GroupIndex = 1;
  Item->Down = true;
  Item->Caption = "Left";
  Item = Toolbar->Items->Add();
  Item->Kind = tikToggle;
  Item->GroupIndex = 1;
  Item->Caption = "Center";
  Item = Toolbar->Items->Add();
  Item->Kind = tikDropdown;
  Item->Caption = "Zoom";
  Item->DropdownMenu = ZoomMenu;
  // a status bar: a spring text panel, a progress bar and an indicator
  TsgcVCLStatusBar *StatusBar = new TsgcVCLStatusBar(Form);
  StatusBar->Parent = Form;
  TsgcStatusBarPanel *Panel = StatusBar->Panels->Add();
  Panel->Spring = true;
  Panel->Text = "Ready";
  StatusBar->Panels->Add()->Kind = spkProgress;
  Panel = StatusBar->Panels->Add();
  Panel->Kind = spkIndicator;
  Panel->AutoSize = true;
  Panel->Text = "Saved";
  Panel->IndicatorState = sisOk;
  Handler->StatusBar = StatusBar;
}
using System;
using System.Windows.Forms;
using esegece.sgcToolbar;

internal class MainForm : Form
{
    private readonly TsgcWinFormsToolbar Toolbar = new TsgcWinFormsToolbar();
    private readonly TsgcWinFormsStatusBar StatusBar = new TsgcWinFormsStatusBar();

    public MainForm()
    {
        // a toolbar with a toggle, a Left/Center radio group and a dropdown
        Toolbar.ShowCaptions = true;
        Toolbar.OnItemClick = ToolbarItemClick;
        TsgcToolbarItem oItem = Toolbar.Items.Add();
        oItem.Caption = "Save";
        oItem.Glyph = "S";
        oItem.Hint = "Save the document";
        Toolbar.Items.Add().Kind = TsgcToolbarItemKind.tikSeparator;
        oItem = Toolbar.Items.Add();
        oItem.Kind = TsgcToolbarItemKind.tikToggle;
        oItem.Caption = "Bold";
        oItem = Toolbar.Items.Add();
        oItem.Kind = TsgcToolbarItemKind.tikToggle;
        oItem.GroupIndex = 1;
        oItem.Down = true;
        oItem.Caption = "Left";
        oItem = Toolbar.Items.Add();
        oItem.Kind = TsgcToolbarItemKind.tikToggle;
        oItem.GroupIndex = 1;
        oItem.Caption = "Center";
        ContextMenuStrip oZoom = new ContextMenuStrip();
        oZoom.Items.Add("100%");
        oZoom.Items.Add("200%");
        oItem = Toolbar.Items.Add();
        oItem.Kind = TsgcToolbarItemKind.tikDropdown;
        oItem.Caption = "Zoom";
        oItem.DropdownMenu = oZoom;
        // a status bar: a spring text panel, a progress bar and an indicator
        TsgcStatusBarPanel oPanel = StatusBar.Panels.Add();
        oPanel.Spring = true;
        oPanel.Text = "Ready";
        StatusBar.Panels.Add().Kind = TsgcStatusPanelKind.spkProgress;
        oPanel = StatusBar.Panels.Add();
        oPanel.Kind = TsgcStatusPanelKind.spkIndicator;
        oPanel.AutoSize = true;
        oPanel.Text = "Saved";
        oPanel.IndicatorState = TsgcStatusIndicatorState.sisOk;
        Controls.Add(Toolbar);
        Controls.Add(StatusBar);
    }

    private void ToolbarItemClick(object sender, TsgcToolbarItem aItem)
    {
        // the setters are thread safe, a worker thread can call them directly
        StatusBar.SetPanelText(0, aItem.Caption + " clicked");
        StatusBar.SetProgress(1, 60);
        StatusBar.SetIndicator(2, TsgcStatusIndicatorState.sisWarning);
    }
}
dotnet add package esegece.sgcToolbar.WinForms

Probeer de sgcToolbar-demo's uit

De demo's EditorShell en LiveStatus worden meegeleverd voor VCL en C++ Builder, plus een FireMonkey-versie voor Delphi, en in de .NET-editie als WinForms-, WPF- en Avalonia-projecten.

EditorShell

Alleen geregistreerd EditorShell

Een TMemo-editorschil met schakelaars, een radiogroep Links, Midden en Rechts, een Zoom-dropdown, TActionList-koppelingen, het overflowmenu, panelen voor regel en kolom en een schakelaar Donker. Hij gebruikt overflow en acties, dus je hebt de editie Registered of de proefversie nodig.

LiveStatus

Een workerthread simuleert een download en voedt een tekstpaneel, een voortgangspaneel en een indicator die groen, oranje of rood wordt, met knoppen Start en Stop. Hij bouwt met de Community-editie.

Alleen geregistreerd EditorShellFMX

De EditorShell-demo met een TsgcFMXToolbar en een TsgcFMXStatusBar rond een FireMonkey-TMemo, alleen voor Delphi: dezelfde items, actielinks, hetzelfde overflowmenu en dezelfde statuspanelen.

Gecompileerde demo's

Direct uitvoerbare programma's van elk sgcUI-product, zonder installatie.

sgcUI_bin.zip downloaden →

Waar sgcToolbar in zit

sgcToolbar zit in elke sgcUI-editie, te beginnen met Standard, en wordt ook los verkocht. sgcToolbar zit ook in de All-Access-bundel.

sgcToolbar los pakket

€149 / ontwikkelaar, volledige broncode, 1 jaar updates.

sgcToolbar kopen → Prijzen bekijken →

sgcUI Standard

sgcToolbar, sgcGrid, sgcNavigation en sgcEditors, vanaf €380.

Standard bekijken →

sgcUI Professional

Standard plus sgcCharts, sgcDashboard en sgcGauges, vanaf €529.

Professional bekijken →

sgcUI Enterprise

Alle 14 sgcUI-producten, vanaf €699.

Enterprise bekijken →

De gratis Community-editie (esegece.sgcToolbar.Community op NuGet) laat het overflowmenu en de actielinks weg.

FunctieCommunity (gratis)Geregistreerd
Elke itemsoort, schakelaars, radiogroepen en dropdownmenu's✓✓
Tekst-, voortgangs- en indicatorpanelen✓✓
Threadveilige statusupdates✓✓
Pictogrammen, glyphs, thema's, toetsenbord en formaatgreep✓✓
Headless PNG- en SVG-uitvoer✓✓
Overflowmenu−✓
Actielinks (Delphi) en Command (.NET)−✓

Ondersteunde frameworks en platformen

Componenten in sgcToolbar

ComponentDoel
TsgcVCLToolbar, TsgcVCLStatusBarDelphi en C++ Builder, VCL (sgcToolbar_VCL)
TsgcFMXToolbar, TsgcFMXStatusBarDelphi en C++ Builder, FireMonkey (sgcToolbar_FMX)
TsgcToolbarItem, TsgcStatusBarPanel, TsgcToolbarModel, TsgcStatusBarModelFrameworkneutrale modellen (sgcToolbar_Model)
TsgcWinFormsToolbar, TsgcWinFormsStatusBar.NET, WinForms
TsgcWpfToolbar, TsgcWpfStatusBar.NET, WPF
TsgcAvaloniaToolbar, TsgcAvaloniaStatusBar.NET, Avalonia
DoelComponentPlatformen
Delphi 7 tot 13, VCLTsgcVCLToolbar, TsgcVCLStatusBarWin32 en Win64
Delphi XE6 tot 13, FireMonkeyTsgcFMXToolbar, TsgcFMXStatusBarWindows, macOS, iOS, Android en Linux (FMXLinux)
C++ Builder 2007 tot 13VCL- en FireMonkey-balkenGegenereerde .hpp-headers en statische bibliotheken
Delphi 10.2 tot 13, frameworkneutraalModellen en headless PNG- en SVG-rendererLinux64, bijvoorbeeld om een werkbalk op een server te renderen
.NET Framework 4.7.2, .NET 8, 9 en 10TsgcWinFormsToolbar, WPF- en Avalonia-balkenWinForms, WPF en Avalonia

Veelgestelde vragen

Ja. SetPanelText, SetProgress en SetIndicator mogen vanuit elke thread worden aangeroepen, zonder Synchronize of Queue. Het model beschermt de waarden met een lock en de balk tekent opnieuw op de hoofdthread. Elke andere eigenschap zet je vanuit de hoofdthread. Zie Threadveilige updates.

Het dekt dezelfde taken: knoppen, schakelaars, dropdownknoppen, scheidingslijnen en labels bovenaan, tekstpanelen onderaan. Het voegt een spacer-item, voortgangs- en indicatorpanelen, threadveilige setters, thema's en headless uitvoer toe. Je bestaande TActionList- en TPopupMenu-componenten sluiten aan via Action en DropdownMenu.

Het overflowmenu en de actielinks van de items, die in .NET Command en CommandParameter zijn. In Community worden de items die niet passen afgeknipt. Alle andere functies, waaronder de threadveilige statusupdates, de voortgangs- en indicatorpanelen en de headless uitvoer, zitten in Community.

Ja. C++ Builder 2007 tot 13 gebruiken dezelfde VCL- en FireMonkey-balken via gegenereerde headers en bibliotheken, en de demo's EditorShell en LiveStatus worden ook als C++ Builder-projecten meegeleverd. Het tabblad Code op deze pagina toont dezelfde werkbalk in Delphi, C++ Builder en C#.

Ja. Alle afmetingen zijn logische pixels vermenigvuldigd met de schaal van de monitor, en de pictogramplek is 16 logische pixels, dus knoppen, glyphs, voortgangsbalken en indicatorstippen blijven bij elke DPI scherp. FireMonkey neemt afbeeldingen uit de afbeeldingenlijst op de apparaatgrootte van het frame.

Ja. SaveToSVG en SaveToPNG van TsgcToolbarModel en TsgcStatusBarModel tekenen de balken zonder venster, ook op Linux64 vanaf Delphi 10.2, zodat een buildstap de afbeeldingen van je handleiding voor elke release opnieuw kan genereren. Een schaalparameter geeft scherpe afbeeldingen voor high-DPI-schermen en afdrukken.

sgcToolbar help

3,000+Ontwikkelaars
20+Jaar
761+Componenten
30+API-integraties
5Platformen
Niet-goed-geld-terug-garantie van 30 dagenNiet tevreden? Vraag binnen 30 dagen na aankoop een volledige terugbetaling aan. Bekijk het terugbetalingsbeleid

Probeer sgcToolbar vandaag nog

De sgcUI-proefversie bevat sgcToolbar en elk ander sgcUI-product.