クイックスタート
The same API in Delphi, C++ Builder and C#: a toggle, a radio group, a dropdown, and a status bar updated from the click handler.
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