home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / microcrn / issue_44.arc / OR4.ARC / HELP.PAS next >
Pascal/Delphi Source File  |  1988-08-09  |  3KB  |  106 lines

  1. {----------------------------------------------------------------------------}
  2. var
  3.    Help_Text : array [1..100] of string;
  4.  
  5. const
  6.    Cur_Help_Line_No : integer = 1;
  7.    Help_Text_Ct : integer = 15;
  8.  
  9. const
  10.    Help_Menu_Msg : string =
  11. '|(esc)@ -exit help menu   |'#24'@ -up   |'#25'@ -down';
  12.  
  13. {----------------------------------------------------------------------------}
  14. procedure  Load_Help_Text  (FileName:string);
  15. label Out;
  16. var
  17.    i : integer;
  18.    In_File : text;
  19.  
  20. begin
  21.    fillchar(Help_Text, sizeof(Help_Text), #0);
  22.    {$I-}
  23.    assign(In_File, FileName);
  24.    reset(In_File);
  25.    {$I+}
  26.    if (IOResult <> 0) then begin
  27.       Msg_Line( 25, '^System Error - Missing Help Text File: "'+FileName+'"' );
  28.       goto Out;
  29.    end;
  30.  
  31.    {Get Data from Input File:}
  32.    Help_Text_Ct := 0;
  33.    repeat
  34.       Help_Text_Ct := Help_Text_Ct + 1;
  35.       readln(In_File, Help_Text[Help_Text_Ct]);
  36.    until (eof(In_File) = TRUE) or (Help_Text_Ct >= 100);
  37.  
  38.    close(In_File);
  39. Out:
  40. end;  {Load_Help_Text}
  41.  
  42. {----------------------------------------------------------------------------}
  43. procedure  Help_Write(Msg:string);
  44. var
  45.    i : integer;
  46.    c : char;
  47. begin
  48.    Med_Video;
  49.    for i := 1 to length(Msg) do begin
  50.       c := Msg[i];
  51.       case c of
  52.       '^': High_Video;
  53.       '|': Rev_Video;
  54.       '@': Med_Video;
  55.       else write(c);
  56.       end;  {end case}
  57.    end;
  58. end;  {Help_Write}
  59.  
  60. {----------------------------------------------------------------------------}
  61. procedure  Help_Menu(X,Y:integer; FileName,HelpHdrStr:string);
  62. var
  63.    i,j : integer;
  64.    InChar : char;
  65.    Exit_Sw : integer;
  66. begin
  67.    Load_Help_Text(FileName);
  68.    Msg_Line( 25, Help_Menu_Msg );
  69.    Draw_Window_Box (X,Y,60,10,'< '+HelpHdrStr+' >');
  70.    Set_Window_Area(X,Y,62,13);
  71.  
  72.    for j := 1 to 10 do begin
  73.       gotoXY(2,j+1);  Help_Write(Help_Text[j]);
  74.    end;
  75.  
  76.    Exit_Sw := 0;
  77.    repeat
  78.       InChar := GetKey;
  79.  
  80.       case InChar of
  81.       #222: begin   {up arrow}
  82.                if (Cur_Help_Line_No > 1) then begin
  83.                   Set_Window_Area(X+1,Y+1,60,10);
  84.                   Cur_Help_Line_No := Cur_Help_Line_No - 1;
  85.                   gotoXY(1,1); insline;  {create blank line at top}
  86.                   gotoXY(1,1); Help_Write(Help_Text[Cur_Help_Line_No]);
  87.                end;
  88.             end;
  89.       #230: begin   {down arrow}   {create blank line at bottom}
  90.                Set_Window_Area(X+1,Y+1,60,10);
  91.                if (Cur_Help_Line_No <= Help_Text_Ct - 10) then begin
  92.                   Cur_Help_Line_No := Cur_Help_Line_No + 1;
  93.                   gotoXY(1,1); delline;
  94.                   gotoXY(1,10); Help_Write(Help_Text[Cur_Help_Line_No+9]);
  95.                end;
  96.             end;
  97.       #27:  begin
  98.                Exit_Sw := 2;
  99.             end;
  100.       end;  {end case}
  101.    until (Exit_Sw > 0);
  102. end;  {Help_System}
  103. {----------------------------------------------------------------------------}
  104.  
  105.  
  106.