====== StatusBar ======
Die Statusleiste am unteren Rand der Shell zeigt kontextbezogene Informationen und Schnellzugriffe an. Im Unterschied zu [[menus|Menüs]] und [[toolbar|Toolbar-Buttons]], die statisch im [[..:manifest|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 [[start|Contributions-Übersicht]] oder zur [[..:start|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|Keybindings]] oder zurück zur [[start|Contributions-Übersicht]].