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

sgcToolbar, la barra degli strumenti e la barra di stato per Delphi, C++ Builder & .NET

Costruisci la cornice di un'applicazione desktop con controlli che hanno lo stesso aspetto su ogni UI. Una barra degli strumenti con pulsanti, toggle, gruppi di opzioni e menu a discesa, un Ribbon con schede, gallerie, KeyTips e vista backstage per le applicazioni che superano una barra degli strumenti, con la sua barra di accesso rapido in una barra del titolo con tema, e una vera barra di stato con pannelli di avanzamento e di indicatori che un thread di lavoro può aggiornare direttamente.

VCL, FireMonkey, WinForms, WPF, AvaloniaRibbon con KeyTips e backstageAggiornamenti della barra di stato da qualsiasi threadEdizione .NET Community gratuitaIncluso in sgcUI Standard
Barra degli strumenti di EditorShell a 2x con didascalie su un pulsante, un toggle, un separatore, un menu a discesa, un'etichetta e uno spacer

Una barra di comandi e di stato completa

Quattordici funzionalità per le barre di cui ogni applicazione desktop ha bisogno, da un Ribbon completo e dai gruppi di opzioni all'avanzamento live da un thread di lavoro.

Ribbon

Un Ribbon in stile Office per le applicazioni con più comandi di quanti ne contenga una barra degli strumenti, su ogni framework sgcUI.

Un Ribbon con schede, gruppi, pulsanti grandi e piccoli, una galleria e la barra di accesso rapido

Ribbon Solo Registered

Un Ribbon che si adatta, con KeyTips e vista backstage

I tuoi utenti aprono un editor di report su un portatile, agganciano la finestra a metà schermo e si aspettano comunque di raggiungere ogni comando. Il Ribbon lo rende possibile. I comandi vivono in schede e gruppi, e quando la finestra si restringe ogni gruppo scende da pulsanti grandi a medi e piccoli e infine si comprime in un solo pulsante, secondo la priorità che imposti. Il Ribbon scorre quando tutto è compresso. Le gallerie passano da righe complete a meno colonne e poi a un menu a discesa. Premi Alt e compaiono i KeyTips, digita la scheda e il comando, ed Esc torna indietro di un passo. Il pulsante dell'applicazione apre una vista backstage con comandi e con pagine che ospitano i tuoi controlli. Una barra di accesso rapido sta sopra o sotto il Ribbon, e gli utenti la personalizzano da un menu o con il clic destro.

  • Schede, gruppi e schede contestuali con una fascia di colore, più i selettori di finestre di dialogo
  • Pulsanti grandi e piccoli, pulsanti divisi, menu a discesa, toggle, caselle di controllo, caselle combinate e caselle di modifica
  • Doppio clic su una scheda o Ctrl+F1 per ridurre a icona il Ribbon
  • Temi chiaro, scuro e ad alto contrasto che seguono il tema dell'applicazione
  • Da destra a sinistra, DPI elevati e UI Automation per i lettori di schermo
  • Collegamento di Action in Delphi, ICommand in .NET e dichiarazione XAML in WPF e Avalonia
  • SaveLayout e LoadLayout salvano in JSON la barra di accesso rapido di ogni utente e lo stato ridotto a icona

Edizione Registered su VCL, FireMonkey, WinForms, WPF e Avalonia, Delphi 7 a 13 e C++ Builder. Community non include il Ribbon. I KeyTips funzionano sul desktop Windows. La barra di accesso rapido ha una riga propria, oppure il form Ribbon la disegna nella barra del titolo della finestra.

Panoramica del Ribbon
Layout adattivo
Gallerie
KeyTips
Vista backstage
Barra di accesso rapido

Ribbon Solo Registered

Un form Ribbon con la barra di accesso rapido nella barra del titolo

