FireMonkey、.NET & Delphi 7 から 13 sgcUI の一部

sgcNavigation、FireMonkey、.NET、Delphi 7 から 13 まで同じナビゲーションバー

モダンなナビゲーションメニューを数分でアプリケーションに追加できます。1 つのコントロールがサイドバーにもアコーディオンにもなり、滑らかなアニメーションでアイコンレールに折りたたまれ、未読件数をバッジで表示し、すべてキーボードだけで操作できます。ライトとダークのテーマも標準で備え、タブ付きフォームはドキュメントのタブを Web ブラウザーのようにテーマ付きのタイトルバーに置きます。 1 つのモデルと 1 つのヘッドレスレンダラーが、FireMonkey、WinForms、WPF、Avalonia、Delphi 7 から 13 の VCL、C++ Builder でバーを動かすので、製品のすべてのフロントエンドで同じようにナビゲートできます。

FireMonkey、WinForms、WPF、Avalonia、VCLDelphi 7 から 13C++ Builder 2007 から 13無料の .NET Community 版sgcUI Standard に含まれます
Workspace と Business の 2 グループに 8 項目が並ぶサイドバーを持つ SidebarApp デモ。Dashboard が選択され、右側に 2 枚の KPI カードが表示されています

アプリメニューに必要なものをすべて

ページの一覧を、ユーザーがすぐに現在地をつかめるナビゲーション構造に変える 20 の機能です。

レイアウトとモード

業務アプリケーションで使われる 2 つのナビゲーションスタイルと、その中間にある細いレールを、1 つのコントロールでカバーします。

モダンなアプリのサイドバーを 1 つのコンポーネントで

レイアウトとモード

モダンなアプリのサイドバーを 1 つのコンポーネントで

多くの業務アプリケーションでは、メインフォームの左端に同じものが必要です。領域ごとにグループ化されたページの一覧と、現在のページがはっきり分かる表示です。TsgcVCLNavigationBar をフォームに置いて左に配置し、項目を追加するだけです。グループヘッダーは、下に続く行の見出しとして控えめな色で表示され、選択されることはありません。選択された行にはアクセントカラーの背景と幅 3 ピクセルのアクセントバーが付くので、ユーザーは常に現在位置を把握できます。ホバー状態、押下状態、ヒント、無効な行もすべて描画されるため、最初の実行から完成度の高いバーになります。

  • Mode := nbmSidebar が既定のスタイルです
  • IsGroup で項目をグループヘッダーにできます
  • ItemHeight と GroupHeight で行の高さを設定します
  • 長い一覧はマウスホイールでスクロールでき、ScrollIntoView で任意の項目を表示できます
  • アラビア語とヘブライ語の右から左対応:アイコンとキャプションの位置が入れ替わり、インデント、シェブロン、バッジ、折りたたみボタンがミラー化されます
ヘルプのトピックを読む
1 つのプロパティでアコーディオンに切り替え

レイアウトとモード

1 つのプロパティでアコーディオンに切り替え

設定画面や管理コンソールでは、画面に収まらないほどセクションが多いことがよくあります。Mode を nbmAccordion にすると、各グループヘッダーが、下の項目を開閉するセクションになります。右側にシェブロンが表示され、子項目はインデントされます。既定では同時に開くグループは 1 つだけなので、長いメニューもコンパクトに保てます。複数のセクションを同時に開きたい場合は、AllowMultiExpand を設定します。項目、イベント、コードはまったく変わりません。最初のヘッダーより前に置いた項目はどのグループにも属さず、常に表示されるため、セクションの上に Home や Dashboard を置くのに向いています。

  • Mode := nbmAccordion でバー全体を切り替えます
  • Expanded でコードからグループを開閉できます
  • AllowMultiExpand で複数のグループを開いたままにできます
  • Indent で子項目のインデント幅を設定します
ヘルプのトピックを読む

レイアウトとモード

アニメーション付きでアイコンレールに折りたたむ

幅の広いサイドバーは、ユーザーが見たいデータの領域を奪ってしまいます。Collapsed を設定すると、バーは約 150 ms で展開時の幅から細いアイコンレールへ折りたたまれます。レールではアイコンだけが描画され、キャプションはヒントになり、グループヘッダーは区切り線に、バッジはドットになるので、大切な情報は失われません。バーが自分で幅を設定するため、隣のコンテンツは alClient で自然に追従します。Collapsed プロパティをハンバーガーボタン、ユーザー設定、フォームの幅などに連動させれば、サイドバーモードでもアコーディオンモードでも同じようにレールが開閉します。

  • Collapsed で 2 つの幅を切り替えます
  • ExpandedWidth(220)と CollapsedWidth(56)は論理ピクセルで指定します
  • AnimateCollapse でアニメーションのオンとオフを切り替えます
  • OnCollapsedChange でレールの開閉を通知します
ヘルプのトピックを読む

レイアウトとモード

選択に合わせてページを切り替える

ナビゲーションバーは、ユーザーに表示する内容を切り替えてこそ役に立ちます。有効な項目をクリックまたはタップすると、バーはその項目を選択し、OnItemClick を発生させてから、項目の OnClick を実行します。OnSelectionChange は、対応するページを表示するための唯一の場所です。たとえば、タブを非表示にした TPageControl のタブを切り替えます。SidebarApp デモはまさにこの方法で作られています。SelectedIndex を使うと、コードから現在のページを読み取ったり設定したりできます。ユーザーがまだ使えない項目は無効にしてヒントで理由を説明するか、見せたくないロールには非表示にできます。その間も選択のロジックは正しく動作します。

  • SelectedIndex はユーザーが選んだページです
  • OnSelectionChange でページやフレームを切り替えます
  • バーの OnItemClick と、項目ごとの OnClick があります
  • 項目ごとに Enabled、Hint、Visible を設定できます
ヘルプのトピックを読む

ナビゲーションシェル

検索付きの多階層ツリー、ドキュメントタブ、パンくずリスト、コマンドパレットを、バーと同じフレームワーク非依存のモデルの上に構築しています。

左に Mail、Contacts、Calendar、Settings の検索付きツリー、Work が選択された 4 つのタブ、ページの上に Mail、Folders、Work のパンくずリストを表示した NavigationShellFMX デモ

ナビゲーションシェル

検索付きの多階層ツリー

大規模なアプリケーションでは、フラットなページ一覧では足りなくなります。Mode を nbmTree に設定すると、バーは必要な深さまで階層化できるツリーになります。項目は引き続きフラットなコレクションで、項目の Depth がその階層を決めるため、バーを構築するコードはほとんど変わりません。各階層はインデントされ、各親項目は折りたたむことができます。ShowSearch を有効にすると、項目の上の検索行が入力に合わせてツリーを絞り込み、一致した項目の親を開いたままにして、一致した文字を強調表示します。あいまい一致では、'stg' から 'Settings' が見つかります。ツリーモードと検索は、すべてのエディションに含まれます。

  • Mode := nbmTree と項目ごとの Depth
  • ExpandAll、CollapseAll、Expand(aIndex, aRecursive)
  • FilterMode に nfmContains または nfmFuzzy を指定できる Filter
  • ShowSearch で検索行を表示し、Esc でクリア
  • 右キーと左キーで展開と折りたたみ、* で枝全体を展開
