home *** CD-ROM | disk | FTP | other *** search
- {$A+,B-,D-,E-,F+,I-,L-,N-,O+,R-,S-,V-}
- UNIT GQuell;
-
- INTERFACE
-
- USES GDecl,
- GViews,
- GDlg,
- GDrivers,
- GText,
- Graph;
-
- type PNewScroller=^TNewScroller;
-
- PScrollWindow=^TScrollWindow;
- TScrollWindow=object(TWindow)
- Scroller:PNewScroller;
- Nr :byte;
- constructor Init(var Bounds:TRect;nn:byte;ATitle:str80;AType:byte);
- procedure InitWindowScroller; virtual;
- destructor Done; virtual;
- end;
-
- TNewScroller=object(TScroller)
- procedure CreateData(DateiName:string);
- procedure ScrollDraw; virtual;
- end;
-
-
- IMPLEMENTATION
-
- {Implementation TScrollWindow}
-
- constructor TScrollWindow.Init(var Bounds:TRect;nn:byte;ATitle:str80;AType:byte);
- begin
- Nr:=nn;
- TWindow.Init(Bounds,ATitle,AType);
- end;
-
- procedure TScrollWindow.InitWindowScroller;
- var R:TRect;
- i:byte;
- SBH1,SBV1:PScrollBar;
- begin
- R:=Frame^.Area;
- SBH1:=new(PScrollBar, Init(R,HorizDir));
- SBV1:=new(PScrollBar, Init(R,VertDir));
- Scroller:=new(PNewScroller, Init(R,SBH1,SBV1));
- if Nr=1 then Scroller^.CreateData('WGDEMO.TXT');
- if Nr=2 then Scroller^.CreateData('WGDEMO.PAS');
- List^.InsertItem(Scroller);
- end;
-
- destructor TScrollWindow.Done;
- begin
- TWindow.Done;
- dispose(Scroller, Done);
- end;
-
- {Implementation TNewScroller}
-
- procedure TNewScroller.CreateData(DateiName:string);
- var f:text;
- LfdPtr:PLine;
- begin
- assign(f,DateiName);
- reset(f);
- while not EOF(f) do
- begin
- LfdPtr:=new(PLine, Init);
- readln(f,LfdPtr^.Eintrag);
- Liste^.InsertItem(LfdPtr);
- end;
- SetLimit(25,Liste^.AnzElem-1,8,16);
- end;
-
- procedure TNewScroller.ScrollDraw;
- var i:integer;
- LfdPtr:PGroup;
-
- function clip(p,n:byte;z:string):string;
- begin
- clip:=copy(z,p,n);
- end;
-
- begin
- Mouse.HideMouse;
- with Border do
- begin
- SetFillStyle(SolidFill,GetPalColor(1));
- SetColor(GetPalColor(2));
- for i:=Delta.y to WDelta.y do
- begin
- LfdPtr:=Liste^.GetItems(i);
- Bar(A.x,A.y+(i-Delta.y)*Py+10,B.x,A.y+(i-Delta.y)*Py+10+Py);
- WriteText(A.x+20,A.y+(i-Delta.y)*Py+10,clip(Delta.x,Spalten*8 div 8-5,PLine(LfdPtr)^.Eintrag));
- end;
- if VertiScrollBar<>nil then
- for i:=(WDelta.y-Delta.y)+1 to Zeilen do
- Bar(A.x,A.y+i*Py+10,B.x,A.y+i*Py+10+Py);
- end;
- Mouse.ShowMouse;
- end;
-
-
-
-
- END.