Un'applicazione Office non ha una grigia barra del titolo di Windows sopra il suo Ribbon. La barra di accesso rapido e il nome del documento stanno nella barra del titolo, e la barra del titolo e il Ribbon sembrano un'unica superficie. Il form Ribbon dà alla tua finestra la stessa cornice. Trascinalo sul form e scegli il Ribbon: sgcUI rimuove la barra del titolo nativa e disegna una barra del titolo con tema con l'icona della finestra, la barra di accesso rapido, il titolo centrato sulla finestra e i pulsanti Riduci a icona, Ingrandisci e Chiudi, nel colore della riga delle schede del tema del Ribbon, Classic o Fluent, chiaro o scuro. Il Ribbon sta subito sotto ed è più basso di una riga. La finestra mantiene l'ombra, i bordi di ridimensionamento e il comportamento da ingrandita, Windows 11 mostra i layout snap sul pulsante Ingrandisci, e lo spazio vuoto della barra del titolo trascina la finestra.

  • TsgcVCLRibbonForm e TsgcFMXRibbonForm in Delphi e C++ Builder, TsgcWinFormsRibbonForm, TsgcWpfRibbonWindow e TsgcAvaloniaRibbonWindow in .NET
  • La barra di accesso rapido nella barra del titolo è quella del Ribbon: gli stessi clic, Action, suggerimenti, KeyTips e menu di personalizzazione
  • Con QATPosition su rqpBelow o ShowQAT disattivato, la barra del titolo mostra solo il titolo, e Mostra sopra il Ribbon riporta la barra in alto
  • CaptionAlignment centra il titolo o lo mette dopo l'icona, e TitleBarHeight imposta l'altezza
  • In WPF e Avalonia la proprietà associata Ribbon della finestra la configura da XAML

Edizione Registered, come il Ribbon: Community non include il form Ribbon. La cornice con tema richiede Windows con la composizione del desktop, e in FireMonkey viene applicata solo su Windows. Senza di essa, il Ribbon mostra la propria riga della barra di accesso rapido.

Leggi l'argomento della guida
Form Ribbon .NET

Comandi

Ogni voce di cui una barra di comandi ha bisogno, con raggruppamento, menu e overflow gestiti dal controllo.

Ogni tipo di voce della barra in un solo controllo

Comandi

Ogni tipo di voce della barra in un solo controllo

Una vera barra degli strumenti applicativa mescola pulsanti semplici, pulsanti che restano premuti, pulsanti con un menu, separatori e un po' di testo. Con sgcToolbar ognuno è una voce della stessa collezione, e Kind decide come viene disegnato e come reagisce. Le voci sono disposte da sinistra a destra con Spacing tra loro, e uno spacer occupa la larghezza libera, così puoi spingere Aiuto o un nome utente sul bordo destro senza alcun codice di layout. Width fissa una voce quando serve una dimensione stabile. Suggerimenti, stati disabilitati e hot tracking sono disegnati per ogni tipo.

  • tikButton, tikToggle e tikDropdown per i comandi
  • tikSeparator disegna una sottile linea verticale
  • tikSpacer spinge a destra le voci successive
  • tikLabel mostra testo dentro la barra
Leggi l'argomento della guida
Gruppi di opzioni senza codice

Comandi

Gruppi di opzioni senza codice

Allineamento del testo, modalità di visualizzazione e strumenti di disegno sono classiche scelte uno tra molti. Assegna lo stesso GroupIndex a più voci toggle e formano un gruppo di opzioni: impostare Down su una di esse, con un clic o da codice, rilascia le altre, e un clic sulla voce già premuta la lascia premuta, così una scelta resta sempre selezionata. Un toggle con GroupIndex 0 è un semplice interruttore acceso e spento come Grassetto o A capo automatico. Il clic inverte Down prima che OnItemClick venga generato, così il tuo gestore legge il nuovo stato. Non serve alcun collegamento di eventi per mantenere coerente il gruppo.

  • GroupIndex maggiore di 0 crea un gruppo di opzioni
  • Down legge o imposta lo stato da codice
  • Lo stato premuto è disegnato con una tinta di accento
  • Un'azione collegata comanda Down tramite il suo Checked