ヘルプのトピックを読む

ナビゲーションシェル

開いているドキュメントのためのタブ

ドキュメント型のアプリケーションは、開いているページをタブとして表示します。TsgcFMXNavigationTabs、TsgcVCLNavigationTabs、および WinForms、WPF、Avalonia のタブストリップは、アイコン、タイトル、閉じるボタン、変更済みを示すドットを持つタブに加えて、新しいタブのボタンとすべてのタブの一覧を描画します。タブが収まらない場合は、TabSizing が縮小するか、スクロールボタンが表示されます。タブの Control は、そのタブがアクティブなときにストリップが表示するページです。登録版では、ユーザーがタブをドラッグして並べ替えたり、残したいタブを固定したり、タブをストリップの外へドラッグして独自のウィンドウで開いたりでき、SaveLayout がそのレイアウトを次回の実行まで保持します。

  • タブごとの Tabs.AddTab、ActiveIndex、Control
  • TabSizing、CloseButtons、ShowNewButton、ShowListButton
  • Ctrl+Tab、中クリックで閉じる、OnTabClose で拒否可能
  • 登録版のみ ドラッグによる並べ替え、Pinned タブ、OnTabTearOff、SaveLayout と LoadLayout
ヘルプのトピックを読む 並べ替え、固定タブ、切り離し

ナビゲーションシェル

ツリーに追従するパンくずリスト

深いツリーでは、現在地を確認して上の階層へ移動する手段が必要です。パンくずリストは、パスを Mail、Folders、Work のようなセグメントの並びとして表示します。セグメントをクリックするとそこへ戻り、セグメントの後ろのシェブロンをクリックすると、その子項目が一覧表示されて別の場所へ移動できます。ナビゲーションバーにバインドすると選択中の項目に追従します。Path や Segments から自分で設定することもできます。パスが長すぎる場合は、先頭のセグメントがオーバーフローボタンにまとめられます。登録版では、空白部分のクリック、F4、Ctrl+L のいずれかで、パンくずリストがファイルマネージャーのアドレスバーのように完全なパスを編集できる入力欄に切り替わります。

  • NavigationBar でパンくずリストをバーにバインド
  • 独自の Path、PathDelimiter、OnGetChildren
  • OnSegmentClick と AutoTruncate
  • 登録版のみ OnPathEdit による編集モード
ヘルプのトピックを読む

ナビゲーションシェル 登録版のみ

あらゆるコマンドのためのコマンドパレット

上級ユーザーは、メニューをたどるより入力することを好みます。Ctrl+Shift+P を押すとコマンドパレットがウィンドウの上部に開き、数文字入力するだけで、あいまい一致ですべてのコマンドが並べ替えられます。たとえば 'tgsb' で 'Toggle sidebar' が見つかり、一致した文字が強調表示され、カテゴリやパスは薄い色で、ショートカットは右側に表示されます。クエリが空のときは、最近使ったコマンドが最初に表示されます。パレットは、自身のコマンドと、追加したすべてのコマンドソースを一覧表示します。ナビゲーションバーの項目、リボンやツールバーのボタン (Delphi)、アクションリストのアクション、または独自のソースです。

  • カテゴリ、キーワード、ショートカットテキストを指定する Commands.AddCommand
  • バー、リボン、ツールバー、アクションリスト用の Sources.AddSource
  • SaveRecent と LoadRecent が最近使った一覧を保持
  • .NET のコマンドでは ICommand

FireMonkey、VCL、WinForms、WPF、Avalonia の登録版。IsgcUICommandSource インターフェイスはすべてのエディションに含まれます。

ヘルプのトピックを読む コマンドソース

ナビゲーションシェル

タイトルバーにタブを置くタブ付きフォーム

ブラウザー、ターミナル、モダンなエディターは、タブをウィンドウのタイトルバーに置き、ドキュメントが画面の高さをフルに使えるようにしています。タブ付きフォームは、アプリケーションでも同じことを行います。フォームに配置してタブストリップにリンクするだけで、sgcUI がネイティブのタイトルバーを取り除き、ウィンドウアイコン、タブ、新規タブボタン、最小化、最大化、閉じるボタンを備えたテーマ付きのタイトルバーを、アプリケーションの sgcUI テーマ(Classic または Fluent、ライトまたはダーク)で描画します。ウィンドウは影、サイズ変更の境界、最大化時の動作を保ち、最大化ボタンにポインターを置くと Windows 11 がスナップレイアウトを表示します。最後のタブの右側の空きスペースをドラッグすると、ウィンドウを移動できます。登録版では、ユーザーがタブをストリップの外へドラッグして新しいウィンドウにしたり、別のウィンドウのタイトルバーにドロップしたりできます。Web ブラウザーと同じ操作です。

  • TsgcVCLNavigationTabbedForm と TsgcFMXNavigationTabbedForm(Delphi と C++ Builder)、TsgcWinFormsNavigationTabbedForm、TsgcWpfNavigationTabbedWindow、TsgcAvaloniaNavigationTabbedWindow(.NET)
  • Tabs でタブストリップをリンクします。Delphi では Notebook でノートブックのストリップをタイトルバーに移し、ページはノートブックに残ります
  • 空きのストリップをダブルクリックするとウィンドウが最大化され、右クリックでシステムメニューが表示されます
  • WPF と Avalonia では、ウィンドウの添付プロパティ Tabs で XAML から設定できます
  • 登録版のみ 切り離し: TearOffMode は切り離したタブをポインターの下のウィンドウに移し、ttmNewForm はポインターに追従する OnCreateTearOffForm の新しいウィンドウでタブを開きます

タブ付きフォームは Community 版を含むすべてのエディションに含まれます。切り離しは、タブの切り離しと同じく登録版に含まれます。テーマ付きフレームにはデスクトップコンポジションが有効な Windows が必要で、FireMonkey では Windows のみに適用されます。macOS、Linux、iOS、Android ではネイティブのタイトルバーのままです。

ヘルプのトピックを読む ウィンドウフレーム .NET のタブ付きフォーム

ドッキングマネージャー

IDE スタイルのワークスペースです。ツールパネルは各辺にドッキングしたり、自動的に隠したり、フローティングしたりでき、中央にはタブ付きドキュメント領域があり、レイアウトは JSON として保存されます。

左にタブ表示された Explorer と Search、自動的に隠された Toolbox ストリップ、4 つのドキュメントタブ、右に Properties、下部に Output を配置したドックサイト。Output をドラッグしている間、ドキュメントの右半分にドロップガイドとプレビュー矩形が表示されています

ドッキングマネージャー 登録版のみ

パネルをドロップガイドへドラッグ

