' LineEdit : Funktioniert wie Line Input, aber ermoeglicht es, ' dabei eine Zeichenkette auszugeben und zu bearbeiten. ' Ist ansonsten weder neu noch grossartig, aber liegt ' hier als Quelltext vor, der schnell geaendert und ' angepasst werden kann. QB 4.0 Freeware :-). U.Hinze ' DECLARE SUB LineEdit (LeText$, LeInfo%) CLS PRINT "Eingabe: "; Txt$ = "Testtext...": Modus% = 0 CALL LineEdit(Txt$, Modus%) IF Modus% = 0 THEN PRINT : PRINT Txt$ ELSE PRINT "Sonderzeichen "; Modus% SUB LineEdit (LeText$, LeInfo%) 'LineEdit: LeText$ anzeigen und bearbeiten. 'šbergabe: 'LeText$ = zu bearbeitender Text 'LeInfo% = Einfgemodus an/aus 'Rckgabe: 'LeInfo% = 0 (Ok) ' 27 (ESC) oder ' Sonderzeichencode fr Funktionstasten, Bild auf/ab, Cursor auf/ab 'Beispielaufruf: ' DECLARE SUB LineEdit (LeText$, LeInfo%) ' Txt$="Testtext...": Modus%=0 ' Call LineEdit(Txt$,Modus%) ' If Modus%=0 Then Print:Print Txt$ Else Print "Sonderzeichen";Modus% LeJa = -1 'true/false LeNein = 0 LeZeile% = CSRLIN 'Cursorposition merken LeSpalte% = POS(0) LeZeiger% = LEN(LeText$) 'relative Cursorpos. LeEinfuegen% = LeInfo% 'einfgen/berschreiben DO LOCATE LeZeile%, LeSpalte% 'Text ausgeben und Cursor setzen PRINT LeText$; " "; LOCATE LeZeile%, LeSpalte% + LeZeiger%, 1 DO 'warten bis Taste LeTaste$ = INKEY$ IF LeTaste$ <> "" THEN EXIT DO LOOP SELECT CASE LeTaste$ CASE CHR$(13) 'CR LeInfo% = LeNein EXIT DO CASE CHR$(27) 'ESC LeInfo% = 27 EXIT DO CASE CHR$(8) 'Backspace IF LeZeiger% > 0 THEN LeText$ = LEFT$(LeText$, LeZeiger% - 1) + MID$(LeText$, LeZeiger% + 1) LeZeiger% = LeZeiger% - 1 END IF CASE CHR$(9) 'Tab IF LeEinfuegen% THEN LeText$ = LEFT$(LeText$, LeZeiger%) + SPACE$(8 * (INT(LeZeiger% / 8 + 1)) - LeZeiger%) + MID$(LeText$, LeZeiger% + 1) END IF LeZeiger% = 8 * (INT(LeZeiger% / 8 + 1)) IF LeZeiger% > LEN(LeText$) THEN LeText$ = LeText$ + SPACE$(LeZeiger% - LEN(LeText$)) END IF CASE CHR$(0) + CHR$(82) 'Einfgen LeEinfuegen% = NOT LeEinfuegen% CASE CHR$(0) + CHR$(83) 'Delete LeText$ = LEFT$(LeText$, LeZeiger%) + MID$(LeText$, LeZeiger% + 2) CASE CHR$(0) + CHR$(75) 'links LeZeiger% = LeZeiger% - 1 CASE CHR$(0) + CHR$(77) 'rechts LeZeiger% = LeZeiger% + 1 CASE CHR$(0) + CHR$(71) 'POS1 LeZeiger% = 0 CASE CHR$(0) + CHR$(79) 'Ende LeZeiger% = LEN(LeText$) CASE ELSE 'alles andere IF LEFT$(LeTaste$, 1) = CHR$(0) THEN 'Funktionstasten o.„.? LeInfo% = ASC(RIGHT$(LeTaste$, 1)) EXIT DO ELSE 'normale Zeichen IF LeEinfuegen% THEN LeText$ = LEFT$(LeText$, LeZeiger%) + LeTaste$ + MID$(LeText$, LeZeiger% + 1) LeZeiger% = LeZeiger% + 1 ELSE LeText$ = LEFT$(LeText$, LeZeiger%) + LeTaste$ + MID$(LeText$, LeZeiger% + 2) LeZeiger% = LeZeiger% + 1 END IF END IF END SELECT IF LeZeiger% < 0 THEN LeZeiger% = 0 'rel. Cursorposition min. 0 IF LeZeiger% > 79 THEN LeZeiger% = 79: BEEP 'kein Zeilenumbruch LOOP END SUB