home *** CD-ROM | disk | FTP | other *** search
- 'tools.bas
-
- 'enthält diverse SUB's und Function's
-
- '----------------------------------------------------------
-
- 'Definitionen und Deklarationen
-
-
- 'Sub-Deklarationen
-
- DECLARE SUB Sonder (typ$, vorzeichen%, komma%, cursor%, einfmerker%, eingabe$, laenge%, position%, Zeile%, v$)
- DECLARE SUB HellBlinken ()
- DECLARE SUB Unterstrichen ()
- DECLARE SUB hell ()
- DECLARE SUB normal ()
- DECLARE SUB Blinken ()
- DECLARE SUB invers ()
- DECLARE SUB bildloeschen (ZeileLinksOben%, SpalteLinksOben%, ZeileRechtsUnten%, SpalteRechtsUnten%, LoeschZeichen$)
- DECLARE SUB rahmen (ZeileLinksOben%, SpalteLinksOben%, ZeileRechtsUnten%, SpalteRechtsUnten%, RahmenZeichen$)
- DECLARE SUB InputNeu (vorgabe$, gueltig$, typ$, laenge%, nachkomma%, Zeile%, Spalte%, taste$)
- DECLARE SUB pruefuebergabe (Zeile%, Spalte%, typ$, laenge%, nachkomma%, gueltig$, vorgabe$, vorzeichen%, komma%, fehler%)
- DECLARE SUB warten (ZeilenNr%)
- DECLARE SUB numerisch (komma%, vorzeichen%, einfmerker%, eingabe$, laenge%, position%, v$)
- DECLARE SUB zeichen (einfmerker%, eingabe$, laenge%, position%, v$)
- DECLARE SUB fehlmeld (ZeilenNr%, Fehlertext$)
-
- 'Funktionsdeklarationen
-
- DECLARE FUNCTION BalkenMenue% (ZeilenNr%, SpaltenNr%, Elemente%, ErsteWahl%, abstand%, Optionen$())
- DECLARE FUNCTION ZeilenMenue% (ZeilenNr%, SpaltenNr%, Elemente%, ErsteWahl%, Optionen$())
-
- 'Variablendefinitionen
-
- COMMON /Tools/ inversflag
-
- FUNCTION BalkenMenue% (ZeilenNr%, SpaltenNr%, Elemente%, ErsteWahl%, abstand%, Optionen$())
- FOR i% = 1 TO Elemente%
- differenz% = abstand% * (i% - 1)
- LOCATE ZeilenNr% + differenz%, SpaltenNr%, 0
- IF i% = ErsteWahl% THEN
- invers
- PRINT "["; i%; "]"; SPACE$(3); Optionen$(i% - 1); " ";
- normal
- ELSE
- PRINT "["; i%; "]"; SPACE$(3); Optionen$(i% - 1); " ";
- END IF
- NEXT i%
- differenz% = abstand% * (ErsteWahl% - 1)
- taste$ = CHR$(255)
- WHILE taste$ <> CHR$(13)
- taste$ = INKEY$
- IF (LEN(taste$) = 2 AND (RIGHT$(taste$, 1) = CHR$(72) OR RIGHT$(taste$, 1) = CHR$(80))) OR taste$ = CHR$(27) THEN
- LOCATE ZeilenNr% + differenz%, SpaltenNr%, 0
- PRINT "["; ErsteWahl%; "]"; SPACE$(3); Optionen$(ErsteWahl% - 1); " ";
- IF RIGHT$(taste$, 1) = CHR$(72) THEN
- ErsteWahl% = ErsteWahl% - 1
- IF ErsteWahl% < 1 THEN ErsteWahl% = Elemente%
- END IF
- IF RIGHT$(taste$, 1) = CHR$(80) THEN
- ErsteWahl% = ErsteWahl% + 1
- IF ErsteWahl% > Elemente% THEN ErsteWahl% = 1
- END IF
- IF taste$ = CHR$(27) THEN
- ErsteWahl% = Elemente%
- END IF
- differenz% = abstand% * (ErsteWahl% - 1)
- invers
- LOCATE ZeilenNr% + differenz%, SpaltenNr%, 0
- PRINT "["; ErsteWahl%; "]"; SPACE$(3); Optionen$(ErsteWahl% - 1); " ";
- normal
- END IF
- WEND
- IF taste$ = CHR$(27) THEN
- BalkenMenue% = Elemente%
- ELSE
- BalkenMenue% = ErsteWahl%
- END IF
- END FUNCTION
-
- SUB bildloeschen (ZeileLinksOben%, SpalteLinksOben%, ZeileRechtsUnten%, SpalteRechtsUnten%, LoeschZeichen$)
- IF LoeschZeichen$ = "" THEN LoeschZeichen$ = " "
- FOR i% = ZeileLinksOben% TO ZeileRechtsUnten%
- LOCATE i%, SpalteLinksOben%
- PRINT STRING$(SpalteRechtsUnten% - SpalteLinksOben% + 1, LoeschZeichen$);
- NEXT i%
- LOCATE 1, 1, 0
- END SUB
-
- SUB Blinken
- COLOR 18, 0
- END SUB
-
- SUB fehlmeld (ZeilenNr%, Fehlertext$)
-
- SHARED inversflag
-
- normal
- LOCATE ZeilenNr%, 2, 0
- PRINT Fehlertext$;
- CALL warten(23)
- IF inversflag = 1 THEN
- invers
- END IF
- END SUB
-
- SUB hell
- COLOR 10, 0
- END SUB
-
- SUB HellBlinken
- COLOR 26, 0
- END SUB
-
- SUB InputNeu (vorgabe$, gueltig$, typ$, laenge%, nachkomma%, Zeile%, Spalte%, taste$)
-
- 'eingaberoutine als ersatz für input
- 'benötigt Zeilen- und Spaltenposition und Gesamtlänge des Eingabefeldes
- 'typ der Eingabe: (n)umerisch, nur (c)haracter oder (a)lphanumerisch
- 'anzahl der nachkommastellen
- 'string mit den gültigen zeichen, kann leer sein und wird dann mit
- 'default-zeichen belegt
- 'vorgabewert, kann auch leer sein
-
- SHARED inversflag
-
- 'initialisierungen und prüfungen
- '-------------------------------
-
-
- CONST ESC = 27
- CONST ENTER = 13
- CONST UEBER = 7
- CONST EINF = 12
- CONST BACKSPACE = 8
-
- steuerzeichen% = 0
- cursor% = UEBER
- IF LEN(vorgabe$) < laenge% THEN
- position% = LEN(vorgabe$) + 1
- ELSE
- position% = LEN(vorgabe$)
- END IF
- vorzeichen% = 0
- komma% = 0
- einfmerker% = 0
-
- CALL pruefuebergabe(Zeile%, Spalte%, typ$, laenge%, nachkomma%, gueltig$, vorgabe$, vorzeichen%, komma%, fehler%)
-
- 'Abbruch, falls Übergabefehler entdeckt
- '--------------------------------------
-
- IF fehler% THEN
- EXIT SUB
-
- END IF
-
- 'eingabe$ mit blanks bis laenge füllen
- '--------------------------------------------------
-
- eingabe$ = vorgabe$ + SPACE$(laenge% - LEN(vorgabe$))
-
- 'eingabeschleife
- '---------------
-
- invers
- inversflag = 1
- LOCATE Zeile%, Spalte%, 1, 6, UEBER
- PRINT eingabe$
- LOCATE Zeile%, Spalte% + position% - 1, 1, 6, UEBER
-
- DO
- fehler% = 0
- a$ = ""
- WHILE a$ = ""
- a$ = INKEY$
- WEND
-
- IF LEN(a$) = 1 THEN
- sonderzeichen% = 0
- v$ = a$
- ELSE
- sonderzeichen% = 1
- v$ = RIGHT$(a$, 1)
- END IF
-
- IF sonderzeichen% = 0 AND ASC(v$) <> BACKSPACE THEN
- SELECT CASE ASC(v$)
- CASE ESC
- taste$ = "ESC"
- EXIT DO
- CASE ENTER
- taste$ = "ENTER"
- IF INSTR(eingabe$, ".") THEN
- vor$ = LEFT$(eingabe$, INSTR(eingabe$, ".") - 1)
- nach$ = RTRIM$(RIGHT$(eingabe$, laenge% - INSTR(eingabe$, ".")))
- ELSE
- vor$ = RTRIM$(eingabe$)
- nach$ = ""
- END IF
- IF LEN(vor$) > laenge% - nachkomma% - 1 AND typ$ = "N" THEN
- CALL fehlmeld(23, "Zu viele Vorkommastellen in der Eingabe")
- fehler% = 1
- END IF
- IF LEN(nach$) > nachkomma% AND typ$ = "N" THEN
- CALL fehlmeld(23, "Zu viele Nachkommastellen in der Eingabe")
- fehler% = 1
- END IF
- IF fehler% = 0 THEN
- EXIT DO
- END IF
- CASE ELSE
- IF INSTR(gueltig$, v$) THEN
- SELECT CASE typ$
- CASE "C", "A"
- CALL zeichen(einfmerker%, eingabe$, laenge%, position%, v$)
- CASE "N"
- CALL numerisch(komma%, vorzeichen%, einfmerker%, eingabe$, laenge%, position%, v$)
- END SELECT
- ELSE
- BEEP
- fehler% = 1
- END IF
- END SELECT
- ELSE
- CALL Sonder(typ$, vorzeichen%, komma%, cursor%, einfmerker%, eingabe$, laenge%, position%, Zeile%, v$)
- IF ASC(v$) = 72 THEN taste$ = "CURHOCH": EXIT DO
- IF ASC(v$) = 80 THEN taste$ = "CURRUNTER": EXIT DO
- IF ASC(v$) = 59 THEN taste$ = "F1": EXIT DO
- END IF
-
- LOCATE Zeile%, Spalte%, 1, 6, cursor%
- CALL invers
- PRINT eingabe$
- CALL normal
- LOCATE Zeile%, Spalte% + position% - 1, 1, 6, cursor%
-
- LOOP
-
- 'Rechtsbündige BLANKS entfernen, falls ENTER oder CURHOCH oder CURRUNTER oder F1
- 'bei ESC bleibt vorgabe$ unverändert
- '--------------------------------------------
-
- IF ASC(v$) = ENTER OR taste$ = "CURHOCH" OR taste$ = "CURRUNTER" OR taste$ = "F1" THEN
- vorgabe$ = RTRIM$(eingabe$)
- END IF
-
- normal
- inversflag = 0
-
- END SUB
-
- SUB invers
- COLOR 0, 7
- END SUB
-
- SUB JaNein (Zeile%, Spalte%, text$, ant$)
- CALL hell
- LOCATE Zeile%, Spalte%, 0
- PRINT text$
- DO
- ant$ = INKEY$
- LOOP UNTIL UCASE$(ant$) = "J" OR UCASE$(ant$) = "N"
- CALL normal
- LOCATE Zeile%, Spalte%, 0
- END SUB
-
- SUB normal
- COLOR 7, 0
- END SUB
-
- SUB numerisch (komma%, vorzeichen%, einfmerker%, eingabe$, laenge%, position%, v$)
-
- IF v$ = "," THEN v$ = "."
- IF v$ = "." THEN
- SELECT CASE einfmerker%
- CASE 0
- IF komma% = 1 AND INSTR(eingabe$, ".") <> position% THEN
- CALL fehlmeld(23, "Dezimalpunkt bereits vorhanden")
- EXIT SUB
- END IF
- IF komma% = 0 THEN
- komma% = 1
- END IF
- CASE 1
- IF komma% = 1 THEN
- CALL fehlmeld(23, "Dezimalpunkt bereits vorhanden")
- EXIT SUB
- END IF
- IF LEN(RTRIM$(eingabe$)) < laenge% THEN
- komma% = 1
- END IF
- END SELECT
- END IF
- IF v$ <> "." AND INSTR(eingabe$, ".") = position% AND einfmerker% = 0 THEN
- komma% = 0
- END IF
- IF (v$ = "+" OR v$ = "-") AND position% <> 1 THEN
- CALL fehlmeld(23, "Vorzeichen nur am Anfang des Feldes möglich")
- EXIT SUB
- END IF
- IF (v$ = "+" OR v$ = "-") AND position% = 1 AND einfmerker% = 1 AND vorzeichen% = 1 THEN
- CALL fehlmeld(23, "Einfügen eines weiteren Vorzeichens unmöglich")
- EXIT SUB
- END IF
- IF v$ = "+" OR v$ = "-" THEN
- vorzeichen% = 1
- END IF
-
- CALL zeichen(einfmerker%, eingabe$, laenge%, position%, v$)
-
- END SUB
-
- SUB pruefuebergabe (Zeile%, Spalte%, typ$, laenge%, nachkomma%, gueltig$, vorgabe$, vorzeichen%, komma%, fehler%)
-
- IF LEN(vorgabe$) > laenge% THEN
- CALL fehlmeld(23, "Vorgabe ist zu lang")
- fehler% = 1
- END IF
- SELECT CASE typ$
- CASE "c", "C"
- typ$ = "C"
- nachkomma% = 0
- IF LEN(gueltig$) = 0 THEN
- gueltig$ = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZäöüÄÖÜß "
- END IF
- CASE "a", "A"
- typ$ = "A"
- nachkomma% = 0
- IF gueltig$ = "" THEN
- FOR i = 1 TO 255
- gueltig$ = gueltig$ + CHR$(i)
- NEXT i
- END IF
- CASE "n", "N"
- typ$ = "N"
- IF LEN(gueltig$) = 0 THEN
- gueltig$ = "0123456789+-.,"
- END IF
- IF laenge% - nachkomma% < 2 THEN
- CALL fehlmeld(23, "Gesamtlaenge des Feldes nicht ausreichend")
- fehler% = 1
- END IF
- SELECT CASE INSTR(vorgabe$, "+")
- CASE 0
- vorzeichen% = 0
- CASE 1
- vorzeichen% = 1
- CASE IS > 1
- CALL fehlmeld(23, "Vorzeichen nur an der ersten Position erlaubt")
- fehler% = 1
- END SELECT
- SELECT CASE INSTR(vorgabe$, "-")
- CASE 0
- vorzeichen% = 0
- CASE 1
- vorzeichen% = 1
- CASE IS > 1
- CALL fehlmeld(23, "Vorzeichen nur an der ersten Position erlaubt")
- fehler% = 1
- END SELECT
- komma% = 0
- FOR i = 1 TO LEN(vorgabe$)
- IF MID$(vorgabe$, i, 1) = "." OR MID$(vorgabe$, i, 1) = "," THEN
- komma% = komma% + 1
- END IF
- IF komma% > 1 THEN
- CALL fehlmeld(23, "Mehr als ein Dezimalpunkt in der Vorgabe")
- fehler% = 1
- END IF
- NEXT i
- IF INSTR(vorgabe$, ",") <> 0 THEN
- vorgabe$ = LEFT$(vorgabe$, INSTR(vorgabe$, ",") - 1) + "." + RIGHT$(vorgabe$, LEN(vorgabe$) - INSTR(vorgabe$, ","))
- END IF
- FOR i = 1 TO LEN(vorgabe$)
- SELECT CASE MID$(vorgabe$, i, 1)
- CASE "0" TO "9", "+", "-", "."
- CASE ELSE
- CALL fehlmeld(23, "Ungültige Zeichen in der numerischen Vorgabe")
- fehler% = 1
- EXIT FOR
- END SELECT
- NEXT i
- CASE ELSE
- CALL fehlmeld(23, "Falsches Typkennzeichen gewählt, nur 'c', 'a' und 'n' erlaubt")
- fehler% = 1
- END SELECT
- SELECT CASE Zeile%
- CASE IS < 1, IS > 25
- CALL fehlmeld(23, "Zeilenposition außerhalb des Bereichs")
- fehler% = 1
- END SELECT
- SELECT CASE Spalte%
- CASE IS < 1, IS > 80
- CALL fehlmeld(23, "Spaltenposition außerhalb des Bereichs")
- fehler% = 1
- END SELECT
- IF INSTR(vorgabe$, ".") THEN
- vor$ = LEFT$(vorgabe$, INSTR(vorgabe$, ".") - 1)
- nach$ = MID$(vorgabe$, INSTR(vorgabe$, ".") + 1)
- ELSE
- vor$ = RTRIM$(vorgabe$)
- nach$ = ""
- END IF
- IF LEN(vor$) > laenge% - nachkomma% - 1 AND typ$ = "N" THEN
- CALL fehlmeld(23, "Zu viele Vorkommastellen in der Vorgabe")
- fehler% = 1
- END IF
- IF LEN(nach$) > nachkomma% AND typ$ = "N" THEN
- CALL fehlmeld(23, "Zu viele Nachkommastellen in der Vorgabe")
- fehler% = 1
- END IF
-
- END SUB
-
- SUB rahmen (ZeileLinksOben%, SpalteLinksOben%, ZeileRechtsUnten%, SpalteRechtsUnten%, RahmenZeichen$)
- SELECT CASE RahmenZeichen$
- CASE CHR$(201)
- ZeichenLinksOben$ = CHR$(201)
- ZeichenLinksUnten$ = CHR$(200)
- ZeichenRechtsOben$ = CHR$(187)
- ZeichenRechtsUnten$ = CHR$(188)
- ZeichenWaagrecht$ = CHR$(205)
- ZeichenSenkrecht$ = CHR$(186)
- CASE CHR$(218)
- ZeichenLinksOben$ = CHR$(218)
- ZeichenLinksUnten$ = CHR$(192)
- ZeichenRechtsOben$ = CHR$(191)
- ZeichenRechtsUnten$ = CHR$(217)
- ZeichenWaagrecht$ = CHR$(196)
- ZeichenSenkrecht$ = CHR$(179)
- CASE CHR$(213)
- ZeichenLinksOben$ = CHR$(213)
- ZeichenLinksUnten$ = CHR$(212)
- ZeichenRechtsOben$ = CHR$(184)
- ZeichenRechtsUnten$ = CHR$(190)
- ZeichenWaagrecht$ = CHR$(205)
- ZeichenSenkrecht$ = CHR$(179)
- CASE CHR$(214)
- ZeichenLinksOben$ = CHR$(214)
- ZeichenLinksUnten$ = CHR$(211)
- ZeichenRechtsOben$ = CHR$(183)
- ZeichenRechtsUnten$ = CHR$(189)
- ZeichenWaagrecht$ = CHR$(196)
- ZeichenSenkrecht$ = CHR$(186)
- CASE ELSE
- ZeichenLinksOben$ = RahmenZeichen$
- ZeichenLinksUnten$ = RahmenZeichen$
- ZeichenRechtsOben$ = RahmenZeichen$
- ZeichenRechtsUnten$ = RahmenZeichen$
- ZeichenWaagrecht$ = RahmenZeichen$
- ZeichenSenkrecht$ = RahmenZeichen$
- END SELECT
- LOCATE ZeileLinksOben%, SpalteLinksOben%
- PRINT ZeichenLinksOben$; STRING$(SpalteRechtsUnten% - SpalteLinksOben% - 1, ZeichenWaagrecht$); ZeichenRechtsOben$;
- FOR i% = ZeileLinksOben% + 1 TO ZeileRechtsUnten% - 1
- LOCATE i%, SpalteLinksOben%
- PRINT ZeichenSenkrecht$;
- LOCATE i%, SpalteRechtsUnten%
- PRINT ZeichenSenkrecht$;
- NEXT i%
- LOCATE ZeileRechtsUnten%, SpalteLinksOben%
- PRINT ZeichenLinksUnten$; STRING$(SpalteRechtsUnten% - SpalteLinksOben% - 1, ZeichenWaagrecht$); ZeichenRechtsUnten$;
- END SUB
-
- SUB Sonder (typ$, vorzeichen%, komma%, cursor%, einfmerker%, eingabe$, laenge%, position%, Zeile%, v$)
-
- CONST UEBER = 7
- CONST EINF = 12
- CONST BACKSPACE = 8
- CONST BLANK = " "
- CONST CURLINKS = 75
- CONST CURRECHTS = 77
- CONST CURHOCH = 72
- CONST CURRUNTER = 80
- CONST HOME = 71
- CONST ENDE = 79
- CONST DEL = 83
- CONST INS = 82
-
- 'DEL
- '---
- IF ASC(v$) = DEL THEN
- loesch$ = MID$(eingabe$, position%, 1)
- IF typ$ = "N" AND loesch$ = "." THEN komma% = 0
- IF typ$ = "N" AND (loesch$ = "+" OR loesch$ = "-") THEN vorzeichen% = 0
- eingabe$ = LEFT$(eingabe$, position% - 1) + RIGHT$(eingabe$, laenge% - position%) + BLANK
- EXIT SUB
- END IF
-
- 'BACKSPACE
- '---------
- IF ASC(v$) = BACKSPACE THEN
- IF position% = 1 THEN
- BEEP
- EXIT SUB
- ELSE
- IF position% = laenge% THEN
- loesch$ = MID$(eingabe$, position%, 1)
- IF MID$(eingabe$, laenge%, 1) = BLANK THEN
- position% = position% - 1
- eingabe$ = LEFT$(eingabe$, position% - 1) + RIGHT$(eingabe$, laenge% - position%) + BLANK
- ELSE
- eingabe$ = LEFT$(eingabe$, position% - 1) + BLANK
- END IF
- ELSE
- loesch$ = MID$(eingabe$, position% - 1, 1)
- position% = position% - 1
- eingabe$ = LEFT$(eingabe$, position% - 1) + RIGHT$(eingabe$, laenge% - position%) + BLANK
- END IF
- END IF
- IF typ$ = "N" AND loesch$ = "." THEN komma% = 0
- IF typ$ = "N" AND (loesch$ = "+" OR loesch$ = "-") THEN vorzeichen% = 0
- EXIT SUB
- END IF
-
- 'Sonderzeichen
- '-------------
-
- SELECT CASE ASC(v$)
- CASE CURHOCH, CURRUNTER
- 'BEEP
- CASE CURLINKS
- IF position% > 1 THEN
- position% = position% - 1
- ELSE
- BEEP
- END IF
- CASE CURRECHTS
- IF typ$ <> "N" THEN
- IF position% < laenge% THEN
- position% = position% + 1
- ELSE
- BEEP
- END IF
- ELSE
- IF MID$(eingabe$, position%, 1) <> BLANK THEN
- position% = position% + 1
- ELSE
- BEEP
- END IF
- END IF
- CASE HOME
- position% = 1
- CASE ENDE
- IF typ$ <> "N" THEN
- position% = laenge%
- ELSE
- position% = LEN(RTRIM$(eingabe$)) + 1
- END IF
- CASE INS
- IF einfmerker% THEN
- einfmerker% = 0
- cursor% = 7
- ELSE
- einfmerker% = 1
- cursor% = 12
- END IF
- END SELECT
- END SUB
-
- SUB Unterstrichen
- COLOR 1, 0
- END SUB
-
- SUB warten (ZeilenNr%)
- LOCATE ZeilenNr%, 2, 0
- PRINT " Weiter mit ";
- invers
- PRINT "<TASTE>";
- normal
- dummy$ = INPUT$(1)
- LOCATE ZeilenNr%, 2, 0
- PRINT SPACE$(78);
- END SUB
-
- SUB zeichen (einfmerker%, eingabe$, laenge%, position%, v$)
-
- IF einfmerker% = 1 THEN
- IF LEN(RTRIM$(eingabe$)) < laenge% THEN
- eingabe$ = LEFT$(eingabe$, position% - 1) + v$ + MID$(eingabe$, position%, laenge% - position%)
- ELSE
- CALL fehlmeld(23, "Einfügen unmöglich, Feld bereits gefüllt")
- position% = position% - 1
- END IF
- ELSE
- eingabe$ = LEFT$(eingabe$, position% - 1) + v$ + MID$(eingabe$, position% + 1, laenge% - position%)
- END IF
- IF position% < laenge% THEN
- position% = position% + 1
- END IF
-
- END SUB
-
- FUNCTION ZeilenMenue% (ZeilenNr%, SpaltenNr%, Elemente%, ErsteWahl%, Optionen$())
- DIM OptionsLaenge%(Elemente% - 1)
- OptionsLaenge%(0) = 0
- LOCATE ZeilenNr%, SpaltenNr%, 0
- FOR i% = 1 TO Elemente%
- IF i% = ErsteWahl% THEN
- invers
- PRINT " "; Optionen$(i% - 1); " ";
- normal
- ELSE
- PRINT " "; Optionen$(i% - 1); " ";
- END IF
- IF i% > 1 THEN
- OptionsLaenge%(i% - 1) = OptionsLaenge%(i% - 2) + (LEN(Optionen$(i% - 2)) + 2)
- END IF
- NEXT i%
- taste$ = CHR$(255)
- WHILE taste$ <> CHR$(13)
- taste$ = INKEY$
- IF (LEN(taste$) = 2 AND (RIGHT$(taste$, 1) = CHR$(75) OR RIGHT$(taste$, 1) = CHR$(77))) OR taste$ = CHR$(27) THEN
- LOCATE ZeilenNr%, SpaltenNr% + OptionsLaenge%(ErsteWahl% - 1), 0
- PRINT " "; Optionen$(ErsteWahl% - 1); " ";
- IF RIGHT$(taste$, 1) = CHR$(75) THEN
- ErsteWahl% = ErsteWahl% - 1
- IF ErsteWahl% < 1 THEN ErsteWahl% = Elemente%
- END IF
- IF RIGHT$(taste$, 1) = CHR$(77) THEN
- ErsteWahl% = ErsteWahl% + 1
- IF ErsteWahl% > Elemente% THEN ErsteWahl% = 1
- END IF
- IF taste$ = CHR$(27) THEN
- ErsteWahl% = Elemente%
- END IF
- LOCATE ZeilenNr%, SpaltenNr% + OptionsLaenge%(ErsteWahl% - 1), 0
- invers
- PRINT " "; Optionen$(ErsteWahl% - 1); " ";
- normal
- END IF
- WEND
- IF taste$ = CHR$(27) THEN
- ZeilenMenue% = Elemente%
- ELSE
- ZeilenMenue% = ErsteWahl%
- END IF
- END FUNCTION
-
-