ツールウィンドウが多いアプリケーションには、ユーザーが自分で配置できるワークスペースが必要です。TsgcVCLDockManager、TsgcFMXDockManager、TsgcWinFormsDockManager、TsgcWpfDockManager、TsgcAvaloniaDockManager は、ツールパネルをフォームの 4 辺に、スプリッター付きの入れ子の分割とタブ付きグループとしてドッキングします。ユーザーがキャプションまたはタブをドラッグすると、ドロップガイドが配置先を示します。ポインターの下にあるグループのコンパスは、そのグループを辺で分割するか、パネルをタブとして追加し、辺のガイドはサイト全体の端にドッキングし、アクセントカラーのプレビュー矩形は、パネルが占める領域を示します。Esc でドラッグをキャンセルできます。 Avalonia ドッキングのページで、TsgcAvaloniaDockManager を XAML と C# で紹介しています。

  • Panels.Add に Name、Caption、Placement、DockSize を指定し、独自のコントロールを Control に設定します
  • コードからの DockPanel、ClosePanel、ShowPanel、ActivatePanel
  • OnPanelDock で、ドッキング、フロート、自動非表示の変更を拒否できます
  • すべてのキャプションに閉じる、ピン留め、最大化、メニューの各ボタン
ヘルプのトピックを読む ドラッグ&ドロップ

ドッキングマネージャー 登録版のみ

パネルをサイドストリップへ自動非表示

たまにしか必要としないツールパネルが、常に場所を取るべきではありません。キャプションのピンボタンでそのグループを自動非表示にすると、パネルはフォームの端にある細いストリップのタブになり、マウスを重ねるかタブをクリックすると、パネルがコンテンツの上にスライドして現れます。ユーザーが別の場所で作業すると元に戻り、フライアウトのピンボタンで、以前の辺とサイズのままグループを再びドッキングできます。iOS と Android では、タップでフライアウトが開きます。

  • コードからの Model.SetAutoHide(aPanel, True)
  • AutoHideDelay はマウスを重ねてからの遅延で、既定値は 400 ms です
  • パネルごとの CanAutoHide。ドキュメントは自動非表示になりません
  • Alt+F7 とコマンドパレットで、自動非表示パネルのフライアウトを開きます
ヘルプのトピックを読む

ドッキングマネージャー 登録版のみ

デスクトップ上のフローティングウィンドウ

ガイドから離れた場所にドロップしたパネルは、独自のウィンドウとしてフローティングし、ユーザーは別の場所や別のモニターへ移動できます。フロートはドックサイトと同じようにレイアウトを持つため、ほかのパネルを横に並べて、またはタブとしてドッキングでき、キャプションをダブルクリックすると再びドッキングします。フロートは、フォームが所有しタスクバーに表示されない枠なしのツールウィンドウで、描画されたキャプションとサイズ変更用の枠を持ち、それぞれが自分のモニターのスケールを使います。VCL、WinForms、WPF、Avalonia のデスクトップアプリケーションと、Windows および macOS 上の FireMonkey で動作します。iOS と Android ではパネルはフローティングせず、ドラッグ中はガイドだけが表示されます。

  • コードからの FloatPanel(aPanel, aLeft, aTop)
  • ドッキングマネージャーの AllowFloating とパネルごとの CanFloat
  • Placement := dplFloat で、パネルを FloatWidth x FloatHeight のフローティング状態で開始します
  • 表示可能な作業領域の外にあるフロートは、レイアウトの読み込み時にその内側へ戻ります
ヘルプのトピックを読む

ドッキングマネージャー 登録版のみ

中央のタブ付きドキュメント領域

ドックサイトの中央にはドキュメントが置かれます。1 つ以上のドキュメントグループがあり、それぞれの上部にタブストリップがあります。ストリップはナビゲーションのタブと同じように動作し、ドラッグによる並べ替え、先頭に固定されるドキュメント、閉じるボタン、変更済みを示すドット、中ボタンクリックで閉じる操作、Ctrl+Tab、すべてのタブの一覧を備えます。ドキュメントタブをコンパスの辺の矢印へドラッグすると、領域が左右または上下に並ぶ 2 つのドキュメントグループに分割されます。切り離してフローティングにしたり、ダブルクリックでそのグループを最大化したりもできます。新規タブボタンは OnNewDocument を発生させ、コードが次のドキュメントを作成します。

  • パネルごとの Kind := dpkDocument、Pinned、Modified
  • DocumentTabSizing、DocumentCloseButtons、DocumentShowNewButton、DocumentShowListButton
  • Ctrl+F6 でドキュメントを切り替え、OnActiveDocumentChange がアクティブなドキュメントを通知します
  • OnPanelClose で、ドキュメントを開いたままにできます
ヘルプのトピックを読む

ドッキングマネージャー 登録版のみ

レイアウトを保存して復元

ユーザーは、パネルが前回の場所にあることを期待します。SaveLayout は、配置全体をコンパクトな JSON として書き出します。分割とそのサイズ、グループとそのアクティブなパネル、各辺の自動非表示グループ、境界を含むフロート、最大化されたグループ、非表示のパネルが含まれます。次回の起動時に LoadLayout がそれを復元します。テキストは Delphi と .NET で同じなので、1 つのレイアウトファイルを両方で使えます。レイアウトに名前があるのにフォームにまだ存在しないパネル(たとえば開いていたドキュメント)は OnRestorePanel に届き、コードがそのコンテンツを作成するか、破棄します。

  • SaveLayout、SaveLayoutToFile、SaveLayoutToStream
  • LoadLayout、LoadLayoutFromFile、LoadLayoutFromStream は、認識できないテキストでは False を返し、何も変更しません
  • 実行時に作成されるパネル向けの OnRestorePanel
  • パネルごとの "Window" コマンドが、コマンドパレットをウィンドウスイッチャーに変えます

FireMonkey、VCL、WinForms、WPF、Avalonia の登録版で、C++ Builder にも対応します。キーボード、UI Automation、右から左、テーマ、ハイ DPI を含みます。

ヘルプのトピックを読む

情報を伝える項目

行には、キャプションだけでなく、アイコン、件数、すでに書いたロジックへのリンクを持たせられます。

未読件数のバッジ

情報を伝える項目

未読件数のバッジ

ページを開く前に、対応が必要なものがあることをユーザーに伝えたい場合があります。項目に Badge を設定します。未読件数や New といった言葉などです。すると、バーは行の右側にアクセントカラーのピルとして描画し、見やすい方の黒または白の文字を使います。値が変わるたびにコードから設定すれば、バーは自動的に再描画されます。折りたたんだレールでは、バッジはアイコン上のドットになります。バッジは単なるテキストなので、件数、短いラベル、状態を表す言葉のいずれも、独自の描画コードなしで同じプロパティで扱えます。

  • Badge は項目ごとの短いテキストです
  • Badge が空の場合は何も描画されません
  • ピルにはテーマのアクセントカラー、または AccentColor が使われます
  • Hint と組み合わせると、件数の意味を説明できます
ヘルプのトピックを読む
イメージリストまたはグリフからのアイコン

情報を伝える項目

イメージリストまたはグリフからのアイコン

