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