Contributor: ANGELO RODRIGUES
{
 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


AltStyle によって変換されたページ (->オリジナル) /