FireMonkey, .NET & Delphi 7 bis 13 Teil von sgcUI

sgcNavigation, dieselbe Navigationsleiste für FireMonkey, .NET und Delphi 7 bis 13

Gib deiner Anwendung in wenigen Minuten ein modernes Navigationsmenü. Ein Steuerelement ist Seitenleiste oder Akkordeon, klappt mit sanfter Animation zu einer Symbolleiste zusammen, zeigt Badges für ungelesene Einträge und lässt sich komplett per Tastatur bedienen. Helle und dunkle Themes sind bereits integriert, und das Formular mit Registerkarten setzt die Dokument-Registerkarten wie ein Webbrowser in eine Titelleiste im Theme. Ein Modell und ein Headless-Renderer steuern die Leiste unter FireMonkey, WinForms, WPF, Avalonia, in der VCL von Delphi 7 bis 13 und in C++ Builder, sodass jedes Frontend Ihres Produkts gleich navigiert wird.

FireMonkey, WinForms, WPF, Avalonia, VCLDelphi 7 bis 13C++ Builder 2007 bis 13Kostenlose .NET Community EditionEnthalten in sgcUI Standard
SidebarApp-Demo mit einer Seitenleiste aus 8 Einträgen in den Gruppen Workspace und Business, Dashboard ausgewählt und zwei KPI-Karten rechts

Alles, was ein App-Menü braucht

Zwanzig Funktionen, die aus einer Liste von Seiten eine Navigationsshell machen, in der sich Ihre Benutzer sofort zurechtfinden.

Layout und Modi

Ein Steuerelement deckt die beiden Navigationsstile ab, die Geschäftsanwendungen nutzen, und die schmale Symbolleiste dazwischen.

Eine moderne App-Seitenleiste in einer Komponente

Layout und Modi

Eine moderne App-Seitenleiste in einer Komponente

Die meisten Geschäftsanwendungen brauchen am linken Rand des Hauptformulars dasselbe: eine nach Bereichen gruppierte Liste von Seiten, in der die aktuelle Seite klar markiert ist. Platziere eine TsgcVCLNavigationBar auf dem Formular, richte sie links aus und füge die Einträge hinzu. Gruppenkopfzeilen betiteln die darunterliegenden Zeilen in gedämpfter Farbe und werden nie ausgewählt. Die ausgewählte Zeile erhält einen Hintergrund in der Akzentfarbe und einen 3 Pixel breiten Akzentbalken, damit Anwender immer sehen, wo sie sind. Hover- und Gedrückt-Zustände, Hinweise und deaktivierte Zeilen werden für dich gezeichnet, sodass die Leiste schon beim ersten Start fertig wirkt.

  • Mode := nbmSidebar ist der Standardstil
  • IsGroup macht einen Eintrag zur Gruppenkopfzeile
  • ItemHeight und GroupHeight legen die Zeilenhöhen fest
  • Das Mausrad scrollt lange Listen, und ScrollIntoView zeigt jeden beliebigen Eintrag
  • Rechts nach links für Arabisch und Hebräisch: Symbole und Beschriftungen tauschen die Plätze, und Einzug, Chevrons, Badges und die Schaltfläche zum Einklappen sind gespiegelt
Hilfethema lesen
Mit einer Eigenschaft zum Akkordeon wechseln

Layout und Modi

Mit einer Eigenschaft zum Akkordeon wechseln

Einstellungsdialoge und Administrationskonsolen haben oft mehr Bereiche, als auf den Bildschirm passen. Setze Mode auf nbmAccordion, und jede Gruppenkopfzeile wird zu einem Abschnitt, der die Einträge darunter öffnet und schließt, mit einem Pfeil rechts und eingerückten Unterpunkten. Standardmäßig ist immer nur eine Gruppe offen, was ein langes Menü kurz hält. Setze AllowMultiExpand, wenn Anwender mehrere Abschnitte gleichzeitig öffnen sollen. Die Einträge, die Ereignisse und dein Code bleiben genau gleich. Einträge vor der ersten Kopfzeile gehören zu keiner Gruppe und sind immer sichtbar, ideal für einen Eintrag wie Start oder Dashboard über den Abschnitten.

  • Mode := nbmAccordion schaltet die ganze Leiste um
  • Expanded öffnet oder schließt eine Gruppe per Code
  • AllowMultiExpand hält mehrere Gruppen gleichzeitig offen
  • Indent legt die Einrückung der untergeordneten Einträge fest
Hilfethema lesen

Layout und Modi

Animiert zu einer Symbolleiste reduzieren

Breite Seitenleisten nehmen den Platz der Daten weg, wegen derer deine Anwender gekommen sind. Setze Collapsed, und die Leiste klappt in etwa 150 ms von ihrer vollen Breite zu einer schmalen Symbolleiste zusammen. Dort werden nur die Symbole gezeichnet, die Beschriftung wird zum Hinweis, Gruppenkopfzeilen werden zu Trennlinien und Badges zu Punkten, sodass nichts Wichtiges verloren geht. Die Leiste bestimmt ihre Breite selbst, der Inhalt daneben folgt einfach mit alClient. Binde die Eigenschaft Collapsed an eine Hamburger-Schaltfläche, eine Benutzereinstellung oder die Formularbreite, und die Symbolleiste öffnet und schließt sich im Seitenleisten- wie im Akkordeon-Modus auf dieselbe Weise.

  • Collapsed schaltet zwischen den beiden Breiten um
  • ExpandedWidth (220) und CollapsedWidth (56) in logischen Pixeln
  • AnimateCollapse schaltet die Animation ein oder aus
  • OnCollapsedChange meldet, wann sich die Symbolleiste öffnet oder schließt
Hilfethema lesen

Layout und Modi

Seiten über die Auswahl steuern

Eine Navigationsleiste ist nur nützlich, wenn sie ändert, was der Anwender sieht. Klickt oder tippt der Anwender einen aktivierten Eintrag an, wählt die Leiste ihn aus, löst OnItemClick aus und führt dann das OnClick des Eintrags aus. OnSelectionChange ist die zentrale Stelle, um die passende Seite anzuzeigen, zum Beispiel den Reiter eines TPageControl mit ausgeblendeten Reitern, genau so ist die Demo SidebarApp aufgebaut. SelectedIndex liest und setzt die aktuelle Seite per Code. Deaktiviere einen Eintrag, den der Anwender noch nicht erreichen kann, erkläre den Grund in seinem Hinweis oder blende ihn für Rollen aus, die ihn nicht sehen sollen, die Auswahllogik funktioniert weiterhin.

  • SelectedIndex ist die vom Anwender gewählte Seite
  • OnSelectionChange wechselt die Seite oder den Frame
  • OnItemClick an der Leiste und OnClick pro Eintrag
  • Enabled, Hint und Visible pro Eintrag
