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

sgcToolbar, la barra de herramientas y la barra de estado para Delphi, C++ Builder & .NET

Construye el marco de una aplicación de escritorio con controles que se ven igual en cualquier interfaz. Una barra de herramientas con botones, interruptores, grupos de opciones y desplegables, un Ribbon con pestañas, galerías, KeyTips y vista backstage para las aplicaciones que se quedan pequeñas con una barra de herramientas, con su barra de acceso rápido en una barra de título con tema, y una barra de estado real con paneles de progreso e indicadores que un hilo de trabajo puede actualizar directamente.

VCL, FireMonkey, WinForms, WPF, AvaloniaRibbon con KeyTips y backstageActualizaciones de la barra de estado desde cualquier hiloEdición Community de .NET gratuitaIncluido en sgcUI Standard
Barra de herramientas de EditorShell al doble de tamaño con llamadas sobre un botón, un interruptor, un separador, un desplegable, una etiqueta y un espaciador

Una barra de comandos y de estado completa

Catorce funciones para las barras que necesita toda aplicación de escritorio, desde un Ribbon completo y grupos de opciones hasta el progreso en vivo de un hilo de trabajo.

Ribbon

Un Ribbon al estilo Office para aplicaciones con más comandos de los que caben en una barra de herramientas, en todos los marcos de sgcUI.

Un Ribbon con pestañas, grupos, botones grandes y pequeños, una galería y la barra de acceso rápido

Ribbon Solo registrada

Un Ribbon que se adapta, con KeyTips y vista backstage

Tus usuarios abren un editor de informes en un portátil, acoplan la ventana a media pantalla y siguen esperando poder llegar a todos los comandos. El Ribbon se lo permite. Los comandos viven en pestañas y grupos, y cuando la ventana se estrecha cada grupo baja de botones grandes a medianos y pequeños y por último se contrae en un solo botón, según la prioridad que establezcas. El Ribbon se desplaza cuando todo está contraído. Las galerías pasan de filas completas a menos columnas y a un desplegable. Pulsa Alt y aparecen los KeyTips, escribe la pestaña y el comando, y Esc retrocede un paso. El botón de aplicación abre una vista backstage con comandos y con páginas que contienen tus propios controles. Una barra de acceso rápido se coloca encima o debajo del Ribbon, y los usuarios la personalizan desde un menú o con el botón derecho.

  • Pestañas, grupos y pestañas contextuales con una banda de color, además de iniciadores de cuadros de diálogo
  • Botones grandes y pequeños, botones divididos, desplegables, interruptores, casillas de verificación, cuadros combinados y cuadros de edición
  • Doble clic en una pestaña o Ctrl+F1 para minimizar el Ribbon
  • Temas claro, oscuro y de alto contraste que siguen el tema de la aplicación
  • De derecha a izquierda, alta densidad de puntos (DPI) y UI Automation para lectores de pantalla
  • Enlace de acciones en Delphi, ICommand en .NET y declaración XAML en WPF y Avalonia
  • SaveLayout y LoadLayout guardan en JSON la barra de acceso rápido de cada usuario y el estado minimizado

Edición registrada en VCL, FireMonkey, WinForms, WPF y Avalonia, Delphi 7 a 13 y C++ Builder. Community no incluye el Ribbon. Los KeyTips funcionan en el escritorio de Windows. La barra de acceso rápido tiene su propia fila, o el formulario Ribbon la dibuja en la barra de título de la ventana.

Resumen del Ribbon
Diseño adaptable
Galerías
KeyTips
Vista backstage
Barra de acceso rápido

Ribbon Solo registrada

Un formulario Ribbon con la barra de acceso rápido en la barra de título

