[Back to MISC SWAG index] [Back to Main SWAG index] [Original]
{
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
[Back to MISC SWAG index] [Back to Main SWAG index] [Original]