Hilfethema lesen

Ein mehrstufiger Baum mit Suche, Dokument-Registerkarten, ein Breadcrumb und eine Befehlspalette, alles auf demselben frameworkneutralen Modell wie die Leiste.

NavigationShellFMX-Demo mit einem durchsuchbaren Baum aus Mail, Contacts, Calendar und Settings links, vier Registerkarten mit aktivem Work und einem Breadcrumb Mail, Folders, Work über der Seite

Navigationsshell

Ein mehrstufiger Baum mit Suche

Große Anwendungen wachsen aus einer flachen Liste von Seiten heraus. Setzen Sie Mode auf nbmTree, und die Leiste wird zu einem Baum mit so vielen Ebenen, wie Sie brauchen: Die Einträge bleiben eine flache Sammlung, und das Depth eines Eintrags legt seine Ebene fest, sodass sich der Code, der die Leiste füllt, kaum ändert. Jede Ebene ist eingerückt, und jedes übergeordnete Element lässt sich einklappen. Mit ShowSearch filtert eine Suchzeile über den Einträgen den Baum während der Eingabe, hält die übergeordneten Elemente jedes Treffers geöffnet und hebt die passenden Zeichen hervor. Die unscharfe Suche findet 'Settings' aus 'stg'. Baum-Modus und Suche sind in jeder Edition enthalten.

  • Mode := nbmTree und Depth pro Eintrag
  • ExpandAll, CollapseAll und Expand(aIndex, aRecursive)
  • Filter mit FilterMode nfmContains oder nfmFuzzy
  • ShowSearch zeichnet die Suchzeile, Esc leert sie
  • Rechts und Links klappen auf und zu, * klappt einen ganzen Zweig auf
Hilfethema lesen

Navigationsshell

Registerkarten für die geöffneten Dokumente

Dokumentorientierte Anwendungen zeigen ihre geöffneten Seiten als Registerkarten. TsgcFMXNavigationTabs, TsgcVCLNavigationTabs und die Leisten für WinForms, WPF und Avalonia zeichnen Registerkarten mit Symbol, Beschriftung, Schließen-Schaltfläche und einem Punkt für geänderte Inhalte, dazu eine Schaltfläche für eine neue Registerkarte und eine Liste aller Registerkarten. Wenn die Registerkarten nicht passen, verkleinert TabSizing sie, oder es erscheinen Bildlaufschaltflächen. Das Control einer Registerkarte ist die Seite, die die Leiste anzeigt, solange die Registerkarte aktiv ist. In der Edition Registered zieht der Benutzer Registerkarten außerdem an eine neue Stelle, heftet die an, die bleiben sollen, und zieht eine Registerkarte aus der Leiste, um sie in einem eigenen Fenster zu öffnen, und SaveLayout bewahrt die Anordnung für den nächsten Start.

  • Tabs.AddTab, ActiveIndex und Control pro Registerkarte
  • TabSizing, CloseButtons, ShowNewButton, ShowListButton
  • Strg+Tab, Mittelklick zum Schließen, OnTabClose kann ablehnen
  • Nur Registered Neuordnen per Ziehen, Pinned-Registerkarten, OnTabTearOff, SaveLayout und LoadLayout
Hilfethema lesen Neuordnen, angeheftete Registerkarten und Abtrennen

Navigationsshell

Ein Breadcrumb, das dem Baum folgt

Tiefe Bäume brauchen eine Möglichkeit, zu sehen, wo man ist, und nach oben zu springen. Das Breadcrumb zeigt den Pfad als Reihe von Segmenten, zum Beispiel Mail, Folders, Work. Ein Klick auf ein Segment geht dorthin zurück, und der Chevron hinter einem Segment listet dessen Kinder auf, um woandershin zu gehen. Verknüpfen Sie es mit einer Navigationsleiste, und es folgt dem ausgewählten Eintrag, oder füllen Sie es eigenständig aus einem Path oder aus den Segments. Ist der Pfad zu lang, klappen die vorderen Segmente in eine Überlauf-Schaltfläche. In der Edition Registered macht ein Klick auf den leeren Bereich, F4 oder Strg+L aus dem Breadcrumb ein Eingabefeld mit dem vollständigen Pfad, wie die Adressleiste eines Dateimanagers.

  • NavigationBar verknüpft das Breadcrumb mit einer Leiste
  • Path, PathDelimiter und OnGetChildren eigenständig
  • OnSegmentClick und AutoTruncate
  • Nur Registered Bearbeitungsmodus mit OnPathEdit
Hilfethema lesen

Navigationsshell Nur Registered

Eine Befehlspalette für jeden Befehl

Power-User tippen lieber, als durch Menüs zu suchen. Drücken Sie Strg+Umschalt+P, und die Befehlspalette öffnet sich am oberen Fensterrand: Tippen Sie ein paar Buchstaben, und sie ordnet jeden Befehl nach unscharfer Übereinstimmung, sodass 'tgsb' 'Toggle sidebar' findet, mit hervorgehobenen passenden Zeichen, der Kategorie oder dem Pfad in gedämpfter Farbe und dem Tastenkürzel rechts. Bei leerer Eingabe stehen die zuletzt verwendeten Befehle oben. Die Palette listet ihre eigenen Befehle und jede Befehlsquelle, die Sie hinzufügen: die Einträge einer Navigationsleiste, die Schaltflächen eines Menübands oder einer Symbolleiste (Delphi), die Aktionen einer Aktionsliste oder eine eigene Quelle.

  • Commands.AddCommand mit Kategorie, Schlüsselwörtern und Kürzeltext
  • Sources.AddSource für eine Leiste, ein Menüband, eine Symbolleiste oder eine Aktionsliste
  • SaveRecent und LoadRecent bewahren die Liste der zuletzt verwendeten Befehle
  • ICommand an den Befehlen in .NET

Edition Registered unter FireMonkey, VCL, WinForms, WPF und Avalonia. Die Schnittstelle IsgcUICommandSource ist in jeder Edition enthalten.

Hilfethema lesen Befehlsquellen

Navigationsshell

Ein Formular mit den Registerkarten in der Titelleiste

