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.

Zuletzt geändert: den 15.03.2026 um 02:27