Una aplicación de Office no tiene una barra de título gris de Windows sobre el Ribbon. La barra de acceso rápido y el nombre del documento están en la barra de título, y la barra de título y el Ribbon parecen una sola superficie. El formulario Ribbon da a tu ventana el mismo marco. Colócalo en el formulario y elige el Ribbon: sgcUI quita el título nativo y dibuja una barra de título con tema, con el icono de la ventana, la barra de acceso rápido, el título centrado en la ventana y los botones de minimizar, maximizar y cerrar, en el color de la fila de pestañas del tema del Ribbon, Classic o Fluent, claro u oscuro. El Ribbon queda justo debajo y tiene una fila menos. La ventana conserva su sombra, sus bordes de redimensionado y su comportamiento al maximizarse, Windows 11 muestra los diseños de ajuste (snap layouts) en el botón de maximizar, y el espacio vacío de la barra de título arrastra la ventana.

  • TsgcVCLRibbonForm y TsgcFMXRibbonForm en Delphi y C++ Builder, TsgcWinFormsRibbonForm, TsgcWpfRibbonWindow y TsgcAvaloniaRibbonWindow en .NET
  • La barra de acceso rápido de la barra de título es la del Ribbon: los mismos clics, acciones, sugerencias, KeyTips y menú de personalización
  • Con QATPosition en rqpBelow o ShowQAT desactivado, la barra de título muestra solo el título, y el comando "Show above the Ribbon" devuelve la barra a la parte superior
  • CaptionAlignment centra el título o lo coloca después del icono, y TitleBarHeight fija la altura
  • En WPF y Avalonia, la propiedad adjunta Ribbon de la ventana lo configura desde XAML

Edición registrada, como el Ribbon: Community no incluye el formulario Ribbon. El marco con tema necesita Windows con composición de escritorio y, en FireMonkey, se aplica solo en Windows. Sin él, el Ribbon muestra su propia fila de barra de acceso rápido.

Leer el tema de la ayuda
Formulario Ribbon en .NET

Comandos

Todos los elementos que necesita una barra de comandos, con la agrupación, los menús y el desbordamiento resueltos por el control.

Todos los tipos de elemento de barra de herramientas en un solo control

Comandos

Todos los tipos de elemento de barra de herramientas en un solo control

Una barra de herramientas real mezcla botones simples, botones que se quedan pulsados, botones con menú, separadores y un poco de texto. Con sgcToolbar cada uno es un elemento de la misma colección, y Kind decide cómo se dibuja y cómo reacciona. Los elementos se colocan de izquierda a derecha con Spacing entre ellos, y un espaciador ocupa el ancho libre, así que puedes empujar Ayuda o un nombre de usuario al borde derecho sin código de diseño. Width fija un elemento cuando necesitas un tamaño estable. Las sugerencias, los estados deshabilitados y el resaltado al pasar el ratón se dibujan en todos los tipos.

  • tikButton, tikToggle y tikDropdown para comandos
  • tikSeparator dibuja una línea vertical fina
  • tikSpacer empuja los elementos siguientes a la derecha
  • tikLabel muestra texto dentro de la barra
Leer el tema de la ayuda
Grupos de opciones sin código

Comandos

Grupos de opciones sin código

La alineación del texto, los modos de vista y las herramientas de dibujo son la típica elección de una entre varias. Da a varios interruptores el mismo GroupIndex y forman un grupo de opciones: al poner Down en uno de ellos, con un clic o desde código, se sueltan los demás, y un clic en el que ya está pulsado lo deja pulsado, de modo que siempre queda una opción seleccionada. Un interruptor con GroupIndex 0 es un simple interruptor de activado y desactivado como Negrita o Ajuste de línea. El clic cambia Down antes de que se dispare OnItemClick, así que tu gestor lee el nuevo estado. No hace falta conectar eventos para mantener coherente el grupo.

  • GroupIndex mayor que 0 crea un grupo de opciones
  • Down lee o establece el estado desde código
  • El estado pulsado se dibuja con un tinte de acento
  • Una acción enlazada controla Down mediante su Checked
Leer el tema de la ayuda

Comandos

Menús desplegables desde tu menú emergente

Los niveles de zoom, los formatos de exportación y los archivos recientes pertenecen a un menú bajo un botón, no a diez botones más. Un elemento tikDropdown dibuja una flecha pequeña tras su título y muestra justo debajo del botón el menú emergente que asignas a DropdownMenu: un TPopupMenu en VCL y FireMonkey, un ContextMenuStrip en WinForms. OnItemClick y el OnClick del elemento se disparan antes de que se abra el menú, así que puedes rellenar o marcar sus entradas primero. Si el menú se libera, la barra borra la referencia por ti. Un objetivo de clic, un menú, y una barra de herramientas que se mantiene corta aunque los comandos crezcan.

  • DropdownMenu acepta el menú emergente de tu marco
  • La flecha se dibuja tras el título
  • Rellena o marca el menú en OnItemClick
  • Funciona también desde el menú de desbordamiento
