Delphi、C++ Builder & .NET sgcUI の一部

sgcToolbar、Delphi、C++ Builder & .NET 向けのツールバーとステータスバー

どの UI でも同じ見た目になる 2 つのコントロールで、デスクトップアプリケーションの骨組みを作れます。ボタン、トグル、ラジオグループ、ドロップダウンを備えたツールバーと、ワーカースレッドから直接更新できる進捗パネルとインジケーターパネルを備えた本格的なステータスバーです。

VCL、FireMonkey、WinForms、WPF、Avalonia任意のスレッドからステータスバーを更新無料の .NET Community 版sgcUI Standard に含まれます
2 倍表示の EditorShell ツールバー。ボタン、トグル、セパレーター、ドロップダウン、ラベル、スペーサーに吹き出しが付いています

コマンドバーとステータスバーを完全に提供

どのデスクトップアプリケーションにも必要な 2 つのバーのための 12 の機能です。ラジオグループから、ワーカースレッドからのライブ進捗表示までそろっています。

コマンド

コマンドバーに必要なすべての項目を備え、グルーピング、メニュー、オーバーフローはコントロールが処理します。

1 つのコントロールで、すべてのツールバー項目の種類に対応

コマンド

1 つのコントロールで、すべてのツールバー項目の種類に対応

実際のアプリケーションのツールバーには、通常のボタン、押したままになるボタン、メニュー付きのボタン、セパレーター、少しのテキストが混在します。sgcToolbar では、そのすべてが同じコレクションの 1 項目で、Kind が描画方法と動作を決めます。項目は左から右に Spacing の間隔で配置され、スペーサーが残りの幅を占めるので、レイアウトのコードなしで Help やユーザー名を右端に寄せられます。安定したサイズが必要な場合は、Width で項目の幅を固定できます。ヒント、無効状態、ホットトラッキングは、すべての種類で描画されます。

  • コマンドには tikButton、tikToggle、tikDropdown を使います
  • tikSeparator は細い縦線を描画します
  • tikSpacer は後続の項目を右に寄せます
  • tikLabel はバーの中にテキストを表示します
ヘルプのトピックを読む
コードなしのラジオグループ

コマンド

コードなしのラジオグループ

文字の配置、表示モード、描画ツールは、複数の選択肢から 1 つを選ぶ典型的な例です。複数のトグル項目に同じ GroupIndex を設定するとラジオグループになります。クリックまたはコードでいずれかの Down を設定すると、他の項目は解除されます。すでに押されている項目をクリックしても押されたままなので、常に 1 つの選択が維持されます。GroupIndex が 0 のトグルは、Bold や Word wrap のような単純なオンとオフのスイッチです。クリックすると OnItemClick が発生する前に Down が反転するので、ハンドラーでは新しい状態を読み取れます。グループの整合性を保つために、イベントを配線する必要はありません。

  • GroupIndex が 0 より大きいとラジオグループになります
  • Down でコードから状態を読み取ったり設定したりできます
  • 押された状態はアクセントカラーの色味で描画されます
  • リンクされたアクションの Checked が Down を制御します
ヘルプのトピックを読む

コマンド

ポップアップからのドロップダウンメニュー

ズームのレベル、エクスポート形式、最近使ったファイルは、10 個のボタンを追加するのではなく、ボタンの下のメニューに置くべきものです。tikDropdown 項目は、キャプションの後ろに小さな矢印を描画し、DropdownMenu に割り当てたポップアップメニューをボタンのすぐ下に表示します。VCL と FireMonkey では TPopupMenu、WinForms では ContextMenuStrip です。OnItemClick と項目の OnClick はメニューが開く前に発生するため、先にメニューの項目を設定したりチェックしたりできます。メニューが解放された場合は、バーが参照を自動的にクリアします。クリック先は 1 つ、メニューも 1 つで、コマンドが増えてもツールバーは短いままです。

  • DropdownMenu には、使用しているフレームワークのポップアップを指定します
  • 矢印はキャプションの後ろに描画されます
  • OnItemClick でメニューを設定したりチェックしたりできます
  • オーバーフローメニューからも同様に動作します
ヘルプのトピックを読む

コマンド 登録版のみ

収まらない項目はオーバーフローメニューに移動

