Drehfeld (Steuerelement)

Ein Steuerelement einer grafischen Benutzeroberfläche, mit dem ein numerischer Wert inkrementiert oder dekrementiert werden kann.

Ein Drehfeld[1][2], auch Auf-Ab-Steuerelement[2], Up-Down Control[3], Spinner[4], Stepper[5][6] oder Schaltfläche für die schrittweise Weiterschaltung[7] genannt, ist ein Steuerelement einer grafischen Benutzeroberfläche, mit dem ein (meistens numerischer) Wert inkrementiert oder dekrementiert werden kann.

Ein Drehfeld zur Festlegung der Tabulatorbreite in Gedit

Erscheinungsbild Bearbeiten

Ein Drehfeld besteht aus zwei kleinen Schaltflächen mit Pfeilen (oder Plus- und Minus-Zeichen), die zur Inkrementierung und Dekrementierung eines Wertes dienen, für den eine Ordnungsrelation definiert ist.[3] Optisch ähnelt es einer Bildlaufleiste ohne den verschiebbaren Balken und kann entweder horizontal oder vertikal dargestellt werden.[8] Die beiden Schaltflächen können auch mit den Pfeiltasten einer herkömmlichen Tastatur bedient werden.

Da dieses Steuerelement selbst keine Möglichkeit besitzt, den gerade ausgewählten Wert für den Benutzer sichtbar darzustellen, wird es in der Regel mit einem anderen Steuerelement kombiniert, das in der Lage ist, den aktuellen Wert lesbar darzustellen. Das mit dem Drehfeld verbundene Steuerelement wird von Microsoft lax als „Buddy“ bezeichnet.[3] In den meisten Fällen handelt es sich bei dem verbundenen Steuerelement um ein gewöhnliches Textfeld.

Je nach Implementierung können sich die beiden Schaltflächen innerhalb oder außerhalb des Textfeldrahmens befinden.

Alternativen Bearbeiten

Schieberegler Bearbeiten

 
Verbund aus Kombinationsfeld und Schieberegler.

Eine häufige Alternative zu Drehfeldern, stellen Schieberegler dar. Diese nehmen allerdings relativ viel Platz ein und erlauben dem Benutzer auch nicht, Werte direkt per Tastatur einzugeben. Um diese beiden Probleme zu lösen, bieten einige Frameworks einen Verbund aus Kombinationsfeld und Schieberegler an. Derartige Steuerelemente nehmen deutlich weniger Platz ein und erlauben dem Benutzer, auch Werte direkt per Tastatur einzugeben.

Bei Touch-Bildschirmen können Schieberegler mit den Fingern in der Regel deutlich einfacher bedient werden als die kleinen Inkrement- und Dekrement-Schaltflächen von Drehfeldern.

Combobox Bearbeiten

Bei einer überschaubaren Anzahl von Werten, können auch Kombinationsfelder (Combobox) genutzt werden.

Cycle Button Bearbeiten

 
Cycle Button

Cycle Buttons stellen eine sehr seltene Variante eines Drehfeldes dar. Ein Cycle Button verhält sich identisch zur Schaltfläche zur Inkrementierung des Wertes. Es fehlt aber die Schaltfläche zur Dekrementierung. Mit jedem Klick auf diese Schaltfläche, wird der aktuelle Wert erhöht. Ist das Ende der Liste erreicht, fängt das Steuerelement wieder am Anfang der Liste an.[9]

Implementierungen Bearbeiten

Microsoft Windows (Systemkomponente) Bearbeiten

Unter Microsoft Windows werden native Drehfelder unter dem Klassennamen „msctls_updown32“ bereitgestellt.[10]

Microsoft .NET Bearbeiten

Windows Forms Bearbeiten

Unter Windows Forms werden alleinstehende Drehfelder nicht öffentlich bereitgestellt, obwohl sie intern über die Klasse System.Windows.Forms.UpDownBase.UpDownButtons implementiert sind. Öffentlich zur Verfügung stehen nur Kombinationen aus einem Textfeld und einem Drehfeld. Die Basis bildet die abstrakte Klasse System.Windows.Forms.UpDownBase, von der sich die Klassen System.Windows.Forms.NumericUpDown (für numerische Werte) und System.Windows.Forms.DomainUpDown (für allgemeine Werte) ableiten.

Das folgende C# Beispiel zeigt ein Formular, dessen Deckkraft sich (im Bereich von 20 bis 100 Prozent) mit einem Drehfeld verändern lässt.

using System;
using System.Drawing;
using System.Windows.Forms;

internal class MainForm : Form
{
  private NumericUpDown udOpacity;

  //Formular initialisieren
  public MainForm()
  {
    udOpacity = new NumericUpDown();

    SuspendLayout();

    udOpacity.SetBounds(10, 10, 580, 90);
    udOpacity.Minimum = 20; //Wertebereich Minimum: 20%
    udOpacity.Maximum = 100; //Wertebereich Maximum: 100%
    udOpacity.Value = 100; //Aktueller Wert: 100% Deckkraft
    udOpacity.ValueChanged += new EventHandler(SyncOpacity);

    AutoScaleDimensions = new SizeF(12F, 25F);
    AutoScaleMode = AutoScaleMode.Font;
    ClientSize = new Size(600, 60);
    Controls.Add(udOpacity);
    FormBorderStyle = FormBorderStyle.FixedSingle;
    MaximizeBox = false;
    Text = "Deckkraft verändern...";

    ResumeLayout(false);
  }

  //Einstiegspunkt des Programms
  private static void Main()
  {
    Application.Run(new MainForm());
  }