Browser, Terminals und moderne Editoren setzen ihre Registerkarten in die Fensterüberschrift, damit die Dokumente die volle Bildschirmhöhe bekommen. Das Formular mit Registerkarten tut das Gleiche für Ihre Anwendung. Legen Sie es auf ein Formular und verbinden Sie es mit der Registerkartenleiste: sgcUI entfernt die native Fensterüberschrift und zeichnet eine Titelleiste im Theme mit dem Fenstersymbol, den Registerkarten, der Schaltfläche für eine neue Registerkarte und den Schaltflächen zum Minimieren, Maximieren und Schließen, im sgcUI-Theme der Anwendung, Classic oder Fluent, hell oder dunkel. Das Fenster behält seinen Schatten, seine Größenrahmen und sein Verhalten im maximierten Zustand, und Windows 11 zeigt die Snap-Layouts, wenn der Zeiger auf der Schaltfläche zum Maximieren ruht. Der leere Platz rechts neben der letzten Registerkarte verschiebt das Fenster. In der Edition Registered zieht der Benutzer eine Registerkarte aus der Leiste in ein neues Fenster und legt sie auf der Titelleiste eines anderen Fensters ab, wie in einem Webbrowser.

  • TsgcVCLNavigationTabbedForm und TsgcFMXNavigationTabbedForm in Delphi und C++ Builder, TsgcWinFormsNavigationTabbedForm, TsgcWpfNavigationTabbedWindow und TsgcAvaloniaNavigationTabbedWindow in .NET
  • Tabs verbindet die Registerkartenleiste. In Delphi verschiebt Notebook die Leiste eines Notebooks in die Titelleiste, während die Seiten im Notebook bleiben
  • Ein Doppelklick auf die leere Leiste maximiert das Fenster, ein Rechtsklick zeigt das Systemmenü
  • In WPF und Avalonia richtet die angehängte Eigenschaft Tabs am Fenster alles aus XAML ein
  • Nur Registered Abtrennen: TearOffMode verschiebt eine abgetrennte Registerkarte in das Fenster unter dem Zeiger, und ttmNewForm öffnet sie in einem neuen Fenster aus OnCreateTearOffForm, das dem Zeiger folgt

Das Formular mit Registerkarten ist in jeder Edition enthalten, auch in Community. Das Abtrennen ist in der Edition Registered, wie das Abtrennen der Registerkarten. Der Rahmen im Theme braucht Windows mit Desktopkomposition, und unter FireMonkey wird er nur unter Windows angewendet: Unter macOS, Linux, iOS und Android bleibt die native Titelleiste.

Hilfethema lesen Fensterrahmen Formular mit Registerkarten in .NET

Docking-Manager

Ein Arbeitsbereich im IDE-Stil: Werkzeugfenster an allen Seiten angedockt, automatisch ausgeblendet oder schwebend, in der Mitte ein Dokumentbereich mit Registerkarten und ein als JSON gespeichertes Layout.

Dock-Site mit Explorer und Search als Registerkarten links, einer automatisch ausgeblendeten Toolbox-Leiste, vier Dokument-Registerkarten, Properties rechts und Output unten, mit den Drop-Guides und dem Vorschaurechteck auf der rechten Hälfte der Dokumente, während Output gezogen wird

Docking-Manager Nur Registered

Panels auf die Drop-Guides ziehen

Anwendungen mit vielen Werkzeugfenstern brauchen einen Arbeitsbereich, den der Benutzer selbst anordnen kann. TsgcVCLDockManager, TsgcFMXDockManager, TsgcWinFormsDockManager, TsgcWpfDockManager und TsgcAvaloniaDockManager docken Werkzeugfenster an den vier Seiten des Formulars an, in verschachtelten Splits mit Splittern und in Registerkartengruppen. Der Benutzer zieht eine Beschriftung oder eine Registerkarte, und Drop-Guides zeigen, wo sie landen kann: Ein Kompass auf der Gruppe unter dem Zeiger teilt diese Gruppe an einer Seite oder fügt das Panel als Registerkarte hinzu, die Randführungen docken es an einem Rand der ganzen Site an, und ein Vorschaurechteck in der Akzentfarbe zeigt den Platz, den es einnehmen wird. Esc bricht das Ziehen ab. Die Seite Avalonia Docking zeigt TsgcAvaloniaDockManager in XAML und C#.

  • Panels.Add mit Name, Caption, Placement und DockSize und Ihrem eigenen Steuerelement als Control
  • DockPanel, ClosePanel, ShowPanel und ActivatePanel im Code
  • OnPanelDock kann ein Andocken, ein Schweben oder einen Wechsel des automatischen Ausblendens ablehnen
  • Schaltflächen für Schließen, Pin, Maximieren und Menü auf jeder Beschriftung
Hilfethema lesen Ziehen und Ablegen

Docking-Manager Nur Registered

Panels automatisch in die seitlichen Leisten ausblenden

Werkzeugfenster, die nur hin und wieder gebraucht werden, sollten nicht ständig Platz belegen. Die Pin-Schaltfläche einer Beschriftung blendet ihre Gruppe automatisch aus: Die Panels werden zu Registerkarten auf einer schmalen Leiste am Rand des Formulars, und Überfahren oder Anklicken einer Registerkarte schiebt das Panel über den Inhalt hinaus. Es gleitet zurück, sobald der Benutzer woanders arbeitet, und die Pin-Schaltfläche des Flyouts dockt die Gruppe wieder an, auf der Seite und in der Größe, die sie hatte. Unter iOS und Android öffnet ein Tippen das Flyout.

  • Model.SetAutoHide(aPanel, True) im Code
  • AutoHideDelay legt die Hover-Verzögerung fest, standardmäßig 400 ms
  • CanAutoHide pro Panel, Dokumente blenden sich nie automatisch aus
  • Alt+F7 und die Befehlspalette öffnen das Flyout eines automatisch ausgeblendeten Panels
Hilfethema lesen

Docking-Manager Nur Registered

Schwebende Fenster auf dem Desktop

Ein Panel, das abseits der Guides abgelegt wird, schwebt in einem eigenen Fenster, das der Benutzer an eine andere Stelle oder auf einen anderen Monitor verschiebt. Ein schwebendes Fenster hält ein Layout wie die Dock-Site, sodass weitere Panels nebeneinander oder als Registerkarten hineingedockt werden können, und ein Doppelklick auf seine Beschriftung dockt es wieder an. Schwebende Fenster sind rahmenlose Werkzeugfenster im Besitz des Formulars, die nicht in der Taskleiste erscheinen, mit gezeichneter Beschriftung und einem Rand zum Ändern der Größe, und jedes verwendet die Skalierung seines eigenen Monitors. Sie funktionieren in den Desktop-Anwendungen für VCL, WinForms, WPF und Avalonia sowie in FireMonkey unter Windows und macOS. Unter iOS und Android schweben Panels nicht, und ein Ziehen zeigt nur die Guides.

  • FloatPanel(aPanel, aLeft, aTop) im Code
  • AllowFloating am Docking-Manager und CanFloat pro Panel
  • Placement := dplFloat startet ein Panel schwebend mit FloatWidth mal FloatHeight
  • Ein schwebendes Fenster außerhalb des sichtbaren Arbeitsbereichs wird beim Laden eines Layouts dorthin zurückgesetzt
