home *** CD-ROM | disk | FTP | other *** search
- {
- A fragment to save a help context to disk/printer, in Turbo
- Vision 2.0:
-
- In HelpFile.PAS:
- }
-
- Uses ... , ... , Print;
-
- Type
-
- TSetup = Record
- HFIleName : String[80];
- OutTxt,
- Paper : Word;
- end;
-
- PHelpViewer = ^THelpViewer;
- THelpViewer = object(TScroller)
- HFile: PHelpFile;
- Topic: PHelpTopic;
- Selected: Integer;
- constructor Init(var Bounds: TRect; AHScrollBar,
- AVScrollBar: PScrollBar; AHelpFile: PHelpFile; Context: Word);
- destructor Done; virtual;
- procedure ChangeBounds(var Bounds: TRect); virtual;
- procedure Draw; virtual;
- function GetPalette: PPalette; virtual;
- procedure HandleEvent(var Event: TEvent); virtual;
- Procedure Print; {++++++ NEW +++++}
- end;
-
- Var
- Setup : TSetup;
-
- {--------Procedure THelpViewer.Print--------}
-
- procedure THelpViewer.Print;
- var
- I : Integer;
- F : Text;
- Dialog : PDialog;
- R : TRect;
- Control: PView;
- Ctrl,
- Modulo : Word;
- begin
- R.Assign(00, 00, 35, 15);
- Dialog := New(PDialog, Init(R, 'Save Help Context'));
- With Dialog^ do
- begin
- Options := Options or ofFramed or ofCentered;
- Setup.HFileName := 'HelpCtx.txt';
- R.Assign(3, 3, 32, 4);
- Control := New(PInputLine, Init(R, 80));
- Control^.Options := Control^.Options or ofFramed;
- Dialog^.Insert(Control);
-
- R.Assign(29, 3, 32, 4);
- Control := New(PHistory, Init(R, PInputline(Control), 3));
- Dialog^.Insert(Control);
-
- R.Assign(3, 2, 20, 3);
- Control := New(PLabel, Init(R, 'File Name:',Control));
- Dialog^.Insert(Control);
-
- Setup.OutTxt := $0;
- R.Assign(3, 6, 32, 7);
- Control := New(PRadioButtons, Init(R,
- NewSItem('Disk',
- NewSItem('Printer', Nil))));
- Control^.Options := Control^.Options or ofFramed;
- Dialog^.Insert(Control);
-
- R.Assign(3, 5, 13, 6);
- Control := New(PLabel, Init(R, 'Save to:', Control));
- Dialog^.Insert(Control);
-
- Setup.Paper := $00;
- R.Assign(3, 9, 32, 10);
- Control := New(PRadioButtons, Init(R,
- NewSItem('66 lines',
- NewSItem('72 lines', Nil))));
- Control^.Options := Control^.Options or ofFramed;
- Dialog^.Insert(Control);
-
- R.Assign(3, 8, 21, 9);
- Control := New(PLabel, Init(R, 'Paper:',Control));
- Dialog^.Insert(Control);
-
- R.Assign(3, 12, 13, 14);
- Control := New(PButton, Init(R, 'O~k~', cmOK, bfDefault));
- Dialog^.Insert(Control);
- R.Assign(21, 12, 31, 14);
- Control := New(PButton, Init(R, '~C~ancel', cmCancel, bfNormal));
- Dialog^.Insert(Control);
-
- Dialog^.SelectNext(False);
- end;
- Dialog^.SetData(Setup);
- Ctrl := Application^.ExecView(Dialog);
- If Ctrl <> cmCancel Then
- Begin
- Dialog^. GetData (Setup);
- Case Setup.OutTxt of
- $00 : Begin
- If Setup.HFileName = '' then Setup.HFileName := 'HlpCtx.txt';
- Assign(F, Setup.HFileName);
- Rewrite(F);
- For I := 1 to Topic^.NumLines do Writeln(F,Topic^.GetLine(I));
- Close(F);
- end;
- $01 : begin
- Case Setup.Paper of
- $00 : begin
- Modulo := 60;
- Write (Lst,Chr(27)+'C'+chr(66))
- end;
- $01 : begin
- Modulo := 66;
- Write (Lst,Chr(27)+'C'+chr(72))
- end;
- end;
- For I := 1 to Topic^.NumLines do
- begin
- Writeln(Lst,Topic^.GetLine(I));
- If I Mod Modulo = 0 then Write(Lst,#12);
- end;
- Write(Lst,#12);
- end
- end;
- end;
- end;
-
- {--------Procedure THelpViewer.HandleEvent---------}
- ........ fragment
- kbEnter:if Selected <= Topic^.GetNumCrossRefs then
- begin
- Topic^.GetCrossRef(Selected, KeyPoint, KeyLength, KeyRef);
- SwitchToTopic(KeyRef);
- end;
- kbAltSpace: +++ New +++
- begin +++ New +++
- Print; +++ New +++
- end +++ New +++
- else
- Exit;
- end;
- DrawView;
- ClearEvent(Event);
- .......... fragment