====== 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]].