すべての行にアイコン用のスロットがあります。すでに使っているイメージリストをバーに指定し、項目ごとに ImageIndex を設定すると、マスク付きや 32 ビットの画像は一度だけ変換され、リストが変更されるまでキャッシュされます。まだイメージリストがない場合は、代わりに Glyph を設定します。テーマの色に従う文字や短い記号で、デモの見た目はこの方法です。無効な項目の画像は 40 パーセントの不透明度で描画されるため、状態が一目で分かります。両方を混在させても問題ありません。イメージインデックスを持つ項目は画像を、それ以外はグリフを表示するので、アイコンを少しずつ追加できます。

  • イメージリスト用の Images と ImageIndex
  • 画像なしで文字や記号を使うための Glyph
  • VCL では画像を元のサイズで描画します
  • FireMonkey のイメージリストは Delphi XE8 から利用できます
ヘルプのトピックを読む

情報を伝える項目 登録版のみ

項目を TAction に接続

TActionList を使って作られたアプリケーションでは、コマンド、キャプション、有効かどうかのルールがすでに 1 か所にまとまっています。Action プロパティで項目を任意の VCL または FireMonkey の TAction にリンクすると、Caption、Enabled、Visible、Hint、ImageIndex がアクションに追従します。クリックすると、バーを ActionComponent としてアクションが実行され、OnUpdate がアイドル時に実行されるため、アクションが無効になるとすぐに項目がグレーアウトされます。.NET では、同じ役割を Command と CommandParameter が担います。1 つの TActionList で、フォームのメニュー、ツールバー、キーボードショートカットをまとめて制御できます。

  • Action で項目を任意の TBasicAction にリンクします
  • 項目の OnClick は、アクションの代わりに実行されます
  • SGC_NAVIGATION_ACTIONS の下でコンパイルされます
  • .NET: ICommand を使う Command と CommandParameter

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

ヘルプのトピックを読む

キーボード、テーマ、出力

バーをネイティブらしく感じさせ、アプリケーションの他の部分と一貫させるための細部です。

キーボード優先のナビゲーション

キーボード、テーマ、出力

キーボード優先のナビゲーション

上級ユーザーはマウスを使わずにページを切り替えます。アクセシビリティの審査でも求められる機能です。バーは Tab キーでフォーカスを受け取り、フォーカスされた行は表示されている有効な項目の間を移動します。上下キーで 1 つずつ移動し、Home と End で先頭と末尾に移動し、Enter または Space で実行します。アコーディオンでは、左キーでグループを閉じ、右キーで開きます。破線のフォーカス枠はキーボードを使っている間だけ表示され、フォーカスは選択中のページとは別に管理されます。FireMonkey のバーでも CanFocus を通じて同じキーが使えるため、デスクトップのユーザーはどのプラットフォームでも同じ動作になります。

  • VCL のバーでは TabStop が既定でオンです
  • モデルの FocusedIndex がキーボードで選んでいる行です
  • SelectedIndex は選ばれたページのままです
  • 折りたたんだレールでは、ヒントにキャプションが表示されます
ヘルプのトピックを読む
ライト、ダーク、そしてあなたのアクセントカラー

キーボード、テーマ、出力

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

アプリケーションのテーマを無視するメニューは、取って付けたように見えます。Theme は、共有の sgcUICore トークンから、背景、枠線、文字、グループヘッダー、ホバー、アクセントの各色を設定します。そのため、同じ Theme を指定したバーと sgcDashboard は完全に調和します。AccentColor を使うと、選択バー、フォーカス枠、バッジのアクセントをブランドカラーに置き換えられます。ダッシュボードのタイルに配置したバーは、ダッシュボードのテーマに自動的に従います。実行時にテーマを切り替えるとバーはすぐに再描画されるので、設定ページのダークモード切り替えにそのまま使えます。

  • Theme: utDefault(既定、アプリケーションのテーマに従う)、utLight、または utDark
  • AccentColor は $AARRGGBB 形式の値で、0 ならテーマのアクセントを使います
  • すべての sgcUI 製品と同じトークンを使います
  • ダッシュボードのタイルが自分のテーマをバーに伝えます
ヘルプのトピックを読む
ウィンドウなしでバーを描画

キーボード、テーマ、出力

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

ドキュメント、ビジュアルテスト、Web バックエンドでは、メニューそのものではなく、メニューの画像が必要になることがあります。sgcNavigation_Render のレンダラーは、ウィンドウも VCL や FireMonkey も使わずに TsgcNavigationModel を描画するため、コンソールプログラム、サービス、サーバーでも、同じバーを PNG や SVG として生成できます。このユニットはすべてのプラットフォームでビルドでき、Linux64 も含まれます。scale パラメーターを使えば、高 DPI の画面でも鮮明な画像が得られます。イメージリストをレンダラーに渡すと、出力された画像には実行中のアプリケーションと同じアイコンが表示されます。

  • sgcNavigationSaveToPNG は PNG ファイルまたはストリームに書き出します
  • sgcNavigationSaveToSVG は同じバーを SVG として書き出します
  • sgcNavigationRender は任意の sgcUICore キャンバスに描画します
  • 幅と高さは論理ピクセルに scale を掛けた値です
ヘルプのトピックを読む

sgcNavigation の動作を見る

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

sgcNavigation の主な利用シーン

ERP と管理アプリのためのモダンなシェル

すでに数十のフォームがあり、メインウィンドウがそれらをメニューバーから開いているとします。左にサイドバーを置き、領域ごとに 1 項目を割り当て、OnSelectionChange でタブを非表示にした TPageControl のタブを切り替えます。バッジで保留中の注文や未読メッセージを示し、アイコンレールでフォームに広い領域を返せます。SidebarApp を実行すると、sgcDashboard ページと組み合わせたこのパターンの動作を確認できます。

  • サイドバーモード
  • バッジ
  • アイコンレールへの折りたたみ
SidebarApp デモを実行する

設定画面と管理コンソール

設定画面では、Sales、Inventory、Admin のような少数の見出しの下に、数十のページがまとめられます。アコーディオンは、同時に 1 つのセクションを開いたままにし、AllowMultiExpand を使えば複数を開けます。アクションリンクは、TActionList のコマンドと有効かどうかのルールをそのまま再利用します。キーボードのユーザーは、矢印キーでセクション間を移動できます。Accordion デモでは、3 つのグループ、展開の切り替え、クリックログを確認できます。

  • アコーディオンモード
  • アクションリンク
  • キーボードナビゲーション
Accordion デモを実行する

どのプラットフォームでも同じナビゲーション

Windows、macOS、iOS、Android で動く FireMonkey アプリケーションが、プラットフォームごとに異なるメニューを必要とするべきではありません。TsgcFMXNavigationBar は VCL のバーと同じ項目、モード、イベントを備え、WinForms、WPF、Avalonia 向けの .NET バーも同じ名前に従っています。Delphi のデスクトップアプリと .NET のツールの両方を提供するチームでも、考え方を 1 つに保てます。SidebarFMX は、サイドバーデモの FireMonkey 版です。

  • FireMonkey のバー
  • テーマ
  • .NET のバー
