Signatur
Beschreibung
UI\Controls\Tab ist ein Container-Control der PHP-UI-Erweiterung (php-ui / libui), das eine klassische Registerkarten-Oberfläche bereitstellt. Jede Seite (Tab) kann beliebige andere Controls enthalten und trägt einen sichtbaren Titel, über den der Benutzer zur jeweiligen Seite wechseln kann.
Tabs werden typischerweise eingesetzt, um zusammengehörige, aber thematisch getrennte Inhalte übersichtlich zu gliedern – etwa Einstellungsseiten, Formularbereiche oder verschiedene Ansichten innerhalb einer Desktop-Anwendung. Die Klasse erbt von UI\Control und kann wie jedes andere Control in ein Fenster oder einen weiteren Container eingefügt werden.
Neue Seiten werden mit der Methode append() hinzugefügt. Optional kann ein Rand (Margin) für jede Seite aktiviert werden. Die aktive Seite lässt sich per Index lesen und setzen. Die Anzahl der vorhandenen Seiten gibt pages() zurück.
- append(string $name, UI\Control $control) – Fügt eine neue Seite mit Titel und Control hinzu.
- setMargin(int $page, bool $margin) – Aktiviert oder deaktiviert den Rand einer Seite.
- hasMargin(int $page) – Prüft, ob eine Seite einen Rand hat.
- delete(int $page) – Entfernt eine Seite anhand ihres Index.
- pages() – Gibt die Anzahl der Seiten zurück.
Beispiele
Einfaches Tab-Control mit zwei Seiten
<?php
use UI\Window;
use UI\Controls\Tab;
use UI\Controls\Box;
use UI\Controls\Label;
use UI\Point;
use UI\Size;
$window = new Window('Tab-Demo', new Size(400, 300), false);
$tab = new Tab();
// Erste Seite: Allgemein
$boxAllgemein = new Box(Box::Vertical);
$boxAllgemein->append(new Label('Allgemeine Einstellungen'));
$tab->append('Allgemein', $boxAllgemein);
$tab->setMargin(0, true);
// Zweite Seite: Erweitert
$boxErweitert = new Box(Box::Vertical);
$boxErweitert->append(new Label('Erweiterte Einstellungen'));
$tab->append('Erweitert', $boxErweitert);
$tab->setMargin(1, true);
$window->add($tab);
$window->show();
UI\run();
Seiten zählen und eine Seite entfernen
<?php
use UI\Controls\Tab;
use UI\Controls\Label;
$tab = new Tab();
$tab->append('Seite 1', new Label('Inhalt 1'));
$tab->append('Seite 2', new Label('Inhalt 2'));
$tab->append('Seite 3', new Label('Inhalt 3'));
echo 'Anzahl Seiten: ' . $tab->pages() . PHP_EOL; // 3
// Zweite Seite (Index 1) entfernen
$tab->delete(1);
echo 'Anzahl Seiten nach delete: ' . $tab->pages() . PHP_EOL; // 2
// Wichtig · Fallstricke
Verfügbarkeit: UI\Controls\Tab ist Teil der php-ui-Erweiterung und steht nicht in einer Standard-PHP-Installation zur Verfügung. Die Erweiterung muss separat installiert werden (PECL: ui).
Die Seitenindizes beginnen bei 0. Nach dem Entfernen einer Seite mit delete() verschieben sich alle nachfolgenden Indizes entsprechend. Das Einfügen von Controls in einen Tab nach dem Anhängen ist nicht vorgesehen – jede Seite muss bei append() ihr Control mitbringen.