## MODIFIED Requirements ### Requirement: Fokus, Tabreihenfolge und Access-Keys Der Fokus SHALL mit Tab in aufsteigender `TabIndex`-Folge und mit Umschalt-Tab rückwärts wechseln; Elemente mit `TabStop = 0` oder `Enabled = 0` MUST übersprungen werden. Ein `&` im Text SHALL den folgenden Buchstaben zum Access-Key machen, der mit Alt das Element auslöst oder ihm den Fokus gibt. Enter SHALL die `Default`-Schaltfläche auslösen, Esc die `Cancel`-Schaltfläche. Fokuswechsel MUST `LostFocus` am alten und `GotFocus` am neuen Element auslösen, in dieser Reihenfolge. Die über das Terminal gelieferte Rückwärtstab-Taste SHALL denselben Fokuswechsel wie Tab mit Umschalt auslösen. Die Reihenfolge LostFocus vor GotFocus SHALL auch an den Wirkungen der BASIC-Handler sichtbar bleiben. #### Scenario: Tab überspringt - **WHEN** das mittlere von drei Elementen `TabStop = 0` trägt und Tab gedrückt wird - **THEN** erhält das dritte Element den Fokus #### Scenario: Access-Key - **WHEN** eine Schaltfläche `Caption = "&OK"` trägt und Alt+O gedrückt wird - **THEN** wird ihr `Click`-Ereignis ausgelöst #### Scenario: Reihenfolge der Fokusereignisse - **WHEN** der Fokus von `Text1` auf `Text2` wechselt - **THEN** läuft erst `Text1_LostFocus`, danach `Text2_GotFocus` #### Scenario: Handlerwirkungen in Fokusreihenfolge - **WHEN** LostFocus den Text L und GotFocus den Text G an dieselbe Variable anhängen - **THEN** lautet das Ergebnis LG #### Scenario: Rückwärtstab vom Terminal - **WHEN** das Terminal eine Rückwärtstab-Taste liefert - **THEN** wechselt der Fokus zum vorherigen zulässigen TabIndex ### Requirement: Menüsystem Ein Formular SHALL eine Menüleiste mit bis zu sechs Ebenen tragen. Menüeinträge SHALL Access-Keys (`&`), Shortcuts, `Checked`, `Enabled`, `Visible` und Separatoren (`-`) unterstützen; ein Separator MUST NOT `Checked`, deaktiviert oder mit Shortcut versehen sein, ein Menütitel MUST NOT einen Shortcut tragen. Solange ein Menü geöffnet ist, MUST die Zustellung von Zeitereignissen und klassischen Traps ruhen und danach fortgesetzt werden. #### Scenario: Menüauswahl löst Click aus - **WHEN** ein Menüeintrag über seinen Access-Key gewählt wird - **THEN** läuft seine `Click`-Prozedur #### Scenario: Traps ruhen im geöffneten Menü - **WHEN** ein Menü geöffnet ist und ein Zeit-Trap fällig wird - **THEN** läuft sein Handler erst, nachdem das Menü geschlossen wurde #### Scenario: UEVENT an gewöhnlicher Anweisungsgrenze - **WHEN** ein Menü offen ist und UEVENT vor einer Zuweisung ansteht - **THEN** läuft dessen Handler erst nach dem Schließen des Menüs