home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programming
/
powerprogramming1994.iso
/
progtool
/
microcrn
/
issue_44.arc
/
OR4.ARC
/
HELP.PAS
next >
Wrap
Pascal/Delphi Source File
|
1988-08-09
|
3KB
|
106 lines
{----------------------------------------------------------------------------}
var
Help_Text : array [1..100] of string;
const
Cur_Help_Line_No : integer = 1;
Help_Text_Ct : integer = 15;
const
Help_Menu_Msg : string =
'|(esc)@ -exit help menu |'#24'@ -up |'#25'@ -down';
{----------------------------------------------------------------------------}
procedure Load_Help_Text (FileName:string);
label Out;
var
i : integer;
In_File : text;
begin
fillchar(Help_Text, sizeof(Help_Text), #0);
{$I-}
assign(In_File, FileName);
reset(In_File);
{$I+}
if (IOResult <> 0) then begin
Msg_Line( 25, '^System Error - Missing Help Text File: "'+FileName+'"' );
goto Out;
end;
{Get Data from Input File:}
Help_Text_Ct := 0;
repeat
Help_Text_Ct := Help_Text_Ct + 1;
readln(In_File, Help_Text[Help_Text_Ct]);
until (eof(In_File) = TRUE) or (Help_Text_Ct >= 100);
close(In_File);
Out:
end; {Load_Help_Text}
{----------------------------------------------------------------------------}
procedure Help_Write(Msg:string);
var
i : integer;
c : char;
begin
Med_Video;
for i := 1 to length(Msg) do begin
c := Msg[i];
case c of
'^': High_Video;
'|': Rev_Video;
'@': Med_Video;
else write(c);
end; {end case}
end;
end; {Help_Write}
{----------------------------------------------------------------------------}
procedure Help_Menu(X,Y:integer; FileName,HelpHdrStr:string);
var
i,j : integer;
InChar : char;
Exit_Sw : integer;
begin
Load_Help_Text(FileName);
Msg_Line( 25, Help_Menu_Msg );
Draw_Window_Box (X,Y,60,10,'< '+HelpHdrStr+' >');
Set_Window_Area(X,Y,62,13);
for j := 1 to 10 do begin
gotoXY(2,j+1); Help_Write(Help_Text[j]);
end;
Exit_Sw := 0;
repeat
InChar := GetKey;
case InChar of
#222: begin {up arrow}
if (Cur_Help_Line_No > 1) then begin
Set_Window_Area(X+1,Y+1,60,10);
Cur_Help_Line_No := Cur_Help_Line_No - 1;
gotoXY(1,1); insline; {create blank line at top}
gotoXY(1,1); Help_Write(Help_Text[Cur_Help_Line_No]);
end;
end;
#230: begin {down arrow} {create blank line at bottom}
Set_Window_Area(X+1,Y+1,60,10);
if (Cur_Help_Line_No <= Help_Text_Ct - 10) then begin
Cur_Help_Line_No := Cur_Help_Line_No + 1;
gotoXY(1,1); delline;
gotoXY(1,10); Help_Write(Help_Text[Cur_Help_Line_No+9]);
end;
end;
#27: begin
Exit_Sw := 2;
end;
end; {end case}
until (Exit_Sw > 0);
end; {Help_System}
{----------------------------------------------------------------------------}