ユーザーはウィンドウのサイズを変更します。最後のボタンを単に切り取ってしまうツールバーは、必要なコマンドを隠してしまいます。項目が収まらない場合、sgcToolbar は最後の項目をオーバーフローリストに移し、右端に二重シェブロンのボタンを描画します。これを押すと、実行時に作成される OverflowMenu が表示され、隠れた項目ごとに 1 つのエントリが並びます。エントリを選ぶと、クリックとまったく同じように動作します。トグルは反転し、OnItemClick が発生し、ドロップダウンはそのメニューを表示します。何が隠れているかはモデルから分かります。ウィンドウが再び広がると、項目は自動的にバーに戻ります。

  • OverflowMenu は実行時に自動で作成されます
  • 項目ごとに HasOverflow、OverflowCount、InOverflow があります
  • ItemAtPos はオーバーフローボタンへのヒットを報告します
  • SGC_TOOLBAR_ADVANCED の下でコンパイルされます

Community 版: 収まらない項目は切り取られ、オーバーフローボタンはありません。

ヘルプのトピックを読む

コマンド 登録版のみ

TAction を再利用

コマンドがすでに TActionList にあるなら、ツールバーでそれを重複させるべきではありません。Action プロパティで項目を任意の VCL または FireMonkey の TAction にリンクすると、アクションの Caption、Enabled、Visible、Hint、ImageIndex、Checked に追従します。項目に OnClick ハンドラーがない限り、クリックすると、バーを ActionComponent としてアクションが実行されます。バーはアイドル時に InitiateAction を呼び出すので、アクションが無効になれば、追加のコードなしでボタンも無効になります。.NET では、項目に ICommand 用の Command と CommandParameter があります。1 つの TActionList で、ツールバー、メインメニュー、ナビゲーションバーをまとめて制御できます。

  • Action で項目を任意の TBasicAction にリンクします
  • アクションの Checked がトグルの Down を制御します
  • アクションの OnUpdate はアイドル時に実行されます
  • .NET: Command と CommandParameter

Community 版では、アクションの代わりに項目の OnClick またはバーの OnItemClick を処理してください。

ヘルプのトピックを読む

ステータスバー

自動でレイアウトされ、進捗と状態を表示し、任意のスレッドからの更新を受け付けるステータスバーです。

自動でレイアウトされるステータスパネル

ステータスバー

自動でレイアウトされるステータスパネル

行と列、ファイル名、保存状態、メインメッセージは、いずれもウィンドウの下端を取り合います。TsgcVCLStatusBar は Panels を左から右に 3 段階で配置します。固定パネルは Width の幅を取り、AutoSize パネルはテキストの幅を取り、Spring パネルは残りの幅を分け合います。メインメッセージに Spring パネルを 1 つ使えば、ウィンドウのサイズに関わらずバーは整ったままです。パネルの間は細い線で区切られ、OnPanelClick でどのパネルがクリックされたか分かります。パネルはコレクションなので、デザイン時にオブジェクトインスペクターで追加や編集ができます。

  • Alignment と Hint を備えた spkText パネル
  • Spring パネルは空き幅を分け合います
  • AutoSize パネルはテキストに合わせた幅になります
  • OnPanelClick でパネルへのクリックを報告します
ヘルプのトピックを読む
進捗バーと状態インジケーター

ステータスバー

進捗バーと状態インジケーター

長い処理には進捗バーが、ライブ接続には正常かどうかを示すランプが必要です。パネルは、Progress の割合までアクセントカラーで塗りつぶされる進捗バーにも、色付きのドットとパネルのテキストを並べたインジケーターにもなります。IndicatorState で off、ok、warning、error を選べ、緑、琥珀、赤はライトテーマとダークテーマで別々に調整されています。データベース接続、データフィード、バックグラウンド同期の状態表示に向いています。Progress または IndicatorState を設定すると、パネルは自動的に再描画され、描画コードを書く必要はありません。

  • 0 から 100 の Progress を持つ spkProgress
  • IndicatorState を持つ spkIndicator
  • sisOff、sisOk、sisWarning、sisError
  • GetIndicatorColor はテーマに応じた色を返します
ヘルプのトピックを読む

ステータスバー

ワーカースレッドからステータスバーを更新

ダウンロード、フィード、長い計算はワーカースレッドで実行されますが、すべてのステータス更新をメインスレッドに戻すのは面倒で、間違いも起きやすい作業です。SetPanelText、SetProgress、SetIndicator は、Synchronize や Queue なしで任意のスレッドから呼び出せます。モデルは値をロックで保護し、値が実際に変わったときだけ OnChange を発生させるので、同じ値を繰り返し設定してもコストはかかりません。その後、VCL のバーはウィンドウにメッセージをポストし、FireMonkey のバーは再描画をキューに入れるため、UI がメインスレッド以外から操作されることはありません。パネルより長く生きるスレッドも安全です。

  • 任意のスレッドから SetPanelText、SetProgress、SetIndicator を呼び出せます
  • コードに Synchronize や Queue は不要です
  • 値が変わらなければコストはかかりません
  • 範囲外のインデックスは無視され、例外は発生しません