Leer el tema de la ayuda

Comandos Solo registrada

Los elementos que no caben pasan a un menú de desbordamiento

Los usuarios cambian el tamaño de las ventanas, y una barra de herramientas que simplemente recorta sus últimos botones oculta comandos que necesitan. Cuando los elementos no caben, sgcToolbar mueve los últimos a una lista de desbordamiento y dibuja un botón de doble chevrón en el extremo derecho. Al pulsarlo muestra OverflowMenu, construido en tiempo de ejecución con una entrada por cada elemento oculto, y elegir una entrada actúa exactamente como un clic: un interruptor cambia, se dispara OnItemClick y un desplegable muestra su menú. El modelo te dice qué está oculto. Cuando la ventana vuelve a crecer, los elementos regresan a la barra por sí solos.

  • OverflowMenu se construye por ti en tiempo de ejecución
  • HasOverflow, OverflowCount e InOverflow por elemento
  • ItemAtPos informa de un acierto en el botón de desbordamiento
  • Se compila bajo SGC_TOOLBAR_ADVANCED

Community: los elementos que no caben se recortan, no hay botón de desbordamiento.

Leer el tema de la ayuda

Comandos Solo registrada

Reutiliza tus TAction

Si tus comandos ya viven en un TActionList, la barra de herramientas no debería duplicarlos. Enlaza un elemento a cualquier TAction de VCL o FireMonkey mediante su propiedad Action y sigue el Caption, Enabled, Visible, Hint, ImageIndex y Checked de la acción. Un clic ejecuta la acción con la barra como su ActionComponent, salvo que el elemento tenga un gestor OnClick. Las barras llaman a InitiateAction en reposo, así que una acción deshabilitada deshabilita su botón sin código adicional. En .NET el elemento tiene Command y CommandParameter para ICommand. Un solo TActionList puede gobernar a la vez la barra de herramientas, el menú principal y la barra de navegación.

  • Action enlaza un elemento a cualquier TBasicAction
  • El Checked de la acción controla Down de un interruptor
  • El OnUpdate de las acciones se ejecuta en reposo
  • .NET: Command y CommandParameter

Community: gestiona el OnClick del elemento o el OnItemClick de la barra en lugar de una acción.

Leer el tema de la ayuda

Barra de estado

Una barra de estado que se organiza sola, muestra progreso y estado, y acepta actualizaciones desde cualquier hilo.

Paneles de estado que se organizan solos

Barra de estado

Paneles de estado que se organizan solos

La línea y la columna, un nombre de archivo, el estado de guardado y un mensaje principal compiten por el borde inferior de la ventana. TsgcVCLStatusBar organiza sus Panels de izquierda a derecha en tres pasadas: los paneles fijos toman su Width, los paneles AutoSize toman el ancho de su texto y los paneles Spring se reparten lo que queda. Usa un panel spring para el mensaje principal y la barra se mantiene ordenada con cualquier tamaño de ventana. Una línea fina separa los paneles, y OnPanelClick te dice en cuál se hizo clic. Los paneles son una colección, así que puedes añadirlos y editarlos en el Object Inspector en tiempo de diseño.

  • Paneles spkText con Alignment y Hint
  • Los paneles Spring se reparten el ancho libre
  • Los paneles AutoSize se ajustan a su texto
  • OnPanelClick informa de un clic en un panel
Leer el tema de la ayuda
Barras de progreso e indicadores de estado

Barra de estado

Barras de progreso e indicadores de estado

Las operaciones largas necesitan una barra de progreso, y las conexiones en vivo necesitan una luz que diga si todo va bien. Un panel puede ser una barra de progreso llena hasta el porcentaje Progress con el color de acento, o un indicador: un punto de color seguido del texto del panel. IndicatorState elige apagado, correcto, aviso o error, con verde, ámbar y rojo ajustados por separado para el tema claro y el oscuro. Va bien para el estado de una conexión a base de datos, una fuente de datos o una sincronización en segundo plano. Establece Progress o IndicatorState y el panel se repinta solo, sin código de dibujo que escribir.

  • spkProgress con Progress de 0 a 100
  • spkIndicator con IndicatorState
  • sisOff, sisOk, sisWarning, sisError
  • GetIndicatorColor devuelve el color para el tema
