home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / PROGRAMS / SPREDSHT / QSOLVE11.LBR / QS2.IZC / QS2.INC
Text File  |  2000-06-30  |  3KB  |  118 lines

  1.  
  2. procedure ShowStr(C,R: integer; Text: str80);
  3. var
  4.   L: integer;
  5. begin
  6.   if (CType=2) or (CForm=3) then Gon;
  7.   gotoxy(XCol(C),(R-CR)+2);
  8.   if (C in [SC..FC]) and (R in [SR..FR]) and (not Hide) then
  9.   begin
  10.     while ord(Text[0])<CWidth[C] do Text:=Text+' ';
  11.     HighVideo;
  12.     write(copy(Text,1,CWidth[C]));
  13.     LowVideo;
  14.   end else
  15.     write(copy(Text,1,CWidth[C]));
  16.   if (CType=2) or (CForm=3) then Goff;
  17. end;
  18.  
  19. function CellText(C,R: integer): str80;
  20. var
  21.   S1:    string[20];
  22.   P,L,M: integer;
  23. begin
  24.   GetCell(C,R);
  25.   Case CType of
  26.     3,13:
  27.        begin
  28.          S:='';
  29.          str(CForm:3,TS);
  30.          if TS[3]='0' then
  31.          begin
  32.            if abs(CVal)>=1E+12 then
  33.              CVal:=0;
  34.            str(CVal,S1);
  35.            S:='';
  36.            while S1[1]=' ' do delete(S1,1,1);
  37.            for L:=1 to ord(S1[0])-4 do
  38.            begin
  39.              if S1[L] in ['0'..'9'] then
  40.                S:=S+S1[L];
  41.            end;
  42.            while S[ord(S[0])]='0' do S[0]:=chr(ord(S[0])-1);
  43.            L:=ord(S1[0]);
  44.            M:=(ord(S1[L-1])-48)*10+(ord(S1[L])-48);
  45.            if S1[L-2]='-' then M:=-M;
  46.            while M<0 do
  47.            begin
  48.              M:=M+1;
  49.              S:='0'+S;
  50.            end;
  51.            while Succ(M)>Ord(S[0]) do S:=S+'0';
  52.            if M+2<=ord(S[0]) then
  53.              insert('.',S,M+2);
  54.            if CVal<0 then S:='-'+S;
  55.          end;
  56.          if TS[3]='1' then
  57.          begin
  58.            if abs(CVal)>=1E+6 then
  59.              CVal:=0;
  60.            Str(CVal:10:2,S);
  61.            while (S[1]=' ') do delete(S,1,1);
  62.          end;
  63.          if TS[3]='2' then Str(CVal,S);
  64.          if TS[3]='3' then
  65.          begin
  66.            if (CVal<0)   then CVal:=0;
  67.            if (CVal>255) then CVal:=255;
  68.            if Ch=^P then Ch1:='#' else Ch1:='#';
  69.            for Temp:=1 to Trunc(CVal) do S:=S+Ch1;
  70.          end;
  71.          if TS[3] in ['1','2'] then
  72.          begin
  73.            if TS[2]='3' then
  74.              S:=S+'#'
  75.            else
  76.            if TS[2]='2' then
  77.              S:=S+'%'
  78.            else
  79.            if TS[2]='1' then
  80.              S:='$'+S;
  81.          end;
  82.          if CForm=3 then CText:=S
  83.          else
  84.          begin
  85.            if TS[1]<='2' then
  86.            begin
  87.              Temp:=Ord(S[0]);
  88.              if TS[1]='1' then
  89.                for L:=1 to (CWidth[C] div 2)-(Temp div 2) do S:=' '+S;
  90.              if TS[1]=' ' then
  91.                for L:=Succ(Temp) to CWidth[C] do S:=' '+S;
  92.              CText:=S;
  93.            end;
  94.          end;
  95.        end;
  96.   end;
  97.   CellText:=CText;
  98. end;
  99.  
  100. procedure ShowCells;
  101. var
  102.   C,R: integer;
  103. begin
  104.   for R:=CR to CR+20 do
  105.   begin
  106.     gotoxy(4,(R-CR)+2);
  107.     ClrEol;
  108.     for C:=CC to CC+Pred(CRight) do
  109.       if CA[C,R]<>0 then
  110.         ShowStr(C,R,CellText(C,R))
  111.           else
  112.         begin
  113.           if (C in [SC..FC]) and (R in [SR..FR]) then
  114.             ShowStr(C,R,'');
  115.         end;
  116.   end;
  117. end;
  118.