ヘルプのトピックを読む

外観、キーボード、出力

sgcUI の他の部分と調和するアイコン、テーマ、キーボード対応に加え、ドキュメント用のバーの画像も作成できます。

アイコンまたはグリフ文字、キャプションは任意

外観、キーボード、出力

アイコンまたはグリフ文字、キャプションは任意

クリックできるすべての項目には、16 論理ピクセルのアイコンスロットがあります。バーの Images リストの ImageIndex にある画像を表示し、項目に画像がない場合は Glyph を表示します。Glyph は文字や短い記号で、イメージリストはまったく不要です。ShowCaptions をオフにすると、アイコンだけのコンパクトなバーになり、キャプションはヒントになるので、情報は失われません。VCL のイメージリストは一度だけストレート ARGB に変換され、アルファ値が復元されてリストが変更されるまでキャッシュされるため、マスク付きと 32 ビットのどちらのリストでも正しく表示されます。アイコンをまだデザインしている間は、両方を自由に混在させられます。

  • イメージリスト用の Images と ImageIndex
  • 画像がない場合は Glyph を使います
  • アイコンだけにするには ShowCaptions を False にします
  • FireMonkey のイメージリストは Delphi XE8 から利用できます
  • アラビア語とヘブライ語の右から左対応:項目は右から並び、MirrorGlyph は戻る、進む、元に戻す、やり直しなど方向を示すアイコンを反転します
ヘルプのトピックを読む
ライト、ダーク、そしてあなたのアクセントカラー

外観、キーボード、出力

ライト、ダーク、そしてあなたのアクセントカラー

バーは、スイートのすべての製品が使うものと同じ sgcUICore のテーマトークンから色を取得するため、sgcGrid の上や sgcNavigation バーの横に置いたツールバーが、1 つのアプリケーションのように見えます。Theme で utLight または utDark を選び、AccentColor でフォーカスリング、トグルが押された状態の色味、進捗バーのアクセントを置き換えられます。ホット、押下、ダウン、フォーカス、無効の各状態はすべて自動的に導出されます。各バーはそれぞれ Theme を持つので、ツールバーとステータスバーの両方に設定してください。実行時に切り替えると、両方のバーがまとめて再描画されます。

  • Theme: utDefault(既定、アプリケーションのテーマに従う)、utLight、または utDark
  • AccentColor は $AARRGGBB 形式で、0 ならテーマのアクセントを使います
  • インジケーターの色はテーマに従います
  • 実行時に切り替えて、ダークモードのトグルを実現できます
ヘルプのトピックを読む

外観、キーボード、出力

キーボード操作と動作するサイズグリップ

ユーザーが必要とする場合、ツールバーをタブ順に加えられます。TabStop を設定すると、フォーカスされたボタンにフォーカスリングが表示され、左右キーで有効なボタン間を移動し、Home と End で先頭と末尾に移動し、Enter または Space で実行します。既定ではオフなので、ツールバーが下のエディターからフォーカスを奪うことはありません。ClickItem を使うと、たとえばフォームのショートカットから、コードで項目を実行できます。ステータスバーでは、SizeGrip がグリップのドットを描画し、VCL ではそれをドラッグしてサイズ変更可能なフォームのサイズを変えられます。FireMonkey ではグリップは描画されますがフォームのサイズは変わらないため、フォームのサイズを変更できない場合は SizeGrip をオフにしてください。

  • VCL では TabStop、FireMonkey では CanFocus を使います
  • ClickItem でコードから項目を実行します
  • ステータスバーの SizeGrip と GripRect
  • グリップは、フォームのサイズが変更可能な場合にのみサイズを変更します
ヘルプのトピックを読む

外観、キーボード、出力

ウィンドウなしで両方のバーを描画

マニュアルに載せたツールバーのスクリーンショットは、リリースのたびに古くなります。sgcToolbar_Render のレンダラーは、ウィンドウも VCL や FireMonkey も使わずに TsgcToolbarModel または TsgcStatusBarModel を描画するため、コンソールプログラム、テスト、Web サーバーでも、同じバーを画像として生成できます。SaveToPNG と SaveToSVG は、論理ピクセルでのサイズと scale を受け取ります。たとえば 560 × 44 を scale 2 で指定すると、鮮明な 1120 × 88 の画像になります。これらのユニットはすべてのプラットフォームでビルドでき、Linux64 も含まれます。OnGetImage で独自の画像を渡せば、画像は実行中のアプリケーションと一致します。

  • SaveToPNG は PNG ファイルまたはストリームに書き出します
  • SaveToSVG は同じバーを SVG として書き出します
  • TsgcToolbarModel と TsgcStatusBarModel の両方で動作します
  • OnGetImage でヘッドレス出力にアイコンを渡します
