home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / turbo4 / mcalc.pas < prev    next >
Pascal/Delphi Source File  |  1987-12-08  |  4KB  |  124 lines

  1.  
  2. {           Copyright (c) 1985, 87 by Borland International, Inc.            }
  3.  
  4. Program MCalc;
  5.  
  6. uses Crt, Dos, MCVars, MCUtil, MCDisply, MCParser, MCLib, MCInput, MCommand;
  7.  
  8. var
  9.   Ch : Char;
  10.  
  11. procedure Run;  { Hauptschleife des Programms }
  12. var
  13.   Input : Char;
  14. begin
  15.   Stop := False;
  16.   ClearInput;
  17.   repeat
  18.     DisplayCell(CurCol, CurRow, HIGHLIGHT, NOUPDATE);
  19.     CurCell := Cell[CurCol, CurRow];
  20.     ShowCellType;
  21.     GotoXY(1, 25);
  22.     Input := GetKey;
  23.     case Input of
  24.       '/'   :    MainMenu;
  25.       F1    :    Recalc;
  26.       F2    :    EditCell(CurCell);
  27.      DELKEY : begin
  28.                 DeleteCell(CurCol, CurRow, UPDATE);
  29.                 PrintFreeMem;
  30.                 if AutoCalc then Recalc;
  31.                end;
  32.     PGUPKEY : begin
  33.                 if CurRow <= SCREENROWS then
  34.                 begin
  35.                   CurRow := 1; TopRow := 1;
  36.                 end
  37.                  else if TopRow <= SCREENROWS then
  38.                  begin
  39.                    CurRow := Succ(CurRow - TopRow); TopRow := 1;
  40.                  end
  41.                  else begin
  42.                    Dec(TopRow, SCREENROWS); Dec(CurRow, SCREENROWS);
  43.                  end;
  44.                  SetBottomRow;
  45.                  DisplayScreen(NOUPDATE);
  46.                end;
  47.     PGDNKEY : begin
  48.                 Inc(TopRow, SCREENROWS); Inc(CurRow, SCREENROWS);
  49.                 if (CurRow > MAXROWS) and (TopRow > MAXROWS) then
  50.                 begin
  51.                   CurRow := MAXROWS; TopRow := Succ(MAXROWS - SCREENROWS);
  52.                  end
  53.                  else if TopRow > Succ(MAXROWS - SCREENROWS) then
  54.                  begin
  55.                    CurRow := Succ(CurRow) - (TopRow + SCREENROWS - MAXROWS);
  56.                    TopRow := Succ(MAXROWS - SCREENROWS);
  57.                  end;
  58.                 SetBottomRow;
  59.                 DisplayScreen(NOUPDATE);
  60.               end;
  61. CTRLLEFTKEY : begin
  62.                 DisplayCell(CurCol, CurRow, NOHIGHLIGHT, NOUPDATE);
  63.                 if LeftCol = 1 then CurCol := 1
  64.                  else begin
  65.                    CurCol := Pred(LeftCol); RightCol := CurCol;
  66.                    SetLeftCol; SetRightCol;
  67.                    DisplayScreen(NOUPDATE);
  68.                  end;
  69.                end;
  70. CTRLRIGHTKEY : begin
  71.                  DisplayCell(CurCol, CurRow, NOHIGHLIGHT, NOUPDATE);
  72.                  if RightCol = MAXCOLS then CurCol := RightCol
  73.                   else begin
  74.                     CurCol := Succ(RightCol); LeftCol := CurCol;
  75.                     SetRightCol; SetLeftCol;
  76.                     DisplayScreen(NOUPDATE);
  77.                   end;
  78.                 end;
  79.      HOMEKEY : begin
  80.                  CurRow := 1; CurCol := 1;
  81.                  LeftCol := 1; TopRow := 1;
  82.                  SetRightCol; SetBottomRow;
  83.                  DisplayScreen(NOUPDATE);
  84.                end;
  85.       ENDKEY : begin
  86.                  CurCol := LastCol; RightCol := CurCol;
  87.                  BottomRow := LastRow; CurRow := BottomRow;
  88.                  SetTopRow; SetLeftCol; SetRightCol;
  89.                  DisplayScreen(NOUPDATE);
  90.                end;
  91.        UPKEY : MoveRowUp;
  92.      DOWNKEY : MoveRowDown;
  93.      LEFTKEY : MoveColLeft;
  94.      RIGHTKEY : MoveColRight;
  95.  
  96.       else
  97.              if InCharset(Input) then GetInput(Input);
  98.     end; { case }
  99.   until Stop;
  100. end; { Run }
  101.  
  102. begin
  103.   CheckBreak := False;
  104.   SetColor(TXTCOLOR);
  105.   ClrScr;
  106.   SetColor(MSGHEADERCOLOR);
  107.   WriteXY(MSGHEADER, (80 - Length(MSGHEADER)) shr 1, 10);
  108.   SetColor(PROMPTCOLOR);
  109.   WriteXY(MSGKEYPRESS, (80 - Length(MSGKEYPRESS)) shr 1, 12);
  110.   GotoXY(80, 25);
  111.   Ch := GetKey;
  112.   ClrScr;
  113.   InitVars;
  114.   Changed := False;
  115.   RedrawScreen;
  116.   if (ParamCount > 0) then
  117.     LoadSheet(ParamStr(1));
  118.   ClearInput;
  119.   Run;
  120.   SetColor(LightGray);
  121.   TextMode(OldMode);
  122.   SetCursor(OldCursor);
  123. end.
  124.