Leer el tema de la ayuda

Barra de estado

Actualiza la barra de estado desde un hilo de trabajo

Las descargas, las fuentes de datos y los cálculos largos se ejecutan en hilos de trabajo, y devolver cada actualización de estado al hilo principal es tedioso y fácil de hacer mal. SetPanelText, SetProgress y SetIndicator pueden llamarse desde cualquier hilo sin Synchronize ni Queue. El modelo protege los valores con un bloqueo y dispara OnChange solo cuando un valor cambia de verdad, así que repetir el mismo valor no cuesta nada. La barra VCL envía entonces un mensaje a su ventana y la barra FireMonkey encola el repintado, de modo que la interfaz nunca se toca fuera del hilo principal. Un hilo que sobrevive a un panel tampoco da problemas.

  • SetPanelText, SetProgress, SetIndicator desde cualquier hilo
  • Ningún Synchronize ni Queue en tu código
  • Los valores sin cambios no cuestan nada
  • Un índice fuera de rango se ignora, nunca lanza una excepción
Leer el tema de la ayuda

Aspecto, teclado y salida

Iconos, temas y soporte de teclado a juego con el resto de sgcUI, más imágenes de las barras para tu documentación.

Iconos o letras glifo, títulos opcionales

Aspecto, teclado y salida

Iconos o letras glifo, títulos opcionales

Cada elemento en el que se puede hacer clic tiene una ranura de icono de 16 píxeles lógicos. Muestra la imagen en ImageIndex de la lista Images de la barra o, cuando un elemento no tiene imagen, su Glyph: una letra o un símbolo corto que no necesita lista de imágenes. Desactiva ShowCaptions para una barra compacta solo de iconos, y el título pasa a ser la sugerencia, así que no se pierde nada. Las listas de imágenes de VCL se convierten una vez a ARGB directo con el alfa recuperado y se guardan en caché hasta que la lista cambia, así que las listas con máscara y las de 32 bits se ven bien. Mezcla ambos libremente mientras aún se diseñan los iconos.

  • Images e ImageIndex para listas de imágenes
  • Glyph cuando no hay imagen
  • ShowCaptions a False para solo iconos
  • Listas de imágenes de FireMonkey desde Delphi XE8
  • De derecha a izquierda para árabe y hebreo: los elementos fluyen desde la derecha, y MirrorGlyph voltea los iconos direccionales como atrás, adelante, deshacer y rehacer
Leer el tema de la ayuda
Claro, oscuro y tu color de acento

Aspecto, teclado y salida

Claro, oscuro y tu color de acento

Las barras toman sus colores de los tokens de tema de sgcUICore, los mismos que usa cada producto de la suite, así que una barra de herramientas sobre un sgcGrid y junto a una barra sgcNavigation parece una sola aplicación. Theme selecciona utLight o utDark, y AccentColor sustituye el acento que usan el anillo de foco, el tinte pulsado de los interruptores y las barras de progreso. Los estados hover, pulsado, activo, enfocado y deshabilitado se derivan por ti. Cada barra tiene su propio Theme, así que establécelo en la barra de herramientas y en la barra de estado. Cambiarlo en tiempo de ejecución repinta ambas barras a la vez.

  • Theme: utDefault (predeterminado, sigue el tema de la aplicación), utLight o utDark
  • AccentColor como $AARRGGBB, 0 mantiene el acento del tema
  • Los colores de los indicadores siguen el tema
  • Cambia en tiempo de ejecución para un interruptor de modo oscuro
Leer el tema de la ayuda

Aspecto, teclado y salida

Acceso con teclado y un tirador de tamaño que funciona

La barra de herramientas puede entrar en el orden de tabulación cuando tus usuarios lo necesiten: establece TabStop y el botón enfocado muestra un anillo de foco, Izquierda y Derecha se mueven entre botones habilitados, Inicio y Fin saltan, Intro o Espacio activan. Viene desactivado por defecto, así que la barra nunca le quita el foco al editor que tiene debajo. ClickItem activa un elemento desde código, por ejemplo desde un atajo del formulario. En la barra de estado, SizeGrip dibuja los puntos del tirador, y en VCL arrastrarlos cambia el tamaño de un formulario redimensionable. En FireMonkey el tirador se dibuja pero no cambia el tamaño del formulario, así que desactiva SizeGrip allí cuando el formulario no sea redimensionable.

  • TabStop en VCL, CanFocus en FireMonkey
  • ClickItem ejecuta un elemento desde código
  • SizeGrip y GripRect en la barra de estado
  • El tirador cambia el tamaño del formulario solo cuando es redimensionable