ヘルプのトピックを読む

sgcToolbar の動作を見る

sgcUI スイートのデモに含まれる sgcToolbar:組み込みのシミュレーションデータでオフラインで動作する完全なアプリケーションです。

sgcToolbar の主な利用シーン

ドキュメントエディターとコードエディター

エディターには、Bold と Italic のトグル、配置のラジオグループ、Zoom メニュー、行、列、保存状態を示すステータスバーが必要です。sgcToolbar は、1 つの項目コレクションと 1 つのパネルコレクションで、すでにお使いの TActionList とリンクしながら、そのすべてをカバーします。ウィンドウが狭くなっても、オーバーフローメニューにより、すべてのコマンドに手が届きます。EditorShell デモは、TMemo の周りにまさにこの構成を作ります。

  • 項目の種類
  • ラジオグループ
  • オーバーフローメニュー
EditorShell デモを実行する

長時間実行するツールとライブフィード

インポートツール、同期クライアント、監視アプリは、バックグラウンドスレッドで処理を行い、その状況を報告する必要があります。ワーカースレッドから直接 SetProgress、SetIndicator、SetPanelText を呼び出すと、コードに Synchronize を書かなくても、ステータスバーはメインスレッドで再描画されます。インジケーターはジョブの状態に応じて、緑、琥珀、赤に変わります。LiveStatus デモは、まさにこの動作をするダウンロードをシミュレートします。

  • スレッドセーフな更新
  • 進捗パネル
  • インジケーター
LiveStatus デモを実行する

すべてのプラットフォームで同じコマンドバー

Windows、macOS、モバイルに配布する FireMonkey アプリケーションには、どこでも同じツールバーがふさわしいはずです。TsgcFMXToolbar と TsgcFMXStatusBar は、VCL のバーと同じ項目、パネル、イベントを備え、WinForms、WPF、Avalonia 向けの .NET バーも同じ名前に従っています。EditorShellFMX は、エディターシェルの FireMonkey 版で、同じ項目、オーバーフローメニュー、ステータスパネルを備えています。

  • FireMonkey のバー
  • テーマ
  • ステータスパネル
EditorShellFMX デモを実行する

A Toolbar and Status Bar in a Few Lines

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

sgcToolbar のデモを実行する

EditorShell と LiveStatus のデモは VCL と C++ Builder 向けに付属し、Delphi 向けには FireMonkey 版も用意しています。.NET 版では WinForms、WPF、Avalonia のプロジェクトとして提供します。

EditorShell

登録版のみ EditorShell

トグル、Left、Center、Right のラジオグループ、Zoom ドロップダウン、TActionList のリンク、オーバーフローメニュー、行と列のパネル、Dark トグルを備えた、TMemo のエディターシェルです。オーバーフローとアクションを使うため、Registered 版または体験版が必要です。

LiveStatus

ワーカースレッドがダウンロードをシミュレートし、テキストパネル、進捗パネル、緑、琥珀、赤に変わるインジケーターを更新します。Start と Stop のボタン付きです。Community 版でビルドできます。

登録版のみ EditorShellFMX

FireMonkey の TMemo を TsgcFMXToolbar と TsgcFMXStatusBar で囲んだ EditorShell デモで、Delphi 専用です。同じ項目、アクションリンク、オーバーフローメニュー、ステータスパネルを備えています。

コンパイル済みデモ

sgcUI 全製品のすぐに実行できる実行ファイルです。インストールは不要です。

sgcUI_bin.zip をダウンロード →

sgcToolbar が含まれるエディション

sgcToolbar は、Standard 以上のすべての sgcUI エディションに含まれており、単体でも販売しています。All-Access バンドルにも含まれています。

sgcToolbar 単体パッケージ

€149 / 開発者、ソースコード一式、1 年間のアップデート付き。

sgcToolbar を購入 → 価格を見る →

sgcUI Standard

sgcToolbar、sgcGrid、sgcNavigation、sgcEditors、€380 から。

Standard を見る →

sgcUI Professional

Standard に加えて sgcCharts、sgcDashboard、sgcGauges、€529 から。

Professional を見る →

sgcUI Enterprise

sgcUI 全 14 製品、€699 から。

Enterprise を見る →

無料の Community 版(NuGet の esegece.sgcToolbar.Community)には、オーバーフローメニューとアクションリンクは含まれません。

