home *** CD-ROM | disk | FTP | other *** search
/ The Best of the Best / _.img / 02018 / twindow.inc < prev   
Text File  |  1987-07-07  |  2KB  |  63 lines

  1. (*****************************************************************************)
  2. (*             Window - Tool  V. 1.0  für Windows im Textmodus               *)
  3. (*****************************************************************************)
  4.  
  5. Const Fensteranzahl=3;
  6.  
  7. Type Bildschirmzeile =String[160];
  8.      Seite           =array[1..25] of Bildschirmzeile;
  9.      Zeiger          =^Bildschirmzeile;
  10.      String80        =String[80];
  11.  
  12. Var  Screen   : Array[1..Fensteranzahl] of Seite;
  13.      Screenadr: Zeiger absolute $b800:$0000; {bei Hercules $b000:$0000}
  14.  
  15. (*---------------------------------------------------------------------------*)
  16. procedure Rahmen(xo,yo,xu,yu:Integer);
  17. Var I,Ly,Lx  :Integer;
  18.     Zeile    :String[164];
  19.  
  20. begin
  21.   Ly:=yu-yo-1;
  22.   Lx:=xu-xo-1;
  23.   Fillchar (Zeile,Lx+1,205);
  24.   Fillchar (Zeile,1,Lx);
  25.   Gotoxy(xo,yo);
  26.   write(#201);
  27.   write(zeile);
  28.   write(#187);
  29.   gotoxy(xo,yu);
  30.   write(#200);
  31.   write(zeile);
  32.   write(#188);
  33.   for i:=1 to Ly do
  34.   begin
  35.     gotoxy(xo,I+yo);write(#186);
  36.     gotoxy(xu,i+yo);write(#186);
  37.   end;
  38. end;
  39. (*---------------------------------------------------------------------------*)
  40. Procedure Open_Window (Nr,xo,yo,xu,yu,vf,hf:Integer;
  41.                        Kopfz:String80);
  42. Var i,Pos:Integer;
  43.  
  44. begin
  45.   Move (Screenadr,Screen[Nr,1],4000); (*aktuellen Schirm speichern*)
  46.   Textcolor(vf);Textbackground(hf);
  47.   Rahmen(xo,yo,xu,yu); (*Rahmen in das Fenster zeichnen*)
  48.   if Kopfz <>'' then begin
  49.     Kopfz:='['+kopfz+']';
  50.     Pos:=trunc(0.5*(xo+xu-length(Kopfz)));
  51.     gotoxy(Pos,yo);
  52.     write(Kopfz);
  53.   end;
  54.   Window (xo+1,yo+1,xu-1,yu-1); (*Arbeitsbereich setzen*)
  55.   Clrscr;
  56. end;
  57. (*---------------------------------------------------------------------------*)
  58. Procedure Close_Window (Nr:Integer);
  59. begin
  60.   Move(Screen[Nr,1],Screenadr,4000); (* Alten Bildschirminhalt zurücksetzen*)
  61.   Window (1,1,80,25);
  62. end;
  63.