  //Wert des Drehfeldes mit Deckkraft des Formulars synchronisieren
  private void SyncOpacity(object sender, EventArgs e)
  {
    //Aktueller Wert des Drehfeldes entspricht der Deckkraft des Formulars
    Opacity = (float)udOpacity.Value / 100F;
  }
}

Windows Presentation Foundation (WPF) Bearbeiten

Unter WPF existiert standardmäßig keine Implementierung dieses Steuerelements. Allerdings werden von diversen Drittanbietern entsprechende Komponenten angeboten.

Microsoft Xamarin Bearbeiten

Für Microsoft Xamarin existiert die Komponente Xamarin.Forms.Stepper.[6]

Microsoft Fluent UI Web Components Bearbeiten

Numerische Drehfelder sind auch in der Komponentenbibliothek Microsoft Fluent UI Web Components unter dem Namen fluent-number-field enthalten.[11] Es handelt sich dabei um ein Textfeld, das nur die Eingabe von Zahlen in einem frei definierbaren Wertebereich erlaubt und am Rand die typischen Schaltflächen eines Drehfelds besitzt.

Die wichtigsten Attribute sind:

  • value – Der aktuelle Wert.
  • min – Der minimal zulässige Wert.
  • max – Der maximal zulässige Wert.
  • step – Die Schrittweite. Der Standardwert ist 1.

Java Bearbeiten

Swing Bearbeiten

In Java Swing existiert die Komponente javax.swing.JSpinner.[4] Dabei handelt es sich um eine Kombination eines Textfeldes und den beiden Schaltflächen zur Inkrementierung und Dekrementierung des Wertes. Die Implementierung ist sehr flexibel und erlaubt beliebige Datentypen, die einer Ordnungsrelation unterliegen (Spinner Model) und eine benutzerdefinierte Eingabemaske (Spinner Editor). Dadurch können unter anderem Datumswerte korrekt verwaltet werden. Beispielsweise kann dadurch festgelegt werden, dass auf den 28. Februar nur in Schaltjahren der 29. Februar folgt und in allen anderen Jahren der 1. März.

HTML 5 und CSS 3 Bearbeiten

In HTML 5 wurde für Formulare der neue Eingabetyp „number“ eingeführt. Moderne Webbrowser stellen Eingabefelder dieses Typs als Textfeld mit den typischen Schaltflächen zur Inkrementierung und Dekrementierung des Wertes dar. Zudem ist es möglich, das Minimum (min), das Maximum (max) und die Schrittweite (step) als Attribut anzugeben. Ältere Webbrowser zeigen hingegen nur ein Textfeld ohne den beiden Schaltflächen an.[12] Um sicherzustellen, dass sich der eingegebene Wert im zulässigen Intervall befindet, sollten die übermittelten Daten client- oder serverseitig auf Gültigkeit geprüft werden.

Für Webbrowser, die auf WebKit basieren (z. B. Chrome, Safari, Opera und Edge), existieren CSS Pseudoelemente, mit denen die einzelnen Bestandteile benutzerdefiniert formatiert werden können. Da diese derzeit allerdings nicht standardisiert sind (Stand: Juli 2022), besitzen sie ein browserspezifisches Präfix.

  • ::-webkit-inner-spin-button – Die beiden Schaltflächen innerhalb des Rahmens.
  • ::-webkit-outer-spin-button – Die beiden Schaltflächen außerhalb des Rahmens.
  • ::-webkit-textfield-decoration-container – Der gemeinsame Container für das Textfeld und den beiden Schaltflächen.

Andere Webbrowser unterstützen diese Möglichkeiten derzeit (Stand: Juli 2022) nicht.

Einzelnachweise Bearbeiten

  1. Hinzufügen einer Bildlaufleiste oder eines Drehfelds zu einem Arbeitsblatt. Excel für Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007. In: Office-Support. Microsoft, abgerufen am 9. Juli 2022.
  2. a b NumericUpDown Klasse. In: Microsoft Docs. Microsoft, abgerufen am 9. Juli 2022.
  3. a b c Jim Walker et al.: About Up-Down Controls. In: Microsoft Docs. Microsoft, 21. August 2020, abgerufen am 9. Juli 2022 (englisch).
  4. a b How to Use Spinners. In: The Java™ Tutorials. Oracle, abgerufen am 10. Juli 2022 (englisch).
  5. Steppers. In: Human Interface Guidelines. Apple, abgerufen am 10. Juli 2022 (englisch).
  6. a b Xamarin.Forms > Stepper Class. In: Microsoft Docs. Microsoft, abgerufen am 9. Juli 2022 (englisch).
  7. DIN EN ISO 9241-161; Nr. 8.41
  8. AufAb-Steuerelement (UpDown). In: Microsoft (Hrsg.): MSDN Library Visual Studio 6.0. 23. Juni 1998, <Installationsordner>\MSDN98\98VSa\1031\cmctl298.chm::/html/vbobjUpDownControl.htm.
  9. Glossary > cycle button. In: Office-Support. Usability First, abgerufen am 9. Juli 2022 (englisch).
  10. Karl Bridge,Michael Satran: Up-Down Control (MSAA UI Element Reference). In: Microsoft Docs. Microsoft, 23. August 2019, abgerufen am 10. Juli 2022 (englisch).
  11. Fluent UI Web Components > fluent-number-field. In: Microsoft Docs. Microsoft, 1. November 2021, abgerufen am 10. Juli 2022 (englisch).
  12. WHATWG > HTML > Forms > The input element > Number state. In: HTML5 – A vocabulary and associated APIs for HTML and XHTML. W3C, abgerufen am 10. Juli 2022 (englisch).