SidebarFMX デモを実行する

A Navigation Bar in a Few Lines

FireMonkey、C#、Delphi VCL、C++ Builder で同じ API を使えます。グループ、バッジ、無効な項目、Collapse ボタンを備えたアコーディオンバーです。FireMonkey と C# のタブでは、タブストリップとコマンドパレットが加わります。

uses
  FMX.Types, FMX.Controls, FMX.Forms, FMX.StdCtrls,
  sgcUICore_Theme, sgcNavigation_Model, sgcNavigation_FMX;

procedure TMainForm.CreateNavigation;
begin
  // an accordion bar on the left, dark theme, several groups open at once
  FNav := TsgcFMXNavigationBar.Create(Self);
  FNav.Parent := Self;
  FNav.Align := TAlignLayout.Left;
  FNav.Mode := nbmAccordion;
  FNav.AllowMultiExpand := True;
  FNav.Theme := utDark;
  // a group header (third parameter True), then the items under it
  FNav.Items.AddItem('Sales', '', True);
  FNav.Items.AddItem('Orders', 'O');
  FNav.Items.AddItem('Invoices', 'I').Badge := '3';
  FNav.Items.AddItem('Admin', '', True);
  FNav.Items.AddItem('Users', 'U').Hint := 'Manage the users';
  FNav.Items.AddItem('Billing', 'B').Enabled := False;
  FNav.SelectedIndex := 1;
  FNav.OnItemClick := NavItemClick;
  FNav.OnSelectionChange := NavSelectionChange;
  // a Collapse button folds the bar into an icon rail with an animation
  FNav.AnimateCollapse := True;
  FButton.Text := 'Collapse';
  FButton.OnClick := ButtonClick;
end;

procedure TMainForm.NavItemClick(Sender: TObject; aItem: TsgcNavigationItem);
begin
  Caption := 'Clicked: ' + aItem.Caption;
end;

procedure TMainForm.NavSelectionChange(Sender: TObject);
begin
  FPage.Text := FNav.Items[FNav.SelectedIndex].Caption + ' page';
end;

procedure TMainForm.ButtonClick(Sender: TObject);
begin
  FNav.Collapsed := not FNav.Collapsed;
end;
uses
  FMX.Types, FMX.Controls,
  sgcNavigation_Tabs, sgcNavigation_Tabs_FMX,
  sgcNavigation_Palette, sgcNavigation_Palette_FMX;

procedure TMainForm.CreateShell;
var
  oTab: TsgcNavigationTab;
  oCommand: TsgcCommandPaletteCommand;
begin
  // a tab strip on top: every tab shows its own page
  FTabs := TsgcFMXNavigationTabs.Create(Self);
  FTabs.Parent := FContent;
  FTabs.Align := TAlignLayout.Top;
  oTab := FTabs.Tabs.AddTab('Orders');
  oTab.Control := FOrdersPage;
  FTabs.ActiveIndex := oTab.Index;
  // the command palette (Registered edition), Ctrl+Shift+P opens it
  FPalette := TsgcFMXCommandPalette.Create(Self);
  oCommand := FPalette.Commands.AddCommand('Toggle sidebar', 'View', 'Ctrl+B');
  oCommand.OnExecute := ButtonClick;
  // every item of the bar becomes a "Go to" command
  FPalette.Sources.AddSource(FNav);
end;
procedure TMainForm.CreateNavigation;
var
  oItem: TsgcNavigationItem;
begin
  // an accordion bar on the left, dark theme, several groups open at once
  FNav := TsgcVCLNavigationBar.Create(Self);
  FNav.Parent := Self;
  FNav.Align := alLeft;
  FNav.Mode := nbmAccordion;
  FNav.AllowMultiExpand := True;
  FNav.Theme := utDark;
  // a group header (third parameter True), then the items under it
  FNav.Items.AddItem('Sales', '', True);
  FNav.Items.AddItem('Orders', 'O');
  FNav.Items.AddItem('Invoices', 'I').Badge := '3';
  FNav.Items.AddItem('Admin', '', True);
  oItem := FNav.Items.AddItem('Users', 'U');
  oItem.Hint := 'Manage the users';
  oItem := FNav.Items.AddItem('Billing', 'B');
  oItem.Enabled := False;
  FNav.SelectedIndex := 1;
  FNav.OnItemClick := NavItemClick;
  FNav.OnSelectionChange := NavSelectionChange;
  // a Collapse button folds the bar into an icon rail with an animation
  FNav.AnimateCollapse := True;
  FButton.Caption := 'Collapse';
  FButton.OnClick := ButtonClick;
end;

procedure TMainForm.NavItemClick(Sender: TObject; aItem: TsgcNavigationItem);
begin
  Caption := 'Clicked: ' + aItem.Caption;
end;

procedure TMainForm.NavSelectionChange(Sender: TObject);
begin
  FPanel.Caption := FNav.Items[FNav.SelectedIndex].Caption + ' page';
end;

procedure TMainForm.ButtonClick(Sender: TObject);
begin
  FNav.Collapsed := not FNav.Collapsed;
end;

ブラウザースタイルのウィンドウ: TsgcVCLNavigationTabbedForm がタブストリップをテーマ付きのタイトルバーに移します。

uses
  Classes, Controls, Forms,
  sgcNavigation_Tabs, sgcNavigation_Tabs_VCL, sgcNavigation_TabbedForm_VCL;

procedure TMainForm.CreateTabbedForm;
begin
  // a browser style strip with close buttons and a new tab button
  FTabs := TsgcVCLNavigationTabs.Create(Self);
  FTabs.Parent := Self;
  FTabs.ShowNewButton := True;
  FTabs.CloseButtons := tcbAlways;
  FTabs.Tabs.AddTab('Home');
  FTabs.Tabs.AddTab('Orders');
  FTabs.ActiveIndex := 0;
  // the window frame: the strip moves into the themed title bar
  FTabbedForm := TsgcVCLNavigationTabbedForm.Create(Self);
  FTabbedForm.Tabs := FTabs;
  // Registered edition: a tab dropped on another tabbed window moves there
  FTabbedForm.TearOffMode := ttmEvent;
end;
#include <vcl.h>
#include <Vcl.ExtCtrls.hpp>
#include "sgcUICore_Theme.hpp"
#include "sgcNavigation_Model.hpp"
#include "sgcNavigation_VCL.hpp"

class TNavHandler : public TObject
{
public:
  TsgcVCLNavigationBar *Nav;
  TPanel *Content;
  void __fastcall ItemClick(TObject *Sender, TsgcNavigationItem *aItem);
  void __fastcall SelectionChange(TObject *Sender);
  void __fastcall CollapseClick(TObject *Sender);
};

void __fastcall TNavHandler::ItemClick(TObject *Sender, TsgcNavigationItem *aItem)
{
  Content->Caption = "Clicked: " + aItem->Caption;
}