Leggi l'argomento della guida

Comandi

I livelli di zoom, i formati di esportazione e i file recenti stanno in un menu sotto un pulsante, non in altri dieci pulsanti. Una voce tikDropdown disegna una piccola freccia dopo la didascalia e mostra il menu popup che assegni a DropdownMenu subito sotto il pulsante: un TPopupMenu in VCL e FireMonkey, un ContextMenuStrip in WinForms. OnItemClick e l'OnClick della voce vengono generati prima che il menu si apra, così puoi riempire o selezionare prima le sue voci. Se il menu viene liberato, la barra azzera il riferimento per te. Un solo bersaglio di clic, un solo menu e una barra degli strumenti che resta corta anche quando i comandi crescono.

  • DropdownMenu accetta il popup del tuo framework
  • La freccia è disegnata dopo la didascalia
  • Riempi o seleziona il menu in OnItemClick
  • Funziona anche dal menu di overflow
Leggi l'argomento della guida

Comandi Solo Registered

Le voci che non entrano passano a un menu di overflow

Gli utenti ridimensionano le finestre, e una barra degli strumenti che si limita a tagliare gli ultimi pulsanti nasconde comandi di cui hanno bisogno. Quando le voci non entrano, sgcToolbar sposta le ultime in un elenco di overflow e disegna un pulsante con doppio chevron all'estremità destra. Premendolo si mostra OverflowMenu, costruito a runtime con una voce per ogni elemento nascosto, e scegliere una voce agisce esattamente come un clic: un toggle si inverte, OnItemClick viene generato e un dropdown mostra il suo menu. Il modello ti dice cosa è nascosto. Quando la finestra torna a crescere, le voci rientrano da sole nella barra.

  • OverflowMenu viene costruito per te a runtime
  • HasOverflow, OverflowCount e InOverflow per ogni voce
  • ItemAtPos segnala un clic sul pulsante di overflow
  • Compilato con SGC_TOOLBAR_ADVANCED

Community: le voci che non entrano vengono tagliate, non c'è il pulsante di overflow.

Leggi l'argomento della guida

Comandi Solo Registered

Riusa i tuoi TAction

Se i tuoi comandi vivono già in una TActionList, la barra degli strumenti non deve duplicarli. Collega una voce a qualsiasi TAction VCL o FireMonkey tramite la sua proprietà Action e segue Caption, Enabled, Visible, Hint, ImageIndex e Checked dell'azione. Un clic esegue l'azione con la barra come ActionComponent, a meno che la voce non abbia un gestore OnClick. Le barre chiamano InitiateAction a riposo, così un'azione disabilitata disabilita il suo pulsante senza codice aggiuntivo. In .NET la voce ha Command e CommandParameter per ICommand. Una sola TActionList può comandare insieme la barra degli strumenti, il menu principale e la barra di navigazione.

  • Action collega una voce a qualsiasi TBasicAction
  • Il Checked dell'azione comanda Down di un toggle
  • L'OnUpdate delle azioni viene eseguito a riposo
  • .NET: Command e CommandParameter

Community: gestisci l'OnClick della voce o l'OnItemClick della barra al posto di un'azione.

Leggi l'argomento della guida

Barra di stato

Una barra di stato che si dispone da sola, mostra avanzamento e stato e accetta aggiornamenti da qualsiasi thread.

Pannelli di stato che si dispongono da soli

Barra di stato

Pannelli di stato che si dispongono da soli

Riga e colonna, un nome di file, lo stato di salvataggio e un messaggio principale si contendono il bordo inferiore della finestra. TsgcVCLStatusBar dispone i suoi Panels da sinistra a destra in tre passaggi: i pannelli fissi prendono il loro Width, i pannelli AutoSize prendono la larghezza del loro testo e i pannelli Spring si dividono ciò che resta. Usa un pannello spring per il messaggio principale e la barra resta ordinata a qualsiasi dimensione della finestra. Una sottile linea separa i pannelli e OnPanelClick ti dice quale è stato cliccato. I pannelli sono una collezione, quindi puoi aggiungerli e modificarli nell'Object Inspector in fase di progettazione.

  • Pannelli spkText con Alignment e Hint
  • I pannelli Spring si dividono la larghezza libera
  • I pannelli AutoSize si adattano al loro testo
  • OnPanelClick segnala un clic su un pannello