Hilfethema lesen

Docking-Manager Nur Registered

Ein Dokumentbereich mit Registerkarten in der Mitte

Die Mitte der Dock-Site enthält die Dokumente: eine oder mehrere Dokumentgruppen, jede mit einer Registerleiste oben. Die Leiste funktioniert wie die Navigationsregisterkarten, mit Neuordnen per Ziehen, angehefteten Dokumenten zuerst, Schließen-Schaltflächen, einem Punkt für geänderte Inhalte, Schließen per Mittelklick, Ctrl+Tab und der Liste aller Registerkarten. Ziehen Sie eine Dokument-Registerkarte auf einen seitlichen Arm des Kompasses, um den Bereich in zwei Dokumentgruppen zu teilen, nebeneinander oder übereinander, reißen Sie sie ab, damit sie schwebt, oder doppelklicken Sie darauf, um ihre Gruppe zu maximieren. Die Schaltfläche für eine neue Registerkarte löst OnNewDocument aus, wo Ihr Code das nächste Dokument erstellt.

  • Kind := dpkDocument, mit Pinned und Modified pro Panel
  • DocumentTabSizing, DocumentCloseButtons, DocumentShowNewButton und DocumentShowListButton
  • Ctrl+F6 wechselt zwischen den Dokumenten, OnActiveDocumentChange meldet das aktive
  • OnPanelClose kann ein Dokument geöffnet halten
Hilfethema lesen

Docking-Manager Nur Registered

Das Layout speichern und wiederherstellen

Benutzer erwarten, ihre Panels dort wiederzufinden, wo sie sie gelassen haben. SaveLayout schreibt die ganze Anordnung als kompaktes JSON: die Splits und ihre Größen, die Gruppen und ihre aktiven Panels, die automatisch ausgeblendeten Gruppen jeder Seite, die schwebenden Fenster mit ihren Grenzen, die maximierte Gruppe und die ausgeblendeten Panels. LoadLayout stellt sie beim nächsten Start wieder her. Der Text ist in Delphi und .NET derselbe, sodass eine Layoutdatei beiden dient. Ein Panel, das das Layout nennt, das aber im Formular noch nicht existiert, etwa ein Dokument, das geöffnet war, erreicht OnRestorePanel, wo Ihr Code seinen Inhalt erstellt oder es verwirft.

  • SaveLayout, SaveLayoutToFile und SaveLayoutToStream
  • LoadLayout, LoadLayoutFromFile und LoadLayoutFromStream geben bei einem fremden Text False zurück und ändern nichts
  • OnRestorePanel für Panels, die zur Laufzeit erstellt werden
  • Ein "Window"-Befehl pro Panel macht aus der Befehlspalette einen Fensterumschalter

Edition Registered unter FireMonkey, VCL, WinForms, WPF und Avalonia, mit C++ Builder-Unterstützung. Tastatur, UI Automation, Rechts-nach-links, Themes und hohe DPI inklusive.

Hilfethema lesen

Einträge, die informieren

Zeilen bieten mehr als eine Beschriftung: ein Symbol, eine Zahl und eine Verknüpfung zur Logik, die du schon geschrieben hast.

Badges für ungelesene Einträge

Einträge, die informieren

Badges für ungelesene Einträge

Anwender sollten sehen, dass etwas Aufmerksamkeit braucht, bevor sie die Seite öffnen. Gib einem Eintrag ein Badge, etwa eine Zahl ungelesener Einträge oder das Wort Neu, und die Leiste zeichnet es als Pille in der Akzentfarbe am rechten Zeilenrand, mit schwarzem oder weißem Text, je nachdem, was besser lesbar ist. Setze es per Code, wenn sich der Wert ändert, und die Leiste zeichnet sich neu. In der reduzierten Symbolleiste wird das Badge zu einem Punkt auf dem Symbol. Da das Badge einfacher Text ist, deckt dieselbe Eigenschaft Zahlen, kurze Bezeichnungen und Statuswörter ab, ganz ohne eigenen Zeichencode.

  • Badge ist ein kurzer Text pro Eintrag
  • Ein leeres Badge zeichnet nichts
  • Die Pille nutzt die Akzentfarbe des Themes oder deine AccentColor
  • Kombiniere es mit Hint, um die Zahl zu erklären
Hilfethema lesen
Symbole aus deiner Bildliste oder ein Glyph

Einträge, die informieren

Symbole aus deiner Bildliste oder ein Glyph

Jede Zeile hat einen Symbolplatz. Verweise die Leiste auf die Bildliste, die du ohnehin nutzt, und setze ImageIndex pro Eintrag. Maskierte oder 32-Bit-Bilder werden einmal konvertiert und zwischengespeichert, bis sich die Liste ändert. Noch keine Bildliste? Setze stattdessen ein Glyph, einen Buchstaben oder ein kurzes Symbol in den Farben des Themes, so sehen die Demos aus. Ein deaktivierter Eintrag zeichnet sein Bild mit 40 Prozent Deckkraft, damit der Zustand auf einen Blick klar ist. Beides gemischt ist in Ordnung: Einträge mit Bildindex zeigen das Bild, die anderen fallen auf ihr Glyph zurück, sodass du Symbole nach und nach ergänzen kannst.

  • Images und ImageIndex für Bildlisten
  • Glyph für einen Buchstaben oder ein Symbol ohne Bilder
  • VCL zeichnet die Bilder in ihrer eigenen Größe
  • FireMonkey-Bildlisten ab Delphi XE8
Hilfethema lesen

Einträge, die informieren Nur Registered

Einträge mit deinen TActions verbinden

Anwendungen auf Basis einer TActionList haben ihre Befehle, Beschriftungen und Aktivierungsregeln bereits an einem Ort. Verknüpfe einen Eintrag über die Eigenschaft Action mit einer beliebigen VCL- oder FireMonkey-TAction, und Caption, Enabled, Visible, Hint und ImageIndex folgen der Aktion. Ein Klick führt die Aktion mit der Leiste als ActionComponent aus, und OnUpdate läuft im Leerlauf, sodass ein Eintrag sofort ausgegraut wird, wenn seine Aktion deaktiviert ist. In .NET übernehmen Command und CommandParameter dieselbe Aufgabe. Eine TActionList kann das Menü, die Symbolleiste und die Tastenkürzel des Formulars steuern.

  • Action verknüpft einen Eintrag mit einer beliebigen TBasicAction
  • Ein OnClick des Eintrags wird anstelle der Aktion ausgeführt
  • Kompiliert unter SGC_NAVIGATION_ACTIONS
  • .NET: Command und CommandParameter mit ICommand