Leer el tema de la ayuda

Aspecto, teclado y salida

Renderiza ambas barras sin ventana

Las capturas de una barra de herramientas en un manual quedan obsoletas con cada versión. El renderizador de sgcToolbar_Render pinta un TsgcToolbarModel o un TsgcStatusBarModel sin ventana y sin VCL ni FireMonkey, así que un programa de consola, una prueba o un servidor web pueden producir las mismas barras como imagen. SaveToPNG y SaveToSVG toman un tamaño en píxeles lógicos y una escala, así que 560 por 44 con escala 2 da una imagen nítida de 1120 por 88. Las unidades compilan en todas las plataformas, Linux64 incluido. Pasa tus propias imágenes mediante OnGetImage y la imagen coincide con la aplicación en ejecución.

  • SaveToPNG escribe un archivo o flujo PNG
  • SaveToSVG escribe la misma barra como SVG
  • Funciona con TsgcToolbarModel y TsgcStatusBarModel
  • OnGetImage aporta iconos a la salida sin ventana
Leer el tema de la ayuda

Mira sgcToolbar en acción

sgcToolbar dentro de las demos de la suite sgcUI: aplicaciones completas que funcionan sin conexión con datos simulados integrados.

Quién construye con sgcToolbar

Editores de documentos y de código

Un editor necesita interruptores de Negrita y Cursiva, un grupo de opciones de alineación, un menú de Zoom y una barra de estado con la línea, la columna y el estado de guardado. sgcToolbar lo cubre todo con una colección de elementos y una colección de paneles, enlazadas al TActionList que ya tienes. Cuando la ventana se estrecha, el menú de desbordamiento mantiene alcanzable cada comando. La demo EditorShell construye exactamente esto alrededor de un TMemo.

  • Tipos de elemento
  • Grupos de opciones
  • Menú de desbordamiento
Ejecuta la demo EditorShell

Herramientas de larga duración y fuentes en vivo

Las herramientas de importación, los clientes de sincronización y las aplicaciones de monitorización hacen su trabajo en hilos en segundo plano y deben informar de él. Llama a SetProgress, SetIndicator y SetPanelText directamente desde el hilo de trabajo, y la barra de estado se repinta en el hilo principal sin Synchronize en tu código. El indicador pasa a verde, ámbar o rojo según el estado del trabajo. La demo LiveStatus simula una descarga que hace exactamente esto.

  • Actualizaciones seguras entre hilos
  • Paneles de progreso
  • Indicadores
Ejecuta la demo LiveStatus

Una barra de comandos en todas las plataformas

Una aplicación FireMonkey que se entrega en Windows, macOS y móviles merece la misma barra de herramientas en todas partes. TsgcFMXToolbar y TsgcFMXStatusBar tienen los mismos elementos, paneles y eventos que las barras VCL, y las barras .NET para WinForms, WPF y Avalonia siguen los mismos nombres. EditorShellFMX es la versión FireMonkey de la estructura del editor, con los mismos elementos, menú de desbordamiento y paneles de estado.

  • Barras FireMonkey
  • Temas
  • Paneles de estado
Ejecuta la demo EditorShellFMX

Una barra de herramientas y una barra de estado en pocas líneas

La misma API en Delphi, C++ Builder y C#: un interruptor, un grupo de opciones, un desplegable y una barra de estado actualizada desde el gestor de 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 ventana al estilo de Office: TsgcVCLRibbonForm mueve la barra de acceso rápido y el título centrado a una barra de título 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

Ejecuta las demos de sgcToolbar

Las demos EditorShell y LiveStatus se incluyen para VCL y C++ Builder, más una versión FireMonkey para Delphi, y en la edición .NET como proyectos WinForms, WPF y Avalonia. La edición registrada añade las demos del Ribbon, RibbonShell, RibbonForm y RibbonSuite.

EditorShell

Solo registrada EditorShell

