home *** CD-ROM | disk | FTP | other *** search
/ Best of German Only 1 / romside_best_of_german_only_1.iso / wissen / dos / wgraph / entpack.exe / WGDEMOQ!.EXE / GQUELL.PAS < prev    next >
Pascal/Delphi Source File  |  1992-12-25  |  2KB  |  108 lines

  1. {$A+,B-,D-,E-,F+,I-,L-,N-,O+,R-,S-,V-}
  2. UNIT GQuell;
  3.  
  4. INTERFACE
  5.  
  6. USES GDecl,
  7.      GViews,
  8.      GDlg,
  9.      GDrivers,
  10.      GText,
  11.      Graph;
  12.  
  13. type PNewScroller=^TNewScroller;
  14.  
  15.      PScrollWindow=^TScrollWindow;
  16.      TScrollWindow=object(TWindow)
  17.        Scroller:PNewScroller;
  18.        Nr      :byte;
  19.        constructor Init(var Bounds:TRect;nn:byte;ATitle:str80;AType:byte);
  20.        procedure InitWindowScroller; virtual;
  21.        destructor Done; virtual;
  22.      end;
  23.  
  24.      TNewScroller=object(TScroller)
  25.        procedure CreateData(DateiName:string);
  26.        procedure ScrollDraw; virtual;
  27.      end;
  28.  
  29.  
  30. IMPLEMENTATION
  31.  
  32. {Implementation TScrollWindow}
  33.  
  34. constructor TScrollWindow.Init(var Bounds:TRect;nn:byte;ATitle:str80;AType:byte);
  35. begin
  36.   Nr:=nn;
  37.   TWindow.Init(Bounds,ATitle,AType);
  38. end;
  39.  
  40. procedure TScrollWindow.InitWindowScroller;
  41. var R:TRect;
  42.     i:byte;
  43.     SBH1,SBV1:PScrollBar;
  44. begin
  45.   R:=Frame^.Area;
  46.   SBH1:=new(PScrollBar, Init(R,HorizDir));
  47.   SBV1:=new(PScrollBar, Init(R,VertDir));
  48.   Scroller:=new(PNewScroller, Init(R,SBH1,SBV1));
  49.   if Nr=1 then Scroller^.CreateData('WGDEMO.TXT');
  50.   if Nr=2 then Scroller^.CreateData('WGDEMO.PAS');
  51.   List^.InsertItem(Scroller);
  52. end;
  53.  
  54. destructor TScrollWindow.Done;
  55. begin
  56.   TWindow.Done;
  57.   dispose(Scroller, Done);
  58. end;
  59.  
  60. {Implementation TNewScroller}
  61.  
  62. procedure TNewScroller.CreateData(DateiName:string);
  63. var f:text;
  64.     LfdPtr:PLine;
  65. begin
  66.   assign(f,DateiName);
  67.   reset(f);
  68.   while not EOF(f) do
  69.    begin
  70.      LfdPtr:=new(PLine, Init);
  71.      readln(f,LfdPtr^.Eintrag);
  72.      Liste^.InsertItem(LfdPtr);
  73.    end;
  74.   SetLimit(25,Liste^.AnzElem-1,8,16);
  75. end;
  76.  
  77. procedure TNewScroller.ScrollDraw;
  78. var i:integer;
  79.     LfdPtr:PGroup;
  80.  
  81. function clip(p,n:byte;z:string):string;
  82. begin
  83.   clip:=copy(z,p,n);
  84. end;
  85.  
  86. begin
  87.   Mouse.HideMouse;
  88.   with Border do
  89.    begin
  90.      SetFillStyle(SolidFill,GetPalColor(1));
  91.      SetColor(GetPalColor(2));
  92.      for i:=Delta.y to WDelta.y do
  93.       begin
  94.         LfdPtr:=Liste^.GetItems(i);
  95.         Bar(A.x,A.y+(i-Delta.y)*Py+10,B.x,A.y+(i-Delta.y)*Py+10+Py);
  96.         WriteText(A.x+20,A.y+(i-Delta.y)*Py+10,clip(Delta.x,Spalten*8 div 8-5,PLine(LfdPtr)^.Eintrag));
  97.       end;
  98.      if VertiScrollBar<>nil then
  99.       for i:=(WDelta.y-Delta.y)+1 to Zeilen do
  100.        Bar(A.x,A.y+i*Py+10,B.x,A.y+i*Py+10+Py);
  101.    end;
  102.   Mouse.ShowMouse;
  103. end;
  104.  
  105.  
  106.  
  107.  
  108. END.