Community: Weise stattdessen das OnClick des Eintrags oder das OnItemClick der Leiste zu, statt einer Aktion.

Hilfethema lesen

Tastatur, Themes und Ausgabe

Die Details, durch die sich die Leiste nativ anfühlt und zum Rest deiner Anwendung passt.

Navigation zuerst per Tastatur

Tastatur, Themes und Ausgabe

Power-User wechseln Seiten ohne Maus, und Barrierefreiheitsprüfungen erwarten das. Die Leiste erhält den Fokus mit Tab und bewegt eine fokussierte Zeile über die sichtbaren, aktivierten Einträge: Auf und Ab gehen schrittweise, Pos1 und Ende springen, Enter oder Leertaste aktiviert. Im Akkordeon klappt Links eine Gruppe zu und Rechts klappt sie auf. Das gestrichelte Fokusrechteck erscheint nur, solange die Tastatur benutzt wird, und der Fokus bleibt von der ausgewählten Seite getrennt. Dieselben Tasten funktionieren in der FireMonkey-Leiste über CanFocus, sodass Desktop-Anwender auf jeder Plattform dasselbe Verhalten erhalten.

  • TabStop ist bei der VCL-Leiste standardmäßig aktiviert
  • FocusedIndex des Modells ist die Tastaturzeile
  • SelectedIndex bleibt die gewählte Seite
  • Hinweise zeigen die Beschriftung in der reduzierten Symbolleiste
Hilfethema lesen
Hell, dunkel und deine Akzentfarbe

Tastatur, Themes und Ausgabe

Hell, dunkel und deine Akzentfarbe

Ein Menü, das das Theme der Anwendung ignoriert, wirkt aufgesetzt. Theme legt Oberfläche, Rahmen, Text, Gruppenkopfzeile, Hover und Akzent aus den gemeinsamen sgcUICore-Tokens fest, sodass eine Leiste und ein sgcDashboard mit demselben Theme exakt zusammenpassen. AccentColor ersetzt den Akzent durch deine Markenfarbe für den Auswahlbalken, das Fokusrechteck und die Badges. Eine Leiste in einer Dashboard-Kachel folgt von selbst dem Theme des Dashboards. Wechsle das Theme zur Laufzeit, und die Leiste zeichnet sich sofort neu, bereit für einen Dunkelmodus-Schalter auf deiner Einstellungsseite.

  • Theme: utDefault (Standard, folgt dem Anwendungs-Theme), utLight oder utDark
  • AccentColor als $AARRGGBB-Wert, 0 behält den Akzent des Themes bei
  • Dieselben Tokens wie in jedem sgcUI-Produkt
  • Dashboard-Kacheln geben ihr Theme an die Leiste weiter
Hilfethema lesen
Die Leiste ohne Fenster rendern

Tastatur, Themes und Ausgabe

Die Leiste ohne Fenster rendern

Dokumentation, visuelle Tests und Web-Backends brauchen manchmal ein Bild des Menüs statt des Menüs selbst. Der Renderer in sgcNavigation_Render zeichnet ein TsgcNavigationModel ohne Fenster und ohne VCL oder FireMonkey, sodass ein Konsolenprogramm, ein Dienst oder ein Server dieselbe Leiste als PNG oder SVG erzeugt. Die Unit lässt sich auf jeder Plattform kompilieren, auch unter Linux64, und ein Skalierungsparameter liefert scharfe Bilder für High-DPI-Bildschirme. Übergib deine Bildliste an den Renderer, und das exportierte Bild zeigt dieselben Symbole wie die laufende Anwendung.

  • sgcNavigationSaveToPNG schreibt eine PNG-Datei oder einen Stream
  • sgcNavigationSaveToSVG schreibt dieselbe Leiste als SVG
  • sgcNavigationRender zeichnet auf jede sgcUICore-Canvas
  • Breite und Höhe in logischen Pixeln, mal Skalierung
Hilfethema lesen

sgcNavigation in Aktion erleben

sgcNavigation in den sgcUI-Suite-Demos: vollständige Anwendungen, die offline mit integrierten Simulationsdaten laufen.

Wer mit sgcNavigation baut

Eine moderne Oberfläche für ERP- und Admin-Apps

Du hast Dutzende bestehende Formulare und ein Hauptfenster, das sie noch über eine Menüleiste öffnet. Setze eine Seitenleiste nach links, einen Eintrag pro Bereich, und lass OnSelectionChange die Reiter eines TPageControl mit ausgeblendeten Reitern wechseln. Badges zeigen offene Bestellungen oder ungelesene Nachrichten, und die Symbolleiste gibt den Formularen ihren Platz zurück. Starte SidebarApp, um das Muster mit einer sgcDashboard-Seite in Aktion zu sehen.

  • Seitenleisten-Modus
  • Badges
  • Auf eine Symbolleiste reduzieren
Demo SidebarApp ausführen

Einstellungs- und Administrationskonsolen

Konfigurationsdialoge fassen Dutzende Seiten unter wenigen Überschriften wie Sales, Inventory und Admin zusammen. Das Akkordeon hält jeweils einen Abschnitt offen, oder mit AllowMultiExpand mehrere, und die Aktionsverknüpfungen nutzen die Befehle und Aktivierungsregeln deiner TActionList weiter. Tastaturanwender bewegen sich mit den Pfeiltasten durch die Abschnitte. Die Demo Accordion zeigt drei Gruppen, einen Schalter zum Aufklappen und ein Klickprotokoll.

  • Akkordeon-Modus
  • Aktionsverknüpfungen
  • Tastaturnavigation
Demo Accordion ausführen

Dieselbe Navigation auf jeder Plattform

Eine FireMonkey-Anwendung, die unter Windows, macOS, iOS und Android läuft, sollte nicht auf jeder ein anderes Menü brauchen. TsgcFMXNavigationBar hat dieselben Einträge, Modi und Ereignisse wie die VCL-Leiste, und die .NET-Leisten für WinForms, WPF und Avalonia folgen denselben Namen. Teams, die eine Delphi-Desktop-App und ein .NET-Werkzeug ausliefern, behalten ein einziges Denkmodell. SidebarFMX ist die FireMonkey-Version der Seitenleisten-Demo.

  • FireMonkey-Leiste
  • Themes
  • .NET-Leisten
Demo SidebarFMX ausführen

Eine Navigationsleiste in wenigen Zeilen

Dieselbe API in FireMonkey, C#, Delphi VCL und C++ Builder: eine Akkordeon-Leiste mit Gruppen, einem Badge, einem deaktivierten Eintrag und einer Collapse-Schaltfläche. Die Tabs FireMonkey und C# fügen eine Registerkartenleiste und eine Befehlspalette hinzu.

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;

