Inhaltsverzeichnis
StatusBar
Die Statusleiste am unteren Rand der Shell zeigt kontextbezogene Informationen und Schnellzugriffe an. Im Unterschied zu Menüs und Toolbar-Buttons, die statisch im Manifest deklariert werden, werden StatusBar-Items ausschließlich programmatisch erzeugt. Das liegt daran, dass StatusBar-Inhalte typischerweise von Laufzeitdaten abhängen — Zeilennummern, Verbindungsstatus, Build-Ergebnisse —, die erst zur Laufzeit bekannt sind.
Zurück zur Contributions-Übersicht oder zur Hauptübersicht.
Erzeugung
Ein StatusBar-Item wird über IStatusBarService.CreateItem erzeugt:
procedure TMyPlugin.Activate(const AContext: IExtensionContext); var Item: IStatusBarItem; begin Item := FHost.StatusBar.CreateItem( 'assets.connection-status', // Eindeutige Id 'Verbunden', // Anfangstext sbaLeft, // Ausrichtung: links 100 // Priorität ); FConnectionItem := Item; Item.Show; end;
| Parameter | Beschreibung |
AId | Eindeutiger Bezeichner. Konvention: addin-name.zweck. |
AText | Initialer Anzeigetext. Kann jederzeit über SetText aktualisiert werden. |
AAlignment | sbaLeft (linksbündig) oder sbaRight (rechtsbündig). |
APriority | Numerische Priorität. Bei sbaLeft stehen niedrigere Werte weiter links, bei sbaRight weiter rechts. |
Aktualisierung
Das zurückgegebene IStatusBarItem bleibt über die Lebensdauer des Add-ins veränderbar:
// Text ändern FConnectionItem.SetText('Getrennt'); // Tooltip setzen FConnectionItem.SetTooltip('Klicken, um erneut zu verbinden'); // Command zuordnen — beim Klick auf das Item wird dieser Command ausgelöst FConnectionItem.SetCommand('assets.reconnect'); // Ausblenden FConnectionItem.Hide; // Wieder einblenden FConnectionItem.Show; // Entfernen FConnectionItem.Dispose;
Der SetCommand-Aufruf macht das StatusBar-Item interaktiv. Ohne zugeordneten Command ist es nur ein passiver Informationstext. Mit Command wird es zu einem klickbaren Element, das sich wie ein Button verhält.
Merge-Verhalten
Wenn mehrere Add-ins StatusBar-Items registrieren, ordnet der Host sie nach Ausrichtung und Priorität an:
- Links (
sbaLeft): Items werden von links nach rechts sortiert, niedrigste Priorität zuerst. - Rechts (
sbaRight): Items werden von rechts nach links sortiert, niedrigste Priorität zuerst.
Items desselben Add-ins werden in der Reihenfolge ihrer Erzeugung angeordnet, sofern sie dieselbe Priorität haben. Items verschiedener Add-ins mit gleicher Priorität werden in der Reihenfolge ihrer Add-in-Aktivierung angeordnet.
Beispiel: Statusanzeige mit Zustandswechsel
type TConnectionMonitor = class private FItem: IStatusBarItem; FHost: IHost; public constructor Create(const AHost: IHost; const AContext: IExtensionContext); procedure OnConnected; procedure OnDisconnected; end; constructor TConnectionMonitor.Create(const AHost: IHost; const AContext: IExtensionContext); begin FHost := AHost; FItem := AHost.StatusBar.CreateItem( 'assets.connection', 'Verbinde...', sbaRight, 50); FItem.SetTooltip('Verbindungsstatus zum Asset-Server'); FItem.SetCommand('assets.toggle-connection'); FItem.Show; end; procedure TConnectionMonitor.OnConnected; begin FItem.SetText('Asset-Server: Verbunden'); FItem.SetTooltip('Klicken zum Trennen'); end; procedure TConnectionMonitor.OnDisconnected; begin FItem.SetText('Asset-Server: Getrennt'); FItem.SetTooltip('Klicken zum Verbinden'); end;
Dieses Muster zeigt, wie ein StatusBar-Item als dauerhafter Indikator für einen Verbindungszustand dient. Der Text und Tooltip werden dynamisch aktualisiert, und ein Klick löst einen Command aus, der die Verbindung umschaltet.
Weiter zu den Keybindings oder zurück zur Contributions-Übersicht.