[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]

    {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

     Program Name : EdPrint.Pas
     Written By   : Brad Prendergast
     E-Mail       : mrealm@ici.net
     Web Page     : http://www.ici.net/cust_pages/mrealm/BANDP.HTM
     Program
     Compilation  : Borland Turbo Pascal 7.0

     Program Description :
      This demonstration shows how to print the contents a TEditWindow. A
      TEditWindow  utilizes a TEditor, the main variables within the TEditor
      are buffer ( array[0..65516] of char; this is where the buffer stores the
      text contents of the window), curptr (word; this is the current position of
      the cursor in the buffer, gaplen (word; gap between the beginning and
      ending of the buffer) and buflen ( word; the number of characters within
      the buffer).  Once executed this demo will open an editor window.  Type
      data into this window and then select print from the menubar.  The output
      will be placed into a text file.  I developed this to print the contents
      of an active editor window to a printer, but for demo purposes it goes to
      a text file. Any comments/questions please e-mail me.

     =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}

      {This is the standard set of compiler directives I opt to use}
    {$define debug}
    {$define error_checking}
      {$ifdef error_checking}
        {$i+}  {l i/o checking            }
        {$q+}  {l overflow checking       }
        {$r+}  {l range checking          }
        {$s+}  {l stack overflow checking }
      {$else}
        {$i-}  {l i/o checking            }
        {$q-}  {l overflow checking       }
        {$r-}  {l range checking          }
        {$s-}  {l stack overflow checking }
      {$endif}
    {$undef error_checking}
      {$ifdef debug}
        {$d+}  {g debug information              }
        {$l+}  {g local symbol information       }
        {$y+}  {g symbolic reference information }
      {$else}
        {$d-}  {g debug information              }
        {$l-}  {g local symbol information       }
        {$y-}  {g symbolic reference information }
      {$endif}

    {$a+}  {g align data}
    {$b-}  {l short circuit boolean evaluation   }
    {$e-}  {g disable emulation                  }
    {$f+}  {l allow far calls                    }
    {$g+}  {g generate 80286 code                }
    {$n-}  {g disable numeric processing         }
    {$p+}  {g enable open parameters             }
    {$o+}  {g overlay                            }
    {$t-}  {g type @ operator                    }
    {$v+}  {l var string checking                }
    {$x+}  {g extended syntax enabled            }

      uses
        App, Editors, Memory, Objects, Menus, Views, Drivers;

    { -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- }

      const
        outfile = 'output.txt';
        cmprint = 101;

    { -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- }

      type
        TDemoApp = object (TApplication)
                 p       :  PEditWindow;
                 Constructor Init;
                 Procedure   InitMenuBar;Virtual;
                 Procedure   HandleEvent ( var event : Tevent);Virtual;
                 Procedure   PrintWindow;
                   end;

    { -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- }

      var
        Demoapp :  TDemoapp;

    { -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- }

      Constructor TDemoApp.Init;
        var
          r : Trect;
        Begin
          MaxHeapSize :=  2048;  (* for a  32k buffer for editors *)
          EditorDialog := StdEditorDialog;
          inherited init;
          GetExtent(r);
          p := New(PEditWindow, Init (r, '', 1));
          Insertwindow ( p );
        End;

    { -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- }

      Procedure TDemoApp.InitMenuBar;
        var
         r : TRect;
        Begin
          GetExtent ( r );
          r.b.y := r.a.y + 1;
              menubar := new ( PMenuBar, init ( r, newmenu (
          newsubmenu ( '~D~emo', hcnocontext, newmenu (
             newitem ( '~P~rint', '', kbnokey, cmprint, hcnocontext,
                    nil)) , nil ) )));
        End;

    { -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- }

      Procedure TDemoapp.HandleEvent ( var Event : TEvent);
        Begin
          Inherited HandleEvent ( event );
          if ( event.what = evcommand ) then
            begin
              case ( event.command ) of
                cmprint : PrintWindow;
              end;
            end;
          ClearEvent (event);
        End;

    { -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- }
      Procedure TDemoApp.PrintWindow;
        const
          fn = 'outfile.txt';
        var
          t     : text;
          count : longint;
          c : word;
        Begin
          Assign ( t, fn);
          Rewrite (t);
          count := -1;
          c := 0;
          Repeat
            inc (count, 1);
            inc ( c, 1 );
            if ( count = p^.editor^.curptr ) then count := count + p^.editor^.gaplen;
            write ( t, p^.editor^.buffer^[ count ]);
          Until ( c = p^.editor^.buflen );
          close (t);
        End;
    { -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- }

    Begin
      DemoApp.Init;
      DemoApp.Run;
      DemoApp.Done;
    End.

[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]