void __fastcall TNavHandler::SelectionChange(TObject *Sender)
{
  Content->Caption = Nav->Items->Items[Nav->SelectedIndex]->Caption + " page";
}

void __fastcall TNavHandler::CollapseClick(TObject *Sender)
{
  Nav->Collapsed = !Nav->Collapsed;   // animated fold into an icon rail
}

void __fastcall CreateNavigation(TForm *Form, TNavHandler *Handler)
{
  // an accordion bar on the left, dark theme, several groups open at once
  TsgcVCLNavigationBar *Nav = new TsgcVCLNavigationBar(Form);
  Nav->Parent = Form;
  Nav->Align = alLeft;
  Nav->Mode = nbmAccordion;
  Nav->AllowMultiExpand = true;
  Nav->AnimateCollapse = true;
  Nav->Theme = utDark;
  // a group header (third parameter true), then the items under it
  Nav->Items->AddItem("Sales", "", true);
  Nav->Items->AddItem("Orders", "O", false);
  Nav->Items->AddItem("Invoices", "I", false)->Badge = "3";
  Nav->Items->AddItem("Admin", "", true);
  Nav->Items->AddItem("Users", "U", false)->Hint = "Manage the users";
  Nav->Items->AddItem("Billing", "B", false)->Enabled = false;
  Nav->SelectedIndex = 1;
  TPanel *Content = new TPanel(Form);
  Content->Parent = Form;
  Content->Align = alClient;
  Handler->Nav = Nav;
  Handler->Content = Content;
  Nav->OnItemClick = Handler->ItemClick;
  Nav->OnSelectionChange = Handler->SelectionChange;
  TButton *Button = new TButton(Form);
  Button->Parent = Content;
  Button->Caption = "Collapse";
  Button->OnClick = Handler->CollapseClick;
}
using System;
using System.Windows.Forms;
using esegece.sgcUICore;
using esegece.sgcNavigation;

internal class MainForm : Form
{
    private readonly TsgcWinFormsNavigationBar Nav = new TsgcWinFormsNavigationBar();
    private readonly Label lblPage = new Label { Dock = DockStyle.Fill };
    private readonly Button btnCollapse = new Button { Text = "Collapse", Dock = DockStyle.Top };

    public MainForm()
    {
        // an accordion bar on the left, dark theme, several groups open at once
        Nav.Dock = DockStyle.Left;
        Nav.Mode = TsgcNavigationMode.nbmAccordion;
        Nav.AllowMultiExpand = true;
        Nav.AnimateCollapse = true;
        Nav.Theme = TsgcUITheme.utDark;
        // a group header (third parameter true), then the items under it
        Nav.Items.AddItem("Sales", "", true);
        Nav.Items.AddItem("Orders", "O");
        Nav.Items.AddItem("Invoices", "I").Badge = "3";
        Nav.Items.AddItem("Admin", "", true);
        Nav.Items.AddItem("Users", "U").Hint = "Manage the users";
        Nav.Items.AddItem("Billing", "B").Enabled = false;
        Nav.SelectedIndex = 1;
        Nav.OnItemClick = (sender, item) => Text = "Clicked: " + item.Caption;
        Nav.OnSelectionChange = sender => lblPage.Text = Nav.Items[Nav.SelectedIndex].Caption + " page";
        // the Collapse button folds the bar into an icon rail with an animation
        btnCollapse.Click += (s, e) => Nav.Collapsed = !Nav.Collapsed;
        Controls.Add(lblPage);
        Controls.Add(btnCollapse);
        Controls.Add(Nav);
    }
}
// tabs and a command palette on the same form
private readonly TsgcWinFormsNavigationTabs Tabs = new TsgcWinFormsNavigationTabs();
private readonly TsgcWinFormsCommandPalette Palette = new TsgcWinFormsCommandPalette();

private void CreateShell(Control aOrdersPage)
{
    // a tab strip on top: every tab shows its own page
    Tabs.Dock = DockStyle.Top;
    TsgcNavigationTab oTab = Tabs.Tabs.AddTab("Orders");
    oTab.Control = aOrdersPage;
    Tabs.ActiveIndex = oTab.Index;
    Controls.Add(Tabs);
    // the command palette (Registered edition), Ctrl+Shift+P on this form opens it
    Palette.OwnerForm = this;
    TsgcCommandPaletteCommand oCommand = Palette.Commands.AddCommand("Toggle sidebar", "View", "Ctrl+B");
    oCommand.OnExecute = sender => Nav.Collapsed = !Nav.Collapsed;
    // every item of the bar becomes a "Go to" command
    Palette.Sources.AddSource(Nav);
}
dotnet add package esegece.sgcNavigation.WinForms

sgcNavigation のデモを実行する

NavigationShell と DockingShell のデモは FireMonkey、VCL、WinForms、WPF、Avalonia 向けに付属します。サイドバーデモは FireMonkey 向けに付属し、SidebarApp と Accordion のデモは .NET エディションに WinForms、WPF、Avalonia のプロジェクトとして、また Delphi VCL と C++ Builder 向けに付属します。

NavigationShellFMX

FireMonkey 向けの完全なナビゲーションシェルです (Delphi のみ)。左に検索行付きのツリー、開いているページごとのタブ、ツリーに追従するパンくずリスト、バーの項目とアクションリストを一覧表示するコマンドパレット (Ctrl+Shift+P) を備えます。ダークテーマと右から左のレイアウトの切り替えも含まれます。パレットを使うため、登録版または体験版が必要です。

VCL 向けの同じシェルで、上部に小さなリボンがあり、そのコマンドもツリーの項目やアクションリストのアクションと並んで、'Tab > Group' というパス付きでコマンドパレットに表示されます。ダークテーマと右から左のレイアウトの切り替えも含まれます。

登録版のみ .NET 向け NavigationShell

.NET エディションのナビゲーションシェルです。WinForms 向けの NavigationShell、NavigationShellWpf、NavigationShellAvalonia があり、いずれも検索付きツリー、タブ、パンくずリスト、コマンドパレットを備えます。

DockingShell

登録版のみ DockingShell と DockingShellFMX

VCL と FireMonkey 向けの、ドッキングマネージャーの上に構築した IDE スタイルのシェルです。左にナビゲーションバーのツリーを Explorer として、右に Properties、下部に自動的に隠された Output、中央に固定タブと変更済みタブを持つメモのドキュメントを配置します。コマンドパレットにはパネルごとに 1 つの Window コマンドが並び、テーマの切り替えと Reset layout ボタンを備え、レイアウトは終了時に JSON へ保存されて次回の起動時に読み込まれます。

登録版のみ .NET 向け DockingShell

.NET エディションのドッキングシェルです。WinForms 向けの DockingShell、DockingShellWpf、DockingShellAvalonia があり、いずれもドッキング、自動非表示、フローティングの各パネル、ドキュメント領域、保存されたレイアウトを備えます。

TabbedForm と TabbedFormFMX