Una estructura de editor con un TMemo, con interruptores, un grupo de opciones Izquierda, Centro y Derecha, un desplegable Zoom, enlaces a TActionList, el menú de desbordamiento, paneles de línea y columna y un interruptor Dark. Usa desbordamiento y acciones, así que necesita la edición Registrada o de prueba.

LiveStatus

Un hilo de trabajo simula una descarga y alimenta un panel de texto, un panel de progreso y un indicador que pasa a verde, ámbar o rojo, con botones Start y Stop. Compila con la edición Community.

Solo registrada EditorShellFMX

La demo EditorShell con un TsgcFMXToolbar y un TsgcFMXStatusBar alrededor de un TMemo de FireMonkey, solo para Delphi: los mismos elementos, enlaces de acción, menú de desbordamiento y paneles de estado.

RibbonShell

Solo registrada RibbonShell

Un shell de documento alrededor de un Ribbon con pestañas, grupos, una galería, una pestaña contextual, la barra de acceso rápido, KeyTips y una vista backstage. RibbonShell es la demo VCL y RibbonShellFMX la de FireMonkey, ambas con gemelas en C++ Builder. RibbonShell, RibbonShellWpf y RibbonShellAvalonia son los proyectos .NET.

Solo registrada RibbonForm y RibbonFormFMX

Una ventana de editor al estilo de Office, para la VCL y para FireMonkey, con gemelas para C++ Builder: la barra de acceso rápido con Save, Undo y Redo en la barra de título junto al icono de la ventana, el título centrado y justo debajo un Ribbon con el botón File y las pestañas Home, Insert y View. Una casilla mueve la barra de acceso rápido bajo el Ribbon, otra desactiva el marco con tema, y el selector de tema cambia entre Light, Dark y Fluent. En la edición .NET se incluye como RibbonForm para WinForms, RibbonFormWpf y RibbonFormAvalonia.

Solo registrada RibbonSuite

Un Ribbon que maneja varios productos sgcUI desde un solo formulario: sus comandos actúan sobre los demás controles sgcUI de la suite.

Demos compiladas

Ejecutables listos para usar de cada producto sgcUI, sin nada que instalar.

Descargar sgcUI_bin.zip →

Guía Getting Started

Cinco demos QuickStart para Delphi (VCL) se incluyen en Demos\Toolbar\Delphi\00.QuickStart. La guía en PDF las recorre paso a paso: una primera barra de herramientas, todos los tipos de elemento, acciones y una barra de estado, temas y un pequeño editor de texto.

Descargar la guía (PDF, en inglés) →

Dónde se incluye sgcToolbar

sgcToolbar está en todas las ediciones de sgcUI, empezando por Standard, y también se vende por separado. sgcToolbar también se incluye en el paquete All-Access.

Paquete individual de sgcToolbar

€149 / desarrollador, código fuente completo, 1 año de actualizaciones.

Comprar sgcToolbar → Ver precios →

sgcUI Standard

sgcToolbar, sgcGrid, sgcNavigation y sgcEditors, desde €380.

Ver Standard →

sgcUI Professional

Standard más sgcCharts, sgcDashboard y sgcGauges, desde €529.

Ver Professional →

sgcUI Enterprise

Los 17 productos sgcUI, desde €699.

Ver Enterprise →

La edición Community gratuita (esegece.sgcToolbar.Community en NuGet) no incluye el Ribbon ni el formulario Ribbon, el menú de desbordamiento ni los enlaces de acción.

FunciónCommunity (gratuita)Registrada
Todos los tipos de elemento, interruptores, grupos de opciones y menús desplegables✓✓
Paneles de texto, progreso e indicador✓✓
Actualizaciones de estado seguras entre hilos✓✓
Iconos, glifos, temas, teclado y tirador de tamaño✓✓
Salida PNG y SVG sin ventana✓✓
Ribbon con KeyTips, galerías, barra de acceso rápido y vista backstage−✓
Formulario Ribbon: barra de acceso rápido y título de la ventana en una barra de título con tema−✓
Menú de desbordamiento−✓
Enlaces de acción (Delphi) y Command (.NET)−✓

Frameworks y plataformas compatibles

Componentes de sgcToolbar

