home *** CD-ROM | disk | FTP | other *** search
- UNIT SCRNCNTL;
- INTERFACE
- USES CRT, RAPSVARS;
- Procedure ENTERDATA;
- Procedure FindFldseq;
- Implementation
-
- Procedure FindFldseq;
- Begin
-
- IF Fldseq < Frstdatafld Then Fldseq := Frstdatafld;
-
- IF Skip_Prev Then
- Begin
- While (Mapattr[Fldseq] = 'P')
- And (Fldseq > Frstdatafld) DO
- Fldseq := Fldseq - 1;
- End;
-
- IF (Fldseq = Frstdatafld)
- And (Mapattr[Fldseq] = 'P') Then
- Begin
- Fldseq := Fldseq + 1;
- Skip_Prev := False;
- End;
-
- IF (Fldseq = Lastdatafld)
- And (Mapattr[Fldseq] = 'P') Then
- Begin
- Fldseq := Fldseq - 1;
- Skip_Prev := True;
- End;
-
- While (Mapattr[Fldseq] = 'P')
- And (Fldseq > Frstdatafld)
- And (Fldseq < Lastdatafld) DO
- Fldseq := Fldseq + 1;
-
- Case Mapcolr[Fldseq] of
- 'B' : Textcolor(Blue);
- 'R' : Textcolor(Red);
- 'G' : Textcolor(Green);
- 'C' : Textcolor(Cyan);
- 'K' : Textcolor(Black);
- 'Y' : Textcolor(Yellow);
- 'W' : Textcolor(White);
- 'M' : TextColor(Magenta);
- End;
-
- End;
-
- Procedure Enterdata;
- Begin
- Skip_Prev := False;
- Continue := True;
- Fldseq := HldFldseq;
- FindFldseq;
- Gotoxy(Mappos[Fldseq], Mapln[Fldseq]);
-
-
- While Continue DO
- Begin
- Fkey := False;
- Skip_prev := False;
- Keychar := Readkey;
- Hldchar := Keychar;
- Case Keychar Of
- #0 :
- Begin
- Fkey := True;
- Keychar := Readkey;
- CASE Keychar OF
- #15 : Begin
- IF Fldseq > Frstdatafld Then
- Begin
- Fldseq := Fldseq - 1;
- Skip_Prev := True;
- FindFldseq;
- End;
- End;
- #71 : Begin
- Fldseq := Frstdatafld;
- FindFldseq;
- Xpos := Mappos[Fldseq];
- Ypos := Mapln[Fldseq];
- Gotoxy(Xpos, Ypos);
- End;
- #72 : Gotoxy(Wherex,Wherey-1);
- #75 : Gotoxy(Wherex-1,Wherey);
- #77 : Gotoxy(Wherex+1,Wherey);
- #79 : Begin
- Fldseq := Lastdatafld;
- Skip_Prev := True;
- FindFldseq;
- Xpos := Mappos[Fldseq];
- Ypos := Mapln[Fldseq];
- Gotoxy(Xpos, Ypos);
- Fldseq := Lastdatafld;
- End;
- #80 : Gotoxy(Wherex,Wherey+1);
- #59, #60, #61, #62, #63, #64, #65, #66, #67,
- #68, #73, #81 : Continue := False;
- End;
- End;
- #9 : Begin
- IF Fldseq < Lastdatafld Then
- Begin
- Skip_Prev := False;
- Fldseq := Fldseq + 1;
- FindFldseq;
- End;
- End;
- #13 : Continue := False;
- #27 : Continue := False;
- ELSE
- Scrnln[Wherey, Wherex] := Keychar;
- If MapAttr[FldSeq] <> 'N' Then
- Begin
- WRITE(Keychar);
- End
- Else
- Begin
- Write(' ');
- End;
- Keychar := ' ';
- IF Mappos[Fldseq] > Wherex Then
- Begin
- IF Fldseq > Frstdatafld Then
- Begin
- Fldseq := Fldseq - 1;
- Skip_Prev := True;
- FindFldseq;
- End;
- Xpos := Mappos[Fldseq];
- Ypos := Mapln[Fldseq];
- Gotoxy(Xpos, Ypos);
- End;
- IF Mappos[Fldseq] +
- Maplen[Fldseq] - 1 < Wherex Then
- Begin
- IF Fldseq < Lastdatafld Then
- Begin
- Fldseq := Fldseq + 1;
- FindFldseq;
- End;
- Xpos := Mappos[Fldseq];
- Ypos := Mapln[Fldseq];
- Gotoxy(Xpos, Ypos);
- End;
- End;
-
- IF Fldseq < Frstdatafld Then
- Begin
- Fldseq := Frstdatafld;
- FindFldseq;
- End;
-
- IF Fldseq > Lastdatafld Then
- Begin
- Fldseq := Lastdatafld;
- FindFldseq;
- End;
- IF ((Keychar = #77)
- And (Mappos[Fldseq]+Maplen[Fldseq]-1
- < Wherex))
- OR (Keychar = #9) OR (Keychar = #80) Then
- Begin
- IF (Keychar = #77) OR (Keychar = #80) Then
- Begin
- IF Fldseq < Lastdatafld Then
- Begin
- Fldseq := Fldseq + 1;
- FindFldseq;
- End;
- End;
-
- Xpos := Mappos[Fldseq];
- Ypos := Mapln[Fldseq];
- Gotoxy(Xpos, Ypos);
- End;
-
- IF ((Keychar = #75)
- And (Mappos[Fldseq] > Wherex))
- OR (Keychar = #15) OR (Keychar = #72) Then
- Begin
- IF (Keychar = #72) OR (Keychar = #75) Then
- Begin
- IF Fldseq > Frstdatafld Then
- Begin
- Fldseq := Fldseq - 1;
- Skip_Prev := True;
- FindFldseq;
- End;
- End;
- Xpos := Mappos[Fldseq];
- Ypos := Mapln[Fldseq];
- Gotoxy(Xpos, Ypos);
- End;
-
- Xpos := Wherex;
- Ypos := Wherey;
-
- Function_Key := Keychar;
- Keychar := Hldchar;
- HldFldseq := Fldseq;
-
- CASE Keychar OF
- #4, #13, #27 : Continue := False;
- End;
-
- End;
-
- End;
-
- END.