Ein Fenster im Browser-Stil: TsgcVCLNavigationTabbedForm verschiebt die Registerkartenleiste in eine Titelleiste im Theme.

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

Die sgcNavigation-Demos ausführen

Die Demos NavigationShell und DockingShell werden für FireMonkey, VCL, WinForms, WPF und Avalonia mitgeliefert. Die Seitenleisten-Demo wird für FireMonkey mitgeliefert, und die Demos SidebarApp und Accordion werden in der .NET-Edition als WinForms-, WPF- und Avalonia-Projekte sowie für Delphi VCL und C++ Builder mitgeliefert.

NavigationShellFMX

Nur Registered NavigationShellFMX

Eine vollständige Navigationsshell für FireMonkey, nur für Delphi: ein Baum mit Suchzeile links, eine Registerkarte pro geöffneter Seite, ein Breadcrumb, das dem Baum folgt, und eine Befehlspalette (Strg+Umschalt+P), die die Einträge der Leiste und eine Aktionsliste auflistet. Umschalter für dunkles Theme und Rechts-nach-links sind enthalten. Sie nutzt die Palette und braucht daher die Edition Registered oder die Testversion.

Nur Registered NavigationShell

Dieselbe Shell für die VCL, mit einem kleinen Menüband oben, dessen Befehle ebenfalls in der Befehlspalette erscheinen, mit ihrem Pfad 'Tab > Group', neben den Einträgen des Baums und den Aktionen einer Aktionsliste. Umschalter für dunkles Theme und Rechts-nach-links sind enthalten.

Nur Registered NavigationShell für .NET

Die Navigationsshell in der .NET-Edition: NavigationShell für WinForms, NavigationShellWpf und NavigationShellAvalonia, jeweils mit Baum und Suche, den Registerkarten, dem Breadcrumb und der Befehlspalette.

DockingShell

Nur Registered DockingShell und DockingShellFMX

Eine Shell im IDE-Stil auf Basis des Docking-Managers, für die VCL und für FireMonkey: ein Baum der Navigationsleiste als Explorer links, Properties rechts, Output unten automatisch ausgeblendet und Memo-Dokumente mit angehefteten und geänderten Registerkarten in der Mitte. Die Befehlspalette listet pro Panel einen Window-Befehl auf, ein Theme-Schalter und eine Schaltfläche Reset Layout sind enthalten, und das Layout wird beim Schließen als JSON gespeichert und beim nächsten Start geladen.

Nur Registered DockingShell für .NET

Die Docking-Shell in der .NET-Edition: DockingShell für WinForms, DockingShellWpf und DockingShellAvalonia, jeweils mit angedockten, automatisch ausgeblendeten und schwebenden Panels, dem Dokumentbereich und dem gespeicherten Layout.

TabbedForm und TabbedFormFMX

Ein Fenster im Browser-Stil mit den Registerkarten in der Titelleiste, für die VCL und für FireMonkey, mit C++-Builder-Pendants: eine Schaltfläche für neue Registerkarten, Schließen-Schaltflächen und eine Themenauswahl mit Hell, Dunkel, Fluent hell und Fluent dunkel. Ziehen Sie eine Registerkarte aus der Leiste, und sie öffnet sich in einem neuen Fenster, das dem Zeiger folgt. Legen Sie sie dann auf der Titelleiste eines anderen Fensters ab. Das Abtrennen braucht die Edition Registered. In der .NET-Edition gehört sie als TabbedForm für WinForms, TabbedFormWpf und TabbedFormAvalonia dazu.

SidebarFMX

Die Seitenleisten-Demo, gebaut mit TsgcFMXNavigationBar für FireMonkey, nur für Delphi. Dieselben Einträge, Modi und Ereignisse wie in der VCL-Version, bereit für Windows, macOS und mobile Ziele.

SidebarApp

SidebarApp

Eine Seitenleiste, die ein Page Control mit ausgeblendeten Reitern steuert, mit Symbolen, einem Badge, einem deaktivierten Eintrag, einer Collapse-Schaltfläche, einer Theme-Auswahl und einer sgcDashboard-KPI-Seite. Beweist das Muster einer Anwendungsoberfläche von Anfang bis Ende.

Accordion

Nur Registered Accordion

Drei Gruppen, Sales, Inventory und Admin, ein AllowMultiExpand-Schalter, Aktionsverknüpfungen und ein Klickprotokoll. Sie nutzt Aktionsverknüpfungen und braucht daher die Edition Registered oder die Testversion.

Kompilierte Demos

Sofort lauffähige Programme jedes sgcUI-Produkts, nichts zu installieren.

sgcUI_bin.zip herunterladen →

Getting-Started-Leitfaden

Fünf QuickStart-Demos für Delphi (VCL) liegen in Demos\Navigation\Delphi\00.QuickStart. Der PDF-Leitfaden (auf Englisch) führt Schritt für Schritt durch sie: eine erste Navigationsleiste, ein im Code erstelltes Menü, Dokument-Registerkarten, Themes und Stile und ein kleiner Mail-Client.

Leitfaden herunterladen (PDF, Englisch) →

sgcNavigation oder die VCL-Steuerelemente von RAD Studio 13.2?

RAD Studio 13.2 Florence hat zwei VCL-Steuerelemente hinzugefügt, TNavigationView und TTabView. Wenn Ihre Anwendung nur VCL nutzt und Sie mit 13.2 oder neuer kompilieren, sind sie eine gute integrierte Wahl. sgcNavigation bringt Mehrwert, wenn dieselbe Navigation unter FireMonkey und .NET laufen muss, wenn Sie mit älteren Delphi-Versionen kompilieren und wenn Sie ein Breadcrumb, eine Befehlspalette oder einen durchsuchbaren Baum brauchen.

TNavigationView ist eine vertikale Liste von Einträgen mit normalem und kompaktem Modus, Bildern, mehrzeiligem Text, Bildlauf und Neuordnen per Ziehen, und es verknüpft seine Einträge mit einem Mehrseiten-Steuerelement, einem Frame oder einem TCardPanel. TTabView ist eine moderne Variante von TTabSet, deren Registerkarten Formulare oder andere Steuerelemente aufnehmen, mit Bild, mehrzeiligem Text und Schließen-Schaltfläche an jeder Registerkarte, einer Schaltfläche zum Hinzufügen einer Registerkarte, einer Dropdown-Liste aller Registerkarten und Bildlaufschaltflächen. Beide sind gut gestaltet und folgen dem VCL-Programmiermodell, daher lohnt sich für ein neues VCL-Projekt unter 13.2 ein Blick darauf.