タイトルバーにタブを置くブラウザースタイルのウィンドウで、VCL 版と FireMonkey 版があり、C++ Builder 版も付属します。新規タブボタン、閉じるボタン、ライト、ダーク、Fluent ライト、Fluent ダークのテーマ選択を備えています。タブをストリップの外へドラッグするとポインターに追従する新しいウィンドウで開き、別のウィンドウのタイトルバーにドロップできます。切り離しには登録版が必要です。.NET 版では、WinForms 用の TabbedForm、TabbedFormWpf、TabbedFormAvalonia として提供します。

SidebarFMX

FireMonkey 向けの TsgcFMXNavigationBar で作ったサイドバーデモで、Delphi 専用です。VCL 版と同じ項目、モード、イベントを備え、Windows、macOS、モバイルの各ターゲットで使えます。

SidebarApp

SidebarApp

非表示タブの付いたページコントロールをサイドバーで操作するデモです。アイコン、バッジ、無効な項目、Collapse ボタン、テーマのコンボボックス、sgcDashboard の KPI ページを備えています。アプリケーションシェルのパターンを最初から最後まで確認できます。

Accordion

登録版のみ Accordion

Sales、Inventory、Admin の 3 つのグループ、AllowMultiExpand の切り替え、アクションリンク、クリックログを備えたデモです。アクションリンクを使うため、Registered 版または体験版が必要です。

コンパイル済みデモ

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

sgcUI_bin.zip をダウンロード →

Getting Started ガイド

Delphi (VCL) 向けの QuickStart デモ 5 つが Demos\Navigation\Delphi\00.QuickStart に入っています。PDF ガイドが、それらを順を追って解説します。最初のナビゲーションバー、コードで組み立てるメニュー、ドキュメントタブ、テーマとスタイル、小さなメールクライアント。

ガイドをダウンロード(PDF、英語) →

sgcNavigation と RAD Studio 13.2 の VCL コントロール、どちらを選ぶか

RAD Studio 13.2 Florence では、TNavigationView と TTabView という 2 つの VCL コントロールが追加されました。アプリケーションが VCL のみで、13.2 以降でビルドするなら、これらは優れた標準の選択肢です。sgcNavigation が価値を発揮するのは、同じナビゲーションを FireMonkey や .NET でも動かす必要がある場合、古い Delphi でビルドする場合、そしてパンくずリスト、コマンドパレット、検索付きツリーが必要な場合です。

TNavigationView は、通常モードとコンパクトモード、画像、複数行テキスト、スクロール、ドラッグによる並べ替えに対応した縦方向の項目リストで、項目をページコントロール、フレーム、TCardPanel にバインドします。TTabView は TTabSet の現代的な派生版で、タブにフォームやその他のコントロールを配置でき、各タブには画像、複数行テキスト、閉じるボタンがあり、タブ追加ボタン、すべてのタブのドロップダウンリスト、スクロールボタンも備えます。どちらもよく設計されており、VCL のプログラミングモデルに沿っているため、13.2 での新しい VCL プロジェクトでは試す価値があります。

sgcNavigation は、すべてのホストの背後に、フレームワーク非依存の 1 つのモデルと 1 つのヘッドレスレンダラーを保っています。バーと、今回のリリースで加わるタブ、パンくずリスト、多階層ツリー、コマンドパレットは、FireMonkey、WinForms、WPF、Avalonia、Delphi 7 から 13 の VCL で同じように動作するため、デスクトップ、モバイル、.NET のフロントエンドを持つ製品でも、どこでも同じようにナビゲートできます。

項目sgcNavigationTNavigationView と TTabView (VCL、RAD Studio 13.2)
フレームワークFireMonkey、WinForms、WPF、Avalonia、VCLVCL
Delphi と C++ Builder のバージョンDelphi 7 から 13 (VCL)、Delphi XE6 から 13 (FireMonkey)、C++ Builder 2007 から 13RAD Studio 13.2 以降
.NET ホスト.NET Framework 4.7.2、.NET 8、9、10 上の WinForms、WPF、Avalonia該当なし (VCL コントロールのため)
Linux でのヘッドレスレンダリングDelphi 10.2 以降の Linux64 で PNG と SVG を出力13.2 のドキュメントには記載がありません
フレームワーク間で共有されるモデルDelphi と .NET で同じ名前を使う、フレームワーク非依存の 1 つのモデル13.2 のドキュメントには記載がありません
パンくずリストバーの選択ノードに追従できるパンくずリストバー13.2 のドキュメントには記載がありません
コマンドパレットコマンド、項目、アクションに対するあいまい検索を備えた、キーボード操作中心のパレット13.2 のドキュメントには記載がありません
ツリー内検索一致した項目の親を表示したままにする検索行を備えた多階層ツリー13.2 のドキュメントには記載がありません

TNavigationView と TTabView の詳細は、Embarcadero の RAD Studio 13 Florence Release 2 のリリースノートによるものです。

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

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

sgcNavigation 単体パッケージ

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

sgcNavigation を購入 → 価格を見る →

sgcUI Standard

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

Standard を見る →

sgcUI Professional

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

Professional を見る →

sgcUI Enterprise

sgcUI 全 17 製品、€699 から。

Enterprise を見る →

無料の Community 版(NuGet の esegece.sgcNavigation.Community)には、ツリーモードと検索を備えたバー、基本的なタブとパンくずリスト、タイトルバーにタブを置くタブ付きフォーム、コマンドソースのインターフェイスが含まれます。登録版では、コマンドパレット、タブの並べ替え、固定タブ、切り離しとタブレイアウトの保存、パンくずリストの編集モード、ドッキングマネージャー、項目のアクションリンクが加わります。

機能Community(無料)登録版
サイドバーモードとアコーディオンモード✓✓
アニメーション付きのアイコンレールへの折りたたみ✓✓
アイコン、グリフ、バッジ✓✓
キーボードナビゲーション✓✓
ライトとダークのテーマ、アクセントカラー✓✓
ヘッドレスでの PNG と SVG 出力✓✓
多階層ツリーモードと検索✓✓
タブ: サイズ調整、閉じるボタン、一覧ボタンと新規タブボタン、スクロール、キーボード✓✓
タブ付きフォーム: テーマ付きタイトルバーにタブを配置✓✓
パンくずリスト: セグメント、シェブロン、オーバーフロー、バーへのバインド✓✓
コマンドソース (IsgcUICommandSource)✓✓
コマンドパレット−✓
ドラッグによるタブの並べ替え、固定タブ、切り離し、タブレイアウトの保存−✓
タブ付きフォームのタブを新しいウィンドウへ切り離し−✓
パンくずリストの編集モード−✓
ドッキングマネージャー−✓
アクションリンク(Delphi)と Command(.NET)−✓

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

sgcNavigation のコンポーネント