ComponenteDestino
TsgcVCLToolbar, TsgcVCLStatusBarDelphi y C++ Builder, VCL (sgcToolbar_VCL)
TsgcFMXToolbar, TsgcFMXStatusBarDelphi y C++ Builder, FireMonkey (sgcToolbar_FMX)
El RibbonEdición registrada: VCL, FireMonkey, WinForms, WPF y Avalonia
TsgcVCLRibbonForm, TsgcFMXRibbonFormEdición registrada: Delphi y C++ Builder, VCL y FireMonkey (sgcToolbar_RibbonForm_VCL, sgcToolbar_RibbonForm_FMX), la barra de título con tema en Windows
TsgcWinFormsRibbonForm, TsgcWpfRibbonWindow, TsgcAvaloniaRibbonWindowEdición registrada: .NET, WinForms, WPF y Avalonia
TsgcToolbarItem, TsgcStatusBarPanel, TsgcToolbarModel, TsgcStatusBarModelModelos independientes del marco (sgcToolbar_Model)
TsgcWinFormsToolbar, TsgcWinFormsStatusBar.NET, WinForms
TsgcWpfToolbar, TsgcWpfStatusBar.NET, WPF
TsgcAvaloniaToolbar, TsgcAvaloniaStatusBar.NET, Avalonia
DestinoComponentePlataformas
Delphi 7 a 13, VCLTsgcVCLToolbar, TsgcVCLStatusBarWin32 y Win64
Delphi XE6 a 13, FireMonkeyTsgcFMXToolbar, TsgcFMXStatusBarWindows, macOS, iOS, Android y Linux (FMXLinux)
C++ Builder 2007 a 13Barras VCL y FireMonkeyCabeceras .hpp generadas y bibliotecas estáticas
Delphi 10.2 a 13, independiente del marcoModelos y renderizador PNG y SVG sin ventanaLinux64, por ejemplo para renderizar una barra de herramientas en un servidor
.NET Framework 4.7.2, .NET 8, 9 y 10TsgcWinFormsToolbar, barras WPF y AvaloniaWinForms, WPF y Avalonia

Preguntas frecuentes

Sí. SetPanelText, SetProgress y SetIndicator pueden llamarse desde cualquier hilo sin Synchronize ni Queue. El modelo protege los valores con un bloqueo y la barra se repinta en el hilo principal. Todas las demás propiedades se establecen desde el hilo principal. Consulta Actualizaciones seguras entre hilos.

Cubre las mismas tareas: botones, interruptores, botones desplegables, separadores y etiquetas arriba, paneles de texto abajo. Añade un elemento espaciador, paneles de progreso e indicador, métodos de establecimiento seguros entre hilos, temas y salida sin ventana. Tus componentes TActionList y TPopupMenu existentes se conectan mediante Action y DropdownMenu.

El Ribbon y el formulario Ribbon, el menú de desbordamiento y los enlaces de acción de los elementos, que en .NET son Command y CommandParameter. En Community los elementos que no caben se recortan. Todas las demás funciones, incluidas las actualizaciones de estado seguras entre hilos, los paneles de progreso e indicador y la salida sin ventana, están en Community.

Sí. C++ Builder 2007 a 13 usan las mismas barras VCL y FireMonkey mediante cabeceras y bibliotecas generadas, y las demos EditorShell y LiveStatus también se entregan como proyectos de C++ Builder. La pestaña de código de esta página muestra la misma barra de herramientas en Delphi, C++ Builder y C#.

Sí. Todos los tamaños son píxeles lógicos multiplicados por la escala del monitor, y la ranura de icono es de 16 píxeles lógicos, así que los botones, los glifos, las barras de progreso y los puntos de los indicadores se ven nítidos con cualquier DPI. FireMonkey toma las imágenes de la lista de imágenes al tamaño de dispositivo del marco.

Sí. SaveToSVG y SaveToPNG de TsgcToolbarModel y TsgcStatusBarModel dibujan las barras sin ventana, también en Linux64 desde Delphi 10.2, así que un paso de compilación puede regenerar las imágenes de tu manual en cada versión. Un parámetro de escala da imágenes nítidas para pantallas de alta densidad e impresión.

Ayuda de sgcToolbar

3,000+Desarrolladores
20+Años
761+Componentes
30+Integraciones de API
5Plataformas
Garantía de devolución de 30 días¿No estás satisfecho? Solicita un reembolso completo en los 30 días posteriores a la compra. Ver política de reembolso

Prueba sgcToolbar hoy

La prueba de sgcUI incluye sgcToolbar y todos los demás productos sgcUI.