sgcNavigation hält hinter jedem Host ein frameworkneutrales Modell und einen Headless-Renderer. Die Leiste und die Registerkarten, das Breadcrumb, der mehrstufige Baum und die Befehlspalette, die in dieser Version dazukommen, verhalten sich unter FireMonkey, WinForms, WPF, Avalonia und in der VCL von Delphi 7 bis 13 gleich, sodass ein Produkt mit Desktop-, Mobil- und .NET-Frontend überall gleich navigiert wird.

ThemasgcNavigationTNavigationView und TTabView (VCL, RAD Studio 13.2)
FrameworksFireMonkey, WinForms, WPF, Avalonia und VCLVCL
Delphi- und C++-Builder-VersionenDelphi 7 bis 13 (VCL), Delphi XE6 bis 13 (FireMonkey), C++ Builder 2007 bis 13RAD Studio 13.2 und neuer
.NET-HostsWinForms, WPF und Avalonia unter .NET Framework 4.7.2, .NET 8, 9 und 10Nicht zutreffend, es sind VCL-Steuerelemente
Headless-Rendering unter LinuxPNG- und SVG-Ausgabe unter Linux64 ab Delphi 10.2In der Dokumentation zu 13.2 nicht beschrieben
Gemeinsames Modell über Frameworks hinwegEin frameworkneutrales Modell, mit denselben Namen in Delphi und .NETIn der Dokumentation zu 13.2 nicht beschrieben
BreadcrumbBreadcrumb-Leiste, die dem ausgewählten Knoten der Leiste folgen kannIn der Dokumentation zu 13.2 nicht beschrieben
BefehlspaletteTastaturpalette mit unscharfer Suche über Befehle, Einträge und AktionenIn der Dokumentation zu 13.2 nicht beschrieben
BaumsucheMehrstufiger Baum mit einer Suchzeile, die die übergeordneten Elemente jedes Treffers sichtbar hältIn der Dokumentation zu 13.2 nicht beschrieben

Die Angaben zu TNavigationView und TTabView stammen aus den RAD Studio 13 Florence Release 2 Notes von Embarcadero.

Wo sgcNavigation enthalten ist

sgcNavigation ist in jeder sgcUI-Edition enthalten, ab Standard, und wird auch einzeln verkauft. sgcNavigation ist außerdem im All-Access-Paket enthalten.

sgcNavigation Einzelpaket

€149 / Entwickler, voller Quellcode, 1 Jahr Updates.

sgcNavigation kaufen → Preise ansehen →

sgcUI Standard

sgcNavigation, sgcGrid, sgcToolbar und sgcEditors, ab €380.

Standard ansehen →

sgcUI Professional

Standard plus sgcCharts, sgcDashboard und sgcGauges, ab €529.

Professional ansehen →

sgcUI Enterprise

Alle 17 sgcUI-Produkte, ab €699.

Enterprise ansehen →

Die kostenlose Community Edition (esegece.sgcNavigation.Community auf NuGet) hat die Leiste mit Baum-Modus und Suche, die einfachen Registerkarten und das einfache Breadcrumb, das Formular mit Registerkarten in der Titelleiste sowie die Schnittstelle für Befehlsquellen. Die Edition Registered ergänzt die Befehlspalette, das Neuordnen von Registerkarten, angeheftete Registerkarten, das Abtrennen und das gespeicherte Registerkarten-Layout, den Bearbeitungsmodus des Breadcrumbs, den Docking-Manager und die Aktionsverknüpfungen der Einträge.

FunktionCommunity (kostenlos)Registered
Seitenleisten- und Akkordeon-Modus✓✓
Animierte Reduzierung auf eine Symbolleiste✓✓
Symbole, Glyphs und Badges✓✓
Tastaturnavigation✓✓
Helle und dunkle Themes, Akzentfarbe✓✓
Headless-Ausgabe als PNG und SVG✓✓
Mehrstufiger Baum-Modus und Suche✓✓
Registerkarten: Größenanpassung, Schließen-Schaltflächen, Listen- und Neu-Schaltflächen, Bildlauf, Tastatur✓✓
Formular mit Registerkarten: die Registerkarten in einer Titelleiste im Theme✓✓
Breadcrumb: Segmente, Chevrons, Überlauf, Verknüpfung mit einer Leiste✓✓
Befehlsquellen (IsgcUICommandSource)✓✓
Befehlspalette−✓
Registerkarten per Ziehen neu ordnen, angeheftete Registerkarten, Abtrennen, gespeichertes Registerkarten-Layout−✓
Abtrennen des Formulars mit Registerkarten in ein neues Fenster−✓
Bearbeitungsmodus des Breadcrumbs−✓
Docking-Manager−✓
Aktionsverknüpfungen (Delphi) und Command (.NET)−✓

Unterstützte Frameworks und Plattformen

Komponenten in sgcNavigation

KomponenteZiel
TsgcFMXNavigationBarDelphi und C++ Builder, FireMonkey (sgcNavigation_FMX)
TsgcWinFormsNavigationBar.NET, WinForms
TsgcWpfNavigationBar.NET, WPF
TsgcAvaloniaNavigationBar.NET, Avalonia
TsgcVCLNavigationBarDelphi und C++ Builder, VCL (sgcNavigation_VCL)
TsgcFMXNavigationTabs, TsgcFMXNavigationBreadcrumb, TsgcFMXCommandPaletteDelphi und C++ Builder, FireMonkey (sgcNavigation_Tabs_FMX, sgcNavigation_Palette_FMX)
TsgcWinFormsNavigationTabs, TsgcWpfNavigationTabs, TsgcAvaloniaNavigationTabs.NET, WinForms, WPF und Avalonia, mit den passenden Klassen für Breadcrumb und CommandPalette
TsgcVCLNavigationTabs, TsgcVCLNavigationBreadcrumb, TsgcVCLCommandPaletteDelphi und C++ Builder, VCL (sgcNavigation_Tabs_VCL, sgcNavigation_Palette_VCL)
TsgcVCLNavigationTabbedForm, TsgcFMXNavigationTabbedFormDelphi und C++ Builder, VCL und FireMonkey (sgcNavigation_TabbedForm_VCL, sgcNavigation_TabbedForm_FMX), die Titelleiste im Theme unter Windows
TsgcWinFormsNavigationTabbedForm, TsgcWpfNavigationTabbedWindow, TsgcAvaloniaNavigationTabbedWindow.NET, WinForms, WPF und Avalonia
TsgcVCLDockManager, TsgcFMXDockManagerDelphi und C++ Builder, VCL und FireMonkey (sgcNavigation_Dock_VCL, sgcNavigation_Dock_FMX), Edition Registered
TsgcWinFormsDockManager, TsgcWpfDockManager, TsgcAvaloniaDockManager.NET, WinForms, WPF und Avalonia, Edition Registered
TsgcNavigationItem, TsgcNavigationItems, TsgcNavigationModelFramework-neutrales Modell (sgcNavigation_Model)
ZielKomponentePlattformen
Delphi XE6 bis 13, FireMonkeyTsgcFMXNavigationBarWindows, macOS, iOS, Android und Linux (FMXLinux)
.NET Framework 4.7.2, .NET 8, 9 und 10TsgcWinFormsNavigationBar, WPF- und Avalonia-LeistenWinForms, WPF und Avalonia
Delphi 7 bis 13, VCLTsgcVCLNavigationBarWin32 und Win64
C++ Builder 2007 bis 13TsgcVCLNavigationBar, TsgcFMXNavigationBarGenerierte .hpp-Header und statische Bibliotheken
Delphi 10.2 bis 13, Framework-neutralModell und Headless-Renderer für PNG und SVGLinux64, zum Beispiel um eine Leiste auf einem Server zu rendern

