Start · Sprachen · PHP · Referenz · UI\Controls\EditableCombo

UI\Controls\EditableCombo

Klasse

Ein bearbeitbares Kombinationsfeld (Combo-Box), das dem Benutzer erlaubt, sowohl vordefinierte Optionen auszuwählen als auch eigene Texteingaben vorzunehmen.

seit PHP 0.9.9 Kategorie: misc

Signatur

class UI\Controls\EditableCombo extends UI\Control

Beschreibung

UI\Controls\EditableCombo ist ein GUI-Steuerelement aus der PHP-UI-Erweiterung (ui), das eine Kombination aus Auswahlfeld und Texteingabefeld darstellt. Im Gegensatz zu UI\Controls\Combo kann der Benutzer hier nicht nur eine der vordefinierten Optionen wählen, sondern auch einen eigenen Text direkt in das Feld eingeben.

Das Steuerelement eignet sich hervorragend für Situationen, in denen häufig verwendete Werte als Vorschläge angeboten werden sollen, der Benutzer jedoch nicht auf diese beschränkt ist – beispielsweise bei Eingabefeldern für Schriftgrößen, URL-Verlauf oder Filter-Kriterien.

Optionen werden über die Methode append() hinzugefügt. Der aktuell eingegebene oder ausgewählte Wert kann über getValue() abgerufen werden. Über einen onChange-Handler lässt sich auf jede Änderung des Wertes reagieren.

Die Klasse gehört zur experimentellen ui-Erweiterung (PECL) und ist für die Erstellung nativer Desktop-Oberflächen mit PHP gedacht. Sie steht nur zur Verfügung, wenn die ui-Erweiterung installiert und aktiviert ist.

Beispiele

Einfaches EditableCombo mit vordefinierten Optionen erstellen

<?php
use UI\Window;
use UI\Controls\EditableCombo;
use UI\Controls\Box;
use UI\Point;
use UI\Size;

$window = new Window('EditableCombo Beispiel', new Size(300, 100), false);

$box = new Box(Box::Vertical);
$window->add($box);

$combo = new EditableCombo();
$combo->append('Option A');
$combo->append('Option B');
$combo->append('Option C');

// onChange-Handler registrieren
$combo->onChange(function(EditableCombo $self) {
    echo 'Aktueller Wert: ' . $self->getValue() . PHP_EOL;
});

$box->append($combo, true);

$window->show();
UI\run();
Aktueller Wert: Option B

Wert programmatisch setzen und auslesen

<?php
use UI\Window;
use UI\Controls\EditableCombo;
use UI\Controls\Box;
use UI\Size;

$window = new Window('Schriftgröße wählen', new Size(300, 100), false);
$box = new Box(Box::Vertical);
$window->add($box);

$combo = new EditableCombo();
foreach ([8, 10, 12, 14, 16, 18, 24, 36, 48] as $size) {
    $combo->append((string)$size);
}

// Standardwert setzen
$combo->setValue('12');

echo 'Voreingestellter Wert: ' . $combo->getValue() . PHP_EOL;

$box->append($combo, true);
$window->show();
UI\run();
Voreingestellter Wert: 12

// Wichtig · Fallstricke

Experimentelle Erweiterung: Die ui-Erweiterung ist als experimentell eingestuft. API und Verhalten können sich ohne Vorankündigung ändern. Sie ist nicht Teil der PHP-Standardinstallation und muss über PECL installiert werden.

Plattformunterschiede: Das tatsächliche Aussehen des Steuerelements hängt vom Betriebssystem und dem nativen GUI-Toolkit ab (Windows: Win32-API, macOS: Cocoa, Linux: GTK). Das Verhalten bei Benutzereingaben kann je nach Plattform leicht variieren.

Vergleich mit Combo: Wenn Benutzer ausschließlich auf vordefinierte Werte beschränkt werden sollen, sollte stattdessen UI\Controls\Combo verwendet werden.