home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 14 / grafik / graphedi.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-03-29  |  3.9 KB  |  115 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     GRAPHEDIT.PAS                      *)
  3. (*         Routine zur Texteingabe im Grafikmodus         *)
  4. (*           und Demo für Turbo-Pascal 4.0/5.0            *)
  5. (*       (c) 1989 by Oliver Rettinghaus & TOOLBOX         *)
  6. (* ------------------------------------------------------ *)
  7. PROGRAM GraphEdit;
  8. USES Crt, Dos, Graph;
  9.  
  10. PROCEDURE Edit(X, Y, L : INTEGER; Eingabe : STRING);
  11. VAR Curpos, Textpos : INTEGER;
  12.     Zeichen         : STRING;
  13. BEGIN
  14.   REPEAT
  15.     Eingabe := Eingabe + ' ';
  16.   UNTIL Length(Eingabe) = L;
  17.   SetColor(15);
  18.   OutTextXY(X, Y, Eingabe);
  19.   Curpos := 1;
  20.   REPEAT
  21.     Textpos := X + TextWidth(Copy(Eingabe, 1, Curpos))
  22.                  - TextWidth(Copy(Eingabe, Curpos, 1));
  23.     SetColor(15);
  24.     Line(Textpos, Y + TextHeight('A') + 2,
  25.          Textpos + TextWidth(Copy(Eingabe,Curpos, 1)),
  26.          Y + TextHeight('A') + 2);
  27.     Zeichen := ReadKey;
  28.     SetColor(0);
  29.     Line(Textpos, Y + TextHeight('A') + 2,
  30.          Textpos + TextWidth(Copy(Eingabe, Curpos, 1)),
  31.          Y + TextHeight('A') +  2  );
  32.     IF Zeichen = #13 THEN Zeichen := '';
  33.     IF Zeichen = #8 THEN BEGIN
  34.       IF Curpos > 1 THEN BEGIN
  35.         Textpos := X + TextWidth(Copy(Eingabe, 1, Curpos-1))
  36.                   - TextWidth(Copy(Eingabe, Curpos - 1, 1));
  37.         SetColor(0);
  38.         OutTextXY(Textpos, Y, Copy(Eingabe, Curpos - 1,
  39.                   L - (Curpos - 1)));
  40.         Delete(Eingabe, Curpos - 1, 1);
  41.         Eingabe := Eingabe + ' ';
  42.         Dec(Curpos, 1);
  43.         Textpos := X + TextWidth(Copy(Eingabe, 1, Curpos))
  44.                    - TextWidth(Copy(Eingabe, Curpos, 1));
  45.         SetColor(15);
  46.         OutTextXY(Textpos, Y, Copy(Eingabe, Curpos,
  47.                   L - Curpos));
  48.       END;
  49.     END;
  50.  
  51.     IF ((Zeichen <> #0) AND (Zeichen <> #8)) THEN BEGIN
  52.       Textpos := X + TextWidth(Copy(Eingabe, 1, Curpos))
  53.                  - TextWidth(Copy(Eingabe, Curpos, 1));
  54.       SetColor(0);
  55.       OutTextXY(Textpos, Y, Copy(Eingabe,Curpos,
  56.                 L - Curpos));
  57.       Insert(Zeichen, Eingabe, Curpos);
  58.       Eingabe := Copy(Eingabe, 1, L);
  59.       Textpos := X + TextWidth(Copy(Eingabe, 1, Curpos))
  60.                  - TextWidth(Copy(Eingabe, Curpos, 1));
  61.       SetColor(15);
  62.       OutTextXY(Textpos, Y, Copy(Eingabe, Curpos,
  63.                 L - Curpos));
  64.       Inc(Curpos, 1);
  65.       IF Curpos > L THEN Curpos := L;
  66.     END;
  67.  
  68.     IF Zeichen = #0 THEN BEGIN
  69.       Zeichen := ReadKey;
  70.       IF Zeichen = #75 THEN
  71.         IF Curpos > 1 THEN Dec(Curpos, 1);
  72.       IF Zeichen = #77 THEN
  73.         IF Curpos < L THEN Inc(Curpos, 1);
  74.       IF Zeichen = #71 THEN Curpos := 1;
  75.       IF Zeichen = #79 THEN Curpos := L;
  76.       IF Zeichen = #83 THEN BEGIN
  77.         Textpos := X + TextWidth(Copy(Eingabe, 1, Curpos))
  78.                    - TextWidth(Copy(Eingabe, Curpos, 1));
  79.         SetColor(0);
  80.         OutTextXY(Textpos, Y, Copy(Eingabe, Curpos,
  81.                   L - Curpos));
  82.         Delete(Eingabe, Curpos, 1);
  83.         Eingabe := Eingabe + ' ';
  84.         Textpos := X + TextWidth(Copy(Eingabe, 1, Curpos))
  85.                    - TextWidth(Copy(Eingabe,Curpos, 1));
  86.         SetColor(15);
  87.         OutTextXY(Textpos, Y, Copy(Eingabe, Curpos,
  88.                   L - Curpos));
  89.       END;
  90.     END;
  91.   UNTIL Zeichen = '';
  92. END;
  93.  
  94. PROCEDURE Demo;
  95. VAR GraphDriver, GraphMode, Index : INTEGER;
  96.     Teststring                    : STRING;
  97. BEGIN
  98.   DetectGraph(GraphDriver, GraphMode);
  99.   InitGraph(GraphDriver, GraphMode, '');
  100.   FOR Index := 0 TO 4 DO BEGIN
  101.     ClearDevice;
  102.     Teststring := 'Zeichenkette';
  103.     SetTextStyle(Index, 0, 0);
  104.     OutTextXY(0, 0, 'Probeeingabe:');
  105.     Edit(1, 150, 35, Teststring);
  106.   END;
  107.   CloseGraph;
  108. END;
  109.  
  110. BEGIN
  111.   Demo;
  112. END.
  113. (* ------------------------------------------------------ *)
  114. (*               Ende von GRAPHEDI.PAS                    *)
  115.