Leggi l'argomento della guida
Barre di avanzamento e indicatori di stato

Barra di stato

Barre di avanzamento e indicatori di stato

Le operazioni lunghe hanno bisogno di una barra di avanzamento, e le connessioni live di una luce che dica se tutto va bene. Un pannello può essere una barra di avanzamento riempita fino alla percentuale Progress nel colore di accento, oppure un indicatore: un punto colorato seguito dal testo del pannello. IndicatorState sceglie off, ok, warning o error, con verde, ambra e rosso regolati separatamente per il tema chiaro e scuro. Va bene per lo stato di una connessione a un database, di un feed di dati o di una sincronizzazione in background. Imposta Progress o IndicatorState e il pannello si ridisegna da solo, senza codice di disegno da scrivere.

  • spkProgress con Progress da 0 a 100
  • spkIndicator con IndicatorState
  • sisOff, sisOk, sisWarning, sisError
  • GetIndicatorColor restituisce il colore per il tema
Leggi l'argomento della guida

Barra di stato

Aggiorna la barra di stato da un thread di lavoro

Download, feed e calcoli lunghi girano in thread di lavoro, e riportare ogni aggiornamento di stato al thread principale è noioso e facile da sbagliare. SetPanelText, SetProgress e SetIndicator possono essere chiamati da qualsiasi thread senza Synchronize né Queue. Il modello protegge i valori con un lock e genera OnChange solo quando un valore è davvero cambiato, quindi ripetere lo stesso valore non costa nulla. La barra VCL invia poi un messaggio alla propria finestra e la barra FireMonkey mette in coda il ridisegno, così la UI non viene mai toccata fuori dal thread principale. È sicuro anche un thread che sopravvive a un pannello.

  • SetPanelText, SetProgress, SetIndicator da qualsiasi thread
  • Nessun Synchronize o Queue nel tuo codice
  • I valori invariati non costano nulla
  • Un indice fuori intervallo viene ignorato, mai sollevato come errore
Leggi l'argomento della guida

Aspetto, tastiera e output

Icone, temi e supporto della tastiera in linea con il resto di sgcUI, più immagini delle barre per la tua documentazione.

Icone o lettere glifo, didascalie facoltative

Aspetto, tastiera e output

Icone o lettere glifo, didascalie facoltative

Ogni voce cliccabile ha uno slot per l'icona di 16 pixel logici. Mostra l'immagine all'ImageIndex della lista Images della barra oppure, quando una voce non ha immagine, il suo Glyph: una lettera o un breve simbolo che non richiede alcuna image list. Disattiva ShowCaptions per una barra compatta di sole icone, e la didascalia diventa il suggerimento, quindi non si perde nulla. Le image list VCL vengono convertite una sola volta in ARGB lineare con l'alfa recuperato e tenute in cache finché l'elenco non cambia, così sia le liste con maschera sia quelle a 32 bit appaiono corrette. Mescola liberamente entrambi mentre le icone sono ancora in progettazione.

  • Images e ImageIndex per le image list
  • Glyph quando non c'è un'immagine
  • ShowCaptions False per le sole icone
  • Image list FireMonkey da Delphi XE8
  • Da destra a sinistra per arabo ed ebraico: gli elementi scorrono da destra, e MirrorGlyph capovolge le icone direzionali come indietro, avanti, annulla e ripeti
Leggi l'argomento della guida
Chiaro, scuro e il tuo colore di accento

Aspetto, tastiera e output

Chiaro, scuro e il tuo colore di accento