コンポーネントターゲット
TsgcFMXNavigationBarDelphi と C++ Builder、FireMonkey(sgcNavigation_FMX)
TsgcWinFormsNavigationBar.NET、WinForms
TsgcWpfNavigationBar.NET、WPF
TsgcAvaloniaNavigationBar.NET、Avalonia
TsgcVCLNavigationBarDelphi と C++ Builder、VCL(sgcNavigation_VCL)
TsgcFMXNavigationTabs, TsgcFMXNavigationBreadcrumb, TsgcFMXCommandPaletteDelphi と C++ Builder、FireMonkey(sgcNavigation_Tabs_FMX, sgcNavigation_Palette_FMX)
TsgcWinFormsNavigationTabs, TsgcWpfNavigationTabs, TsgcAvaloniaNavigationTabs.NET、WinForms、WPF、Avalonia。対応する Breadcrumb クラスと CommandPalette クラスを含みます
TsgcVCLNavigationTabs, TsgcVCLNavigationBreadcrumb, TsgcVCLCommandPaletteDelphi と C++ Builder、VCL(sgcNavigation_Tabs_VCL, sgcNavigation_Palette_VCL)
TsgcVCLNavigationTabbedForm, TsgcFMXNavigationTabbedFormDelphi と C++ Builder、VCL と FireMonkey(sgcNavigation_TabbedForm_VCL、sgcNavigation_TabbedForm_FMX)、Windows ではテーマ付きタイトルバー
TsgcWinFormsNavigationTabbedForm, TsgcWpfNavigationTabbedWindow, TsgcAvaloniaNavigationTabbedWindow.NET、WinForms、WPF、Avalonia
TsgcVCLDockManager, TsgcFMXDockManagerDelphi と C++ Builder、VCL と FireMonkey(sgcNavigation_Dock_VCL, sgcNavigation_Dock_FMX)、登録版
TsgcWinFormsDockManager, TsgcWpfDockManager, TsgcAvaloniaDockManager.NET、WinForms、WPF、Avalonia、登録版
TsgcNavigationItem, TsgcNavigationItems, TsgcNavigationModelフレームワーク非依存のモデル(sgcNavigation_Model)
ターゲットコンポーネントプラットフォーム
Delphi XE6 から 13、FireMonkeyTsgcFMXNavigationBarWindows、macOS、iOS、Android、Linux(FMXLinux)
.NET Framework 4.7.2、.NET 8、9 と 10TsgcWinFormsNavigationBar、WPF と Avalonia のバーWinForms、WPF、Avalonia
Delphi 7 から 13、VCLTsgcVCLNavigationBarWin32 と Win64
C++ Builder 2007 から 13TsgcVCLNavigationBar、TsgcFMXNavigationBar生成された .hpp ヘッダーとスタティックライブラリ
Delphi 10.2 から 13、フレームワーク非依存モデルとヘッドレスの PNG および SVG レンダラーLinux64。たとえばサーバー上でバーを描画できます

よくある質問

アプリケーションが VCL のみであれば、RAD Studio 13.2 の TNavigationView と TTabView は優れた標準の選択肢であり、喜んでお勧めします。同じナビゲーションを macOS、iOS、Android、Linux の FireMonkey や、WinForms、WPF、Avalonia のアプリケーションでも動かす必要がある場合、チームの一部がまだ古い Delphi や C++ Builder でビルドしている場合、あるいはサイドバーの上にパンくずリスト、コマンドパレット、検索付きの多階層ツリーが欲しい場合は、sgcNavigation のほうが適しています。モデルとヘッドレスの PNG と SVG レンダラーは、すべてのホストで共有されます。比較表は選び方をご覧ください。

はい、登録版にあります。TsgcFMXCommandPalette、TsgcVCLCommandPalette、および WinForms、WPF、Avalonia のパレットは Ctrl+Shift+P で開き、ユーザーの入力に合わせてあいまい一致でコマンドを並べ替え、最近使ったコマンドを最初に表示します。パレットは自身のコマンドに加えて、追加したすべてのコマンドソースを一覧表示します。ナビゲーションバーの項目、Delphi ではリボンやツールバーのコマンド、アクションリストのアクション、または IsgcUICommandSource インターフェイスによる独自のソースです。.NET ではコマンドに ICommand を持たせることができます。コマンドパレットをご覧ください。

両方です。Mode プロパティで、同じコントロールのまま nbmSidebar と nbmAccordion を切り替えられ、項目もイベントも変わりません。そのため、プロジェクトの終盤でスタイルを変更したり、ユーザー設定として両方のスタイルを提供したりできます。どちらのモードも、折りたたんだアイコンレールに対応しています。

はい。OnSelectionChange を処理し、SelectedIndex に対応するページを表示します。たとえば、タブを非表示にした TPageControl のタブを切り替えたり、必要に応じてフレームを作成したりできます。SidebarApp デモはまさにこの方法で作られており、sgcDashboard の KPI ページを表示します。

はい。TsgcFMXNavigationBar は Delphi XE6 以降で Windows、macOS、iOS、Android、Linux(FMXLinux)を対象とし、VCL のバーと同じ項目、モード、イベントを備えています。FireMonkey のイメージリストには Delphi XE8 以降が必要です。それより前のバージョンでは、各項目の Glyph を使います。

コマンドパレット、タブのドラッグによる並べ替え、固定タブと切り離し、パンくずリストの編集モード、ドッキングマネージャー、項目のアクションリンクです。アクションリンクは .NET では Command と CommandParameter プロパティに当たります。アクションリンクの代わりに項目の OnClick またはバーの OnItemClick を使ってください。検索付きツリー、タブ、アイコンレール、バッジ、テーマ、ヘッドレス出力を含む他のすべての機能は、Community 版に含まれています。エディションをご覧ください。

いいえ。.NET 版にはデザイナーのバーブもコレクションエディターもないため、項目はシリアル化されず、通常はフォームまたはウィンドウのコンストラクターでコードから追加します。Delphi と C++ Builder では、Items コレクションをデザイン時に標準のコレクションエディターで編集できます。

はい。すべてのサイズは論理ピクセルにモニターのスケールを掛けた値なので、行、アイコン、バッジはどの DPI でも鮮明です。WinForms では幅と高さが VCL と同様に DPI / 96 でスケールされ、WPF と Avalonia ではデバイス非依存単位になります。

はい。sgcNavigationSaveToPNG と sgcNavigationSaveToSVG は、ウィンドウも VCL や FireMonkey も使わず、モデルからバーを描画します。Delphi 10.2 以降では Linux64 でも動作します。ドキュメント、ビジュアル回帰テスト、アプリケーションのメニューを表示する Web ページに使えます。

いいえ。iOS と Android では、TsgcFMXDockManager のパネルはドッキング、分割、タブ化、自動非表示ができますが、フローティングはできません。AllowFloating は False に固定され、ホバーがないため自動非表示パネルはタップで開き、長押しでパネルメニューが開き、ドラッグ中はドロップガイドだけが表示されます。フローティングウィンドウは、VCL、WinForms、WPF、Avalonia のデスクトップアプリケーションと、Windows および macOS 上の FireMonkey で動作します。デスクトップで保存したレイアウトはスマートフォンでも読み込めます。そのフロートのパネルは初期の配置のままになります。フローティングウィンドウをご覧ください。

sgcNavigation のヘルプ

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

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

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