Häufig gestellte Fragen

Wenn Ihre Anwendung nur VCL nutzt, sind TNavigationView und TTabView in RAD Studio 13.2 eine gute integrierte Wahl, und wir empfehlen sie gern. sgcNavigation passt besser, wenn dieselbe Navigation auch in FireMonkey unter macOS, iOS, Android oder Linux oder in einer WinForms-, WPF- oder Avalonia-Anwendung laufen muss, wenn ein Teil Ihres Teams noch mit einem älteren Delphi oder C++ Builder kompiliert oder wenn Sie ein Breadcrumb, eine Befehlspalette oder einen mehrstufigen Baum mit Suche zusätzlich zur Seitenleiste wollen. Das Modell und der Headless-Renderer für PNG und SVG werden von allen Hosts geteilt. Eine Gegenüberstellung finden Sie unter Auswahl.

Ja, in der Edition Registered. TsgcFMXCommandPalette, TsgcVCLCommandPalette und die Paletten für WinForms, WPF und Avalonia öffnen sich mit Strg+Umschalt+P, ordnen die Befehle während der Eingabe nach unscharfer Übereinstimmung und zeigen die zuletzt verwendeten Befehle zuerst. Neben ihren eigenen Befehlen listet die Palette jede Befehlsquelle, die Sie hinzufügen: die Einträge einer Navigationsleiste, die Befehle eines Menübands oder einer Symbolleiste in Delphi, die Aktionen einer Aktionsliste oder eine eigene Quelle über die Schnittstelle IsgcUICommandSource. In .NET kann ein Befehl ein ICommand tragen. Siehe die Befehlspalette.

Beides. Die Eigenschaft Mode schaltet am selben Steuerelement zwischen nbmSidebar und nbmAccordion um, mit denselben Einträgen und Ereignissen. So kannst du dich spät im Projekt umentscheiden oder beide Stile als Benutzereinstellung anbieten. Jeder Modus lässt sich außerdem auf die reduzierte Symbolleiste zusammenklappen.

Ja. Behandle OnSelectionChange und zeige die zu SelectedIndex passende Seite, zum Beispiel den Reiter eines TPageControl mit ausgeblendeten Reitern, oder erzeuge einen Frame bei Bedarf. Die Demo SidebarApp ist genau so aufgebaut und enthält eine sgcDashboard-KPI-Seite.

Ja. TsgcFMXNavigationBar unterstützt ab Delphi XE6 Windows, macOS, iOS, Android und Linux (FMXLinux), mit denselben Einträgen, Modi und Ereignissen wie die VCL-Leiste. FireMonkey-Bildlisten setzen Delphi XE8 oder neuer voraus, ältere Versionen nutzen das Glyph jedes Eintrags.

Die Befehlspalette, das Neuordnen von Registerkarten per Ziehen, angeheftete Registerkarten und das Abtrennen, der Bearbeitungsmodus des Breadcrumbs, der Docking-Manager und die Aktionsverknüpfungen der Einträge, in .NET sind das die Eigenschaften Command und CommandParameter. Nutze stattdessen das OnClick des Eintrags oder das OnItemClick der Leiste statt der Aktionsverknüpfungen. Jede andere Funktion, einschließlich des Baums mit Suche, der Registerkarten, der Symbolleiste, Badges, Themes und Headless-Ausgabe, ist in Community enthalten. Siehe Editionen.

Nein. Der .NET-Port hat keine Designer-Verben und keinen Collection-Editor, Einträge werden daher nicht serialisiert und du fügst sie im Code hinzu, meist im Konstruktor des Formulars oder Fensters. In Delphi und C++ Builder wird die Items-Collection zur Entwurfszeit mit dem Standard-Collection-Editor bearbeitet.

Ja. Alle Größen sind logische Pixel multipliziert mit der Skalierung des Monitors, sodass Zeilen, Symbole und Badges bei jeder DPI scharf sind. In WinForms skalieren Breiten und Höhen mit DPI / 96 wie in VCL, in WPF und Avalonia sind es geräteunabhängige Einheiten.

Ja. sgcNavigationSaveToPNG und sgcNavigationSaveToSVG rendern eine Leiste aus ihrem Modell ohne Fenster und ohne VCL oder FireMonkey, auch unter Linux64 ab Delphi 10.2. Nutze das für Dokumentation, visuelle Regressionstests oder eine Webseite, die das Menü deiner Anwendung zeigt.

Nein. Unter iOS und Android docken die Panels von TsgcFMXDockManager an, teilen sich, bilden Registerkarten und blenden sich automatisch aus, aber sie schweben nicht: AllowFloating wird auf False erzwungen, ein Tippen öffnet ein automatisch ausgeblendetes Panel, weil es kein Hover gibt, ein langer Druck öffnet das Panelmenü, und ein Ziehen zeigt nur die Drop-Guides. Schwebende Fenster funktionieren in den Desktop-Anwendungen für VCL, WinForms, WPF und Avalonia sowie in FireMonkey unter Windows und macOS. Ein auf dem Desktop gespeichertes Layout lässt sich trotzdem auf einem Telefon laden: Die Panels seiner schwebenden Fenster behalten ihre ursprüngliche Platzierung. Siehe Schwebende Fenster.

sgcNavigation Hilfe

3,000+Entwickler
20+Jahre
761+Komponenten
30+API-Integrationen
5Plattformen
30 Tage Geld-zurück-GarantieNicht zufrieden? Fordere innerhalb von 30 Tagen nach dem Kauf eine vollständige Rückerstattung an. Rückerstattungsrichtlinie ansehen

sgcNavigation heute testen

Die sgcUI-Testversion enthält sgcNavigation und jedes andere sgcUI-Produkt.