機能Community(無料)登録版
すべての項目の種類、トグル、ラジオグループ、ドロップダウンメニュー✓✓
テキスト、進捗、インジケーターのパネル✓✓
スレッドセーフなステータス更新✓✓
アイコン、グリフ、テーマ、キーボード、サイズグリップ✓✓
ヘッドレスでの PNG と SVG 出力✓✓
オーバーフローメニュー−✓
アクションリンク(Delphi)と Command(.NET)−✓

対応フレームワークとプラットフォーム

sgcToolbar のコンポーネント

コンポーネントターゲット
TsgcVCLToolbar, TsgcVCLStatusBarDelphi と C++ Builder、VCL(sgcToolbar_VCL)
TsgcFMXToolbar, TsgcFMXStatusBarDelphi と C++ Builder、FireMonkey(sgcToolbar_FMX)
TsgcToolbarItem, TsgcStatusBarPanel, TsgcToolbarModel, TsgcStatusBarModelフレームワーク非依存のモデル(sgcToolbar_Model)
TsgcWinFormsToolbar, TsgcWinFormsStatusBar.NET、WinForms
TsgcWpfToolbar, TsgcWpfStatusBar.NET、WPF
TsgcAvaloniaToolbar, TsgcAvaloniaStatusBar.NET、Avalonia
ターゲットコンポーネントプラットフォーム
Delphi 7 から 13、VCLTsgcVCLToolbar、TsgcVCLStatusBarWin32 と Win64
Delphi XE6 から 13、FireMonkeyTsgcFMXToolbar、TsgcFMXStatusBarWindows、macOS、iOS、Android、Linux(FMXLinux)
C++ Builder 2007 から 13VCL と FireMonkey のバー生成された .hpp ヘッダーとスタティックライブラリ
Delphi 10.2 から 13、フレームワーク非依存モデルとヘッドレスの PNG および SVG レンダラーLinux64。たとえばサーバー上でツールバーを描画できます
.NET Framework 4.7.2、.NET 8、9 と 10TsgcWinFormsToolbar、WPF と Avalonia のバーWinForms、WPF、Avalonia

よくある質問

はい。SetPanelText、SetProgress、SetIndicator は、Synchronize や Queue なしで任意のスレッドから呼び出せます。モデルは値をロックで保護し、バーはメインスレッドで再描画されます。他のプロパティはすべてメインスレッドから設定します。スレッドセーフな更新をご覧ください。

同じ役割をカバーします。上部にはボタン、トグル、ドロップダウンボタン、セパレーター、ラベル、下部にはテキストパネルです。さらに、スペーサー項目、進捗パネルとインジケーターパネル、スレッドセーフなセッター、テーマ、ヘッドレス出力が加わります。既存の TActionList と TPopupMenu のコンポーネントは、Action と DropdownMenu でそのまま接続できます。

オーバーフローメニューと項目のアクションリンクです。アクションリンクは .NET では Command と CommandParameter に当たります。Community 版では、収まらない項目は切り取られます。スレッドセーフなステータス更新、進捗パネルとインジケーターパネル、ヘッドレス出力を含む他のすべての機能は、Community 版に含まれています。

はい。C++ Builder 2007 から 13 では、生成されたヘッダーとライブラリを通じて、同じ VCL と FireMonkey のバーを使えます。EditorShell と LiveStatus のデモも C++ Builder のプロジェクトとして付属します。このページのコードタブでは、同じツールバーを Delphi、C++ Builder、C# で確認できます。

はい。すべてのサイズは論理ピクセルにモニターのスケールを掛けた値で、アイコンスロットは 16 論理ピクセルなので、ボタン、グリフ、進捗バー、インジケーターのドットはどの DPI でも鮮明です。FireMonkey は、イメージリストから、フレームのデバイスサイズで画像を取得します。

はい。TsgcToolbarModel と TsgcStatusBarModel の SaveToSVG と SaveToPNG は、ウィンドウなしでバーを描画します。Delphi 10.2 以降では Linux64 でも動作するため、ビルドの手順でリリースごとにマニュアルの画像を再生成できます。scale パラメーターを使えば、高 DPI の画面や印刷でも鮮明な画像が得られます。

sgcToolbar のヘルプ

3,000+開発者
20+年
761+コンポーネント
30+API 連携
5プラットフォーム
30日間返金保証ご満足いただけない場合は、ご購入から30日以内に全額返金をリクエストできます。 返金ポリシーを見る

今すぐ sgcToolbar をお試しください

sgcUI 体験版には、sgcToolbar とその他すべての sgcUI 製品が含まれています。