home *** CD-ROM | disk | FTP | other *** search
- '*--------------------------------------------------------*
- '* TOOLS.BAS *
- '* (C) 1990 Th.Frins, W. Kehr & TOOLBOX *
- '*--------------------------------------------------------*
-
- '*-------------- Definitionen und Deklarationen ----------*
-
- '* Prozedur-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$)
- DECLARE SUB Meldung (Zeile%, Spalte%, text$)
-
- '* 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);
- PRINT Optionen$(i% - 1); " ";
- normal
- ELSE
- PRINT "["; i%; "]"; SPACE$(3);
- PRINT 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);
- PRINT 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);
- PRINT 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 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)har oder (a)lphanum.
- '* 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
- 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
-
- '* 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 Nachkommastel" + _
- "len 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 JaNeinESC (Zeile%, Spalte%, text$, ant$)
- CALL hell
- LOCATE Zeile%, Spalte%, 0
- PRINT text$
- DO
- ant$ = INKEY$
- LOOP UNTIL UCASE$(ant$) = "J" OR UCASE$(ant$) = "N" _
- OR CHR$(27) = ant$
- IF CHR$(27) = ant$ THEN ant$ = "ESC"
- CALL normal
- LOCATE Zeile%, Spalte%, 0
- END SUB
-
- SUB Meldung (Zeile%, Spalte%, text$)
- CALL hell
- LOCATE Zeile%, Spalte%, 0
- PRINT text$
- CALL normal
- 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$ = "abcdefghijklmnopqrstuvwxyz"
- gueltig$ = gueltig$ + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- gueltig$ = gueltig$ + äöüÄÖÜß "
- 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$;
- PRINT 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$;
- PRINT STRING$(SpalteRechtsUnten% - SpalteLinksOben% - 1, _
- ZeichenWaagrecht$);
- PRINT 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
- END IF
- eingabe$ = LEFT$(eingabe$, position% - 1) + _
- eingabe$ = eingabe$ + RIGHT$(eingabe$, laenge% - _
- position%)
- eingabe$ = eingabe$ + 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) + _
- eingabe$ = eingabe$ + RIGHT$(eingabe$, laenge% - _
- position%)_
- eingabe$ = eingabe$ + 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)
- eingabe$= eingabe$ + 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
- END IF
- 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)
- eingabe$ = eingabe$ + v$
- eingabe$ = eingabe$ + 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$
- eingabe$ = eingabe$ + 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%
- 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