home *** CD-ROM | disk | FTP | other *** search
-
- { Copyright (c) 1985, 87 by Borland International, Inc. }
-
- Program MCalc;
-
- uses Crt, Dos, MCVars, MCUtil, MCDisply, MCParser, MCLib, MCInput, MCommand;
-
- var
- Ch : Char;
-
- procedure Run;
- { The main program loop }
- var
- Input : Char;
- begin
- Stop := False;
- ClearInput;
- repeat
- DisplayCell(CurCol, CurRow, HIGHLIGHT, NOUPDATE);
- CurCell := Cell[CurCol, CurRow];
- ShowCellType;
- GotoXY(1, 25);
- Input := GetKey;
- case Input of
- '/' : MainMenu;
- F1 : Recalc;
- F2 : EditCell(CurCell);
- DELKEY : begin
- DeleteCell(CurCol, CurRow, UPDATE);
- PrintFreeMem;
- if AutoCalc then
- Recalc;
- end; { DELKEY }
- PGUPKEY : begin
- if CurRow <= SCREENROWS then
- begin
- CurRow := 1;
- TopRow := 1;
- end
- else if TopRow <= SCREENROWS then
- begin
- CurRow := Succ(CurRow - TopRow);
- TopRow := 1;
- end
- else begin
- Dec(TopRow, SCREENROWS);
- Dec(CurRow, SCREENROWS);
- end;
- SetBottomRow;
- DisplayScreen(NOUPDATE);
- end; {PGUPKEY }
- PGDNKEY : begin
- Inc(TopRow, SCREENROWS);
- Inc(CurRow, SCREENROWS);
- if (CurRow > MAXROWS) and (TopRow > MAXROWS) then
- begin
- CurRow := MAXROWS;
- TopRow := Succ(MAXROWS - SCREENROWS);
- end
- else if TopRow > Succ(MAXROWS - SCREENROWS) then
- begin
- CurRow := Succ(CurRow) - (TopRow + SCREENROWS - MAXROWS);
- TopRow := Succ(MAXROWS - SCREENROWS);
- end;
- SetBottomRow;
- DisplayScreen(NOUPDATE);
- end; { PGDNKEY }
- CTRLLEFTKEY : begin
- DisplayCell(CurCol, CurRow, NOHIGHLIGHT, NOUPDATE);
- if LeftCol = 1 then
- CurCol := 1
- else begin
- CurCol := Pred(LeftCol);
- RightCol := CurCol;
- SetLeftCol;
- SetRightCol;
- DisplayScreen(NOUPDATE);
- end;
- end; { CTRLLEFTKEY }
- CTRLRIGHTKEY : begin
- DisplayCell(CurCol, CurRow, NOHIGHLIGHT, NOUPDATE);
- if RightCol = MAXCOLS then
- CurCol := RightCol
- else begin
- CurCol := Succ(RightCol);
- LeftCol := CurCol;
- SetRightCol;
- SetLeftCol;
- DisplayScreen(NOUPDATE);
- end;
- end; { CTRLRIGHTKEY }
- HOMEKEY : begin
- CurRow := 1;
- CurCol := 1;
- LeftCol := 1;
- TopRow := 1;
- SetRightCol;
- SetBottomRow;
- DisplayScreen(NOUPDATE);
- end; { HOMEKEY }
- ENDKEY : begin
- CurCol := LastCol;
- RightCol := CurCol;
- BottomRow := LastRow;
- CurRow := BottomRow;
- SetTopRow;
- SetLeftCol;
- SetRightCol;
- DisplayScreen(NOUPDATE);
- end; { ENDKEY }
- UPKEY : MoveRowUp;
- DOWNKEY : MoveRowDown;
- LEFTKEY : MoveColLeft;
- RIGHTKEY : MoveColRight;
- else if Input in [' '..'~'] then
- GetInput(Input);
- end; { case }
- until Stop;
- end; { Run }
-
- begin
- CheckBreak := False;
- SetColor(TXTCOLOR);
- ClrScr;
- SetColor(MSGHEADERCOLOR);
- WriteXY(MSGHEADER, (80 - Length(MSGHEADER)) shr 1, 10);
- SetColor(PROMPTCOLOR);
- WriteXY(MSGKEYPRESS, (80 - Length(MSGKEYPRESS)) shr 1, 12);
- GotoXY(80, 25);
- Ch := GetKey;
- ClrScr;
- InitVars;
- Changed := False;
- RedrawScreen;
- if (ParamCount > 0) then
- LoadSheet(ParamStr(1));
- ClearInput;
- Run;
- SetColor(LightGray);
- TextMode(OldMode);
- SetCursor(OldCursor);
- end.