Le barre prendono i loro colori dai token di tema di sgcUICore, gli stessi usati da ogni prodotto della suite, così una barra degli strumenti sopra una sgcGrid e accanto a una barra sgcNavigation sembra un'unica applicazione. Theme seleziona utLight o utDark, e AccentColor sostituisce l'accento usato dall'anello di focus, dalla tinta premuta dei toggle e dalle barre di avanzamento. Gli stati hot, premuto, down, focus e disabilitato sono tutti derivati per te. Ogni barra ha il proprio Theme, quindi impostalo sulla barra degli strumenti e sulla barra di stato. Il cambio a runtime ridisegna entrambe le barre insieme.

  • Theme: utDefault (predefinito, segue il tema dell'applicazione), utLight o utDark
  • AccentColor come $AARRGGBB, 0 mantiene l'accento del tema
  • I colori degli indicatori seguono il tema
  • Cambia a runtime per un interruttore della modalità scura
Leggi l'argomento della guida

Aspetto, tastiera e output

Accesso da tastiera e un size grip funzionante

La barra degli strumenti può entrare nell'ordine di tabulazione quando i tuoi utenti ne hanno bisogno: imposta TabStop e il pulsante con focus mostra un anello di focus, Sinistra e Destra si spostano tra i pulsanti abilitati, Home e Fine saltano, Invio o Spazio attivano. È disattivato per impostazione predefinita, così la barra non ruba mai il focus all'editor sottostante. ClickItem attiva una voce da codice, per esempio da una scorciatoia del form. Sulla barra di stato, SizeGrip disegna i puntini di presa e in VCL trascinarli ridimensiona un form ridimensionabile. In FireMonkey la presa viene disegnata ma non ridimensiona il form, quindi disattiva SizeGrip quando il form non è ridimensionabile.

  • TabStop in VCL, CanFocus in FireMonkey
  • ClickItem esegue una voce da codice
  • SizeGrip e GripRect sulla barra di stato
  • La presa ridimensiona il form solo quando è ridimensionabile
Leggi l'argomento della guida

Aspetto, tastiera e output

Genera entrambe le barre senza una finestra

Gli screenshot di una barra degli strumenti in un manuale diventano obsoleti a ogni release. Il renderer in sgcToolbar_Render disegna un TsgcToolbarModel o un TsgcStatusBarModel senza finestra e senza VCL o FireMonkey, così un programma console, un test o un web server possono produrre le stesse barre come immagine. SaveToPNG e SaveToSVG accettano una dimensione in pixel logici e una scala, quindi 560 per 44 a scala 2 dà un'immagine nitida da 1120 per 88. Le unit si compilano su ogni piattaforma, Linux64 compreso. Passa le tue immagini tramite OnGetImage e l'immagine corrisponde all'applicazione in esecuzione.

  • SaveToPNG scrive un file o uno stream PNG
  • SaveToSVG scrive la stessa barra come SVG
  • Funziona su TsgcToolbarModel e TsgcStatusBarModel
  • OnGetImage fornisce le icone all'output headless
Leggi l'argomento della guida

Guarda sgcToolbar all'opera

sgcToolbar nelle demo della suite sgcUI: applicazioni complete che funzionano offline con dati simulati integrati.

Chi sviluppa con sgcToolbar

Editor di documenti e di codice

Un editor ha bisogno di toggle Grassetto e Corsivo, un gruppo di opzioni per l'allineamento, un menu Zoom e una barra di stato con riga, colonna e stato di salvataggio. sgcToolbar copre tutto con una collezione di voci e una collezione di pannelli, collegate alla TActionList che hai già. Quando la finestra si restringe, il menu di overflow mantiene raggiungibile ogni comando. La demo EditorShell costruisce esattamente questo attorno a un TMemo.

  • Tipi di voce
  • Gruppi di opzioni
  • Menu di overflow
Esegui la demo EditorShell

Strumenti di lunga durata e feed live

Gli strumenti di importazione, i client di sincronizzazione e le app di monitoraggio lavorano in thread in background e devono riportare ciò che fanno. Chiama SetProgress, SetIndicator e SetPanelText direttamente dal thread di lavoro, e la barra di stato si ridisegna sul thread principale senza Synchronize nel tuo codice. L'indicatore diventa verde, ambra o rosso in base allo stato del lavoro. La demo LiveStatus simula un download che fa esattamente questo.

  • Aggiornamenti thread safe
  • Pannelli di avanzamento
  • Indicatori
Esegui la demo LiveStatus

Un'unica barra di comandi su ogni piattaforma

Un'applicazione FireMonkey distribuita su Windows, macOS e mobile merita la stessa barra degli strumenti ovunque. TsgcFMXToolbar e TsgcFMXStatusBar hanno le stesse voci, gli stessi pannelli e gli stessi eventi delle barre VCL, e le barre .NET per WinForms, WPF e Avalonia seguono gli stessi nomi. EditorShellFMX è la versione FireMonkey della struttura dell'editor, con le stesse voci, lo stesso menu di overflow e gli stessi pannelli di stato.

  • Barre FireMonkey
  • Temi
  • Pannelli di stato
Esegui la demo EditorShellFMX

Una barra degli strumenti e una barra di stato in poche righe

La stessa API in Delphi, C++ Builder e C#: un toggle, un gruppo di opzioni, un dropdown e una barra di stato aggiornata dal gestore del clic.

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;

Una finestra in stile Office: TsgcVCLRibbonForm sposta la barra di accesso rapido e il titolo centrato in una barra del titolo con tema.

uses
  Classes, SysUtils, Controls, Forms,
  sgcToolbar_Ribbon_Model, sgcToolbar_Ribbon_VCL, sgcToolbar_RibbonForm_VCL;

procedure TMainForm.FormCreate(Sender: TObject);
var
  oGroup: TsgcRibbonGroup;
  oItem: TsgcRibbonItem;
begin
  Caption := 'Document1';
  // the ribbon, aligned to the top, with Save in the Quick Access Toolbar
  Ribbon := TsgcVCLRibbon.Create(Self);
  Ribbon.Parent := Self;
  oGroup := Ribbon.Tabs.Add.Groups.Add;
  oGroup.Caption := 'File';
  oItem := oGroup.Items.Add;
  oItem.Name := 'Save';
  oItem.Caption := 'Save';
  Ribbon.QuickAccess.Add.ItemName := 'Save';
  // the window frame: the QAT and the centred caption go in the title bar
  RibbonForm := TsgcVCLRibbonForm.Create(Self);
  RibbonForm.Ribbon := Ribbon;
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

Esegui le demo di sgcToolbar

Le demo EditorShell e LiveStatus sono fornite per VCL e C++ Builder, più una versione FireMonkey per Delphi, e nell'edizione .NET come progetti WinForms, WPF e Avalonia. L'edizione Registered aggiunge le demo del Ribbon, RibbonShell, RibbonForm e RibbonSuite.

EditorShell

Solo Registered EditorShell

Una struttura editor con TMemo, con toggle, un gruppo di opzioni Sinistra, Centro e Destra, un dropdown Zoom, collegamenti TActionList, il menu di overflow, pannelli di riga e colonna e un toggle Dark. Usa overflow e azioni, quindi richiede l'edizione Registered o Trial.

LiveStatus

Un thread di lavoro simula un download e alimenta un pannello di testo, un pannello di avanzamento e un indicatore che diventa verde, ambra o rosso, con i pulsanti Start e Stop. Si compila con l'edizione Community.

Solo Registered EditorShellFMX

La demo EditorShell con una TsgcFMXToolbar e una TsgcFMXStatusBar attorno a un TMemo FireMonkey, solo per Delphi: le stesse voci, i collegamenti alle azioni, il menu di overflow e i pannelli di stato.

RibbonShell

Solo Registered RibbonShell

Una shell di documento attorno a un Ribbon con schede, gruppi, una galleria, una scheda contestuale, la barra di accesso rapido, i KeyTips e una vista backstage. RibbonShell è la demo VCL e RibbonShellFMX quella FireMonkey, entrambe con le gemelle C++ Builder. RibbonShell, RibbonShellWpf e RibbonShellAvalonia sono i progetti .NET.

Solo Registered RibbonForm e RibbonFormFMX

Una finestra di editor in stile Office, per la VCL e per FireMonkey, con gemelle C++ Builder: la barra di accesso rapido con Salva, Annulla e Ripeti nella barra del titolo accanto all'icona della finestra, il titolo centrato, e un Ribbon con il pulsante File e le schede Home, Inserisci e Visualizza subito sotto. Una casella sposta la barra di accesso rapido sotto il Ribbon, un'altra disattiva la cornice con tema, e il selettore di tema passa tra Chiaro, Scuro e Fluent. Nell'edizione .NET la demo è fornita come RibbonForm per WinForms, RibbonFormWpf e RibbonFormAvalonia.

Solo Registered RibbonSuite

Un solo Ribbon che pilota più prodotti sgcUI da un unico form: i suoi comandi agiscono sugli altri controlli sgcUI della suite.

Demo compilate

Eseguibili pronti all'uso di ogni prodotto sgcUI, senza nulla da installare.

Scarica sgcUI_bin.zip →

Guida Getting Started

Cinque demo QuickStart per Delphi (VCL) si trovano in Demos\Toolbar\Delphi\00.QuickStart. La guida PDF le spiega passo dopo passo: una prima barra degli strumenti, ogni tipo di elemento, azioni e una barra di stato, temi e un piccolo editor di testo.

Scarica la guida (PDF, in inglese) →

Dove è incluso sgcToolbar

sgcToolbar è presente in ogni edizione di sgcUI, a partire da Standard, ed è venduto anche separatamente. sgcToolbar è incluso anche nel bundle All-Access.

sgcToolbar come pacchetto singolo

€149 / sviluppatore, codice sorgente completo, 1 anno di aggiornamenti.

Acquista sgcToolbar → Vedi i prezzi →

sgcUI Standard

sgcToolbar, sgcGrid, sgcNavigation e sgcEditors, da €380.

Vedi Standard →

sgcUI Professional

Standard più sgcCharts, sgcDashboard e sgcGauges, da €529.

Vedi Professional →

sgcUI Enterprise

Tutti i 17 prodotti sgcUI, da €699.

Vedi Enterprise →

L'edizione Community gratuita (esegece.sgcToolbar.Community su NuGet) non include il Ribbon e il form Ribbon, il menu di overflow e i collegamenti Action.

FunzionalitàCommunity (gratuita)Registered
Ogni tipo di voce, toggle, gruppi di opzioni e menu a discesa✓✓
Pannelli di testo, di avanzamento e di indicatori✓✓
Aggiornamenti di stato thread safe✓✓
Icone, glifi, temi, tastiera e size grip✓✓
Output PNG e SVG headless✓✓
Ribbon con KeyTips, gallerie, barra di accesso rapido e vista backstage−✓
Form Ribbon: barra di accesso rapido e titolo in una barra del titolo con tema−✓
Menu di overflow−✓
Collegamenti Action (Delphi) e Command (.NET)−✓

Framework e piattaforme supportati

Componenti di sgcToolbar

ComponenteTarget
TsgcVCLToolbar, TsgcVCLStatusBarDelphi e C++ Builder, VCL (sgcToolbar_VCL)
TsgcFMXToolbar, TsgcFMXStatusBarDelphi e C++ Builder, FireMonkey (sgcToolbar_FMX)
Il RibbonEdizione Registered: VCL, FireMonkey, WinForms, WPF e Avalonia
TsgcVCLRibbonForm, TsgcFMXRibbonFormEdizione Registered: Delphi e C++ Builder, VCL e FireMonkey (sgcToolbar_RibbonForm_VCL, sgcToolbar_RibbonForm_FMX), la barra del titolo con tema su Windows
TsgcWinFormsRibbonForm, TsgcWpfRibbonWindow, TsgcAvaloniaRibbonWindowEdizione Registered: .NET, WinForms, WPF e Avalonia
TsgcToolbarItem, TsgcStatusBarPanel, TsgcToolbarModel, TsgcStatusBarModelModelli indipendenti dal framework (sgcToolbar_Model)
TsgcWinFormsToolbar, TsgcWinFormsStatusBar.NET, WinForms
TsgcWpfToolbar, TsgcWpfStatusBar.NET, WPF
TsgcAvaloniaToolbar, TsgcAvaloniaStatusBar.NET, Avalonia
TargetComponentePiattaforme
Delphi da 7 a 13, VCLTsgcVCLToolbar, TsgcVCLStatusBarWin32 e Win64
Delphi da XE6 a 13, FireMonkeyTsgcFMXToolbar, TsgcFMXStatusBarWindows, macOS, iOS, Android e Linux (FMXLinux)
C++ Builder da 2007 a 13Barre VCL e FireMonkeyHeader .hpp generati e librerie statiche
Delphi da 10.2 a 13, indipendente dal frameworkModelli e renderer PNG e SVG headlessLinux64, per esempio per generare una barra degli strumenti su un server
.NET Framework 4.7.2, .NET 8, 9 e 10TsgcWinFormsToolbar, barre WPF e AvaloniaWinForms, WPF e Avalonia

Domande frequenti

Sì. SetPanelText, SetProgress e SetIndicator possono essere chiamati da qualsiasi thread senza Synchronize né Queue. Il modello protegge i valori con un lock e la barra si ridisegna sul thread principale. Ogni altra proprietà si imposta dal thread principale. Vedi Aggiornamenti thread safe.

Svolge gli stessi compiti: pulsanti, toggle, pulsanti dropdown, separatori ed etichette in alto, pannelli di testo in basso. Aggiunge una voce spacer, pannelli di avanzamento e di indicatori, setter thread safe, temi e output headless. I tuoi TActionList e TPopupMenu esistenti si collegano tramite Action e DropdownMenu.

Il Ribbon e il form Ribbon, il menu di overflow e i collegamenti Action delle voci, che in .NET sono Command e CommandParameter. In Community le voci che non entrano vengono tagliate. Ogni altra funzionalità, compresi gli aggiornamenti di stato thread safe, i pannelli di avanzamento e di indicatori e l'output headless, è in Community.

Sì. C++ Builder da 2007 a 13 usa le stesse barre VCL e FireMonkey tramite header e librerie generati, e anche le demo EditorShell e LiveStatus sono fornite come progetti C++ Builder. La scheda del codice in questa pagina mostra la stessa barra degli strumenti in Delphi, C++ Builder e C#.

Sì. Tutte le dimensioni sono pixel logici moltiplicati per la scala del monitor, e lo slot dell'icona è di 16 pixel logici, quindi pulsanti, glifi, barre di avanzamento e punti degli indicatori restano nitidi a qualsiasi DPI. FireMonkey prende le immagini dall'image list alla dimensione del dispositivo del frame.

Sì. SaveToSVG e SaveToPNG di TsgcToolbarModel e TsgcStatusBarModel disegnano le barre senza finestra, anche su Linux64 da Delphi 10.2, così un passaggio di build può rigenerare le immagini del tuo manuale a ogni release. Un parametro scale dà immagini nitide per gli schermi ad alto DPI e per la stampa.

Guida di sgcToolbar

3,000+Sviluppatori
20+Anni
761+Componenti
30+Integrazioni API
5Piattaforme
Garanzia soddisfatti o rimborsati di 30 giorniNon sei soddisfatto? Richiedi un rimborso completo entro 30 giorni dall'acquisto. Vedi la politica di rimborso

Prova sgcToolbar oggi

Il trial di sgcUI include sgcToolbar e ogni altro prodotto sgcUI.