## MODIFIED Requirements ### Requirement: Steuerelemente mit Listeninhalt ListBox und ComboBox SHALL `ADDITEM` und `REMOVEITEM` unterstützen und `List`, `ListCount`, `ListIndex` und `Text` konsistent führen; bei `Sorted = -1` SHALL die Einfügereihenfolge der Sortierung folgen. `ListIndex = -1` SHALL „keine Auswahl" bedeuten. Die ComboBox SHALL die drei Stilarten (Dropdown, Simple, Dropdown List) darstellen. Eine Zuweisung von ListIndex = -1 SHALL in leerer wie gefüllter Liste zulässig sein. Einfügen vor der Auswahl SHALL ihren Index verschieben, Entfernen der Auswahl SHALL sie aufheben. Eine ListBox ohne Auswahl SHALL Text als leeren String liefern; editierbare ComboBox-Stile SHALL ihren unabhängigen Eingabetext erhalten. #### Scenario: Element hinzufügen - **WHEN** `List1.ADDITEM "b"` und `List1.ADDITEM "a"` bei `Sorted = -1` ausgeführt werden - **THEN** liefert `List1.List(0)` den Wert `a` und `List1.ListCount` den Wert 2 #### Scenario: Keine Auswahl - **WHEN** eine ListBox ohne Auswahl gelesen wird - **THEN** liefert `ListIndex` den Wert −1 #### Scenario: Auswahl ausdrücklich aufheben - **WHEN** nach ADDITEM die Eigenschaft ListIndex auf -1 gesetzt wird - **THEN** tritt kein Fehler auf und ListIndex ist -1 #### Scenario: Eintrag vor Auswahl einfügen - **WHEN** vor einem ausgewählten Eintrag ein Element eingefügt wird - **THEN** bleibt derselbe Eintrag ausgewählt und sein Index steigt um 1 ### Requirement: Timer-Steuerelement Ein Timer SHALL bei `Enabled = -1` und `Interval > 0` sein `Timer`-Ereignis im eingestellten Abstand auslösen, gestützt auf die Zeitquelle der Ereignissteuerung. `Interval = 0` SHALL ihn abschalten. Sind mehrere Timer gleichzeitig fällig, SHALL die Reihenfolge festgelegt und dokumentiert sein. Die erste Frist SHALL ab dem Einschalten beziehungsweise neu gesetzten Intervall zählen. Zeit vor der Aktivierung MUST NOT nachgeholt werden. Deaktivierung oder Interval = 0 SHALL noch anstehende Timerereignisse verwerfen. #### Scenario: Timer feuert im Abstand - **WHEN** ein Timer mit `Interval = 100` läuft und die Zeit um 250 ms vorrückt - **THEN** ist sein Ereignis zweimal gelaufen #### Scenario: Interval 0 schaltet ab - **WHEN** `Timer1.Interval = 0` gesetzt wird - **THEN** läuft kein weiteres Ereignis #### Scenario: Späte Aktivierung - **WHEN** bei Hostzeit 1000 ms ein zuvor inaktiver Timer mit Interval 100 eingeschaltet wird - **THEN** läuft bis 1099 ms kein Timerereignis und bei 1100 ms genau eines #### Scenario: Abschalten verwirft anstehende Ereignisse - **WHEN** Timerereignisse anstehen und vor ihrer Zustellung Interval auf 0 gesetzt wird - **THEN** werden sie nicht mehr zugestellt