[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]