Harrie,

Will this work for Windows Based RB2005+ Pro?

As this is the system I am working on now.

Thanks

Jonathon

----- Original Message ----- From: "Harrie Westphal" <[EMAIL PROTECTED]>
To: "REALbasic NUG" <[email protected]>
Sent: Saturday, March 11, 2006 11:02 AM
Subject: Re: PC Printing Issues -- adding a footer to the bottom of the page



On Mar 10, 2006, at 9:16 PM, Matt Denton wrote:

On the Mac this seems to work, on the PC the footer block comes up as what seems to be 2 point text -- very very small -- and out of alignment. I guess it has something to do with the DPI setting of the printer and an incompatibility between the two calls, perhaps the drawstring uses a different setting? Perhaps there is a better way?

I have gotten in the habit of always opening a printer to have the maximum resolution possible as shown in the following method for Page Setup.

Function doPageSetup() As Boolean
  Dim ok As Boolean
  Dim newPref,s As String
  gPS=new PrinterSetup
  if gPS=nil then
s="Unable to create printerSetup class in doPageSetup method of in wStart window. " _ +"Allocating more memory to this program may correct the problem; but or now " _
    +"the program must quit."
    beep
    msgBox s
    quit
  end if
  if gPSSettings<>"" then
    gPS.setupString=gPSSettings
  end if
  gPS.maxVerticalResolution=-1  // allow maximum resolution of printer
  gPS.maxHorizontalResolution=-1
  ok=gPS.PageSetupDialog
  if ok then
    gPSSettings=gPS.setupString
    gxSF=gPS.horizontalResolution/72  // horizontal scale factor
    gySF=gPS.verticalResolution/72  // vertical scale factor
    updatePref("prtsettings",gPSSettings)
  end if
  return ok
End Function

You can see that I am asking for the printers maximum resolutionNotice near the bottom the calculation of two global variables, gxSF and gySF. These are the vertical and horizontal scaling factors that I then use in any printing methods where I am doing the printing with any of the "Draw" methods of the graphics object.

The following is code that will typically appear at the start of a method that is doing the printing.

  headSize=12*gySF  // heading size scaled for printer resolution
  normSize=9*gySF  // normal size scaled for printer resolution
  pgCenter=pg.width/2  // center of the page
  pg.penHeight=1*gySF
  pg.penWidth=1*gxSF
  pg.TextFont=kFontName
  pg.TextSize=headSize  // heading at 12pt

HeadSize and normSize are the two font sizes I will be using on this page, each of these are multiplied by the scaling factor from the Page Setup method. Also the penHeight and penWidth are multiplied by this scaling factor. Always doing things this way I have experienced little problem printing on either platform; however, I will admit that the majority of my work is done a the Mac.

Here, to center the date on the page I use the code:

  x=pgCenter-pg.StringWidth(dateOut)/2
  pg.drawString dateOut,x,y

Where early on I had set the pgCenter to be the position of the center of the page and now I subract one half of the width of the string to be printed from that value and have x for positioning the output.

Once the scaling factors have been set, to move down to the next line I just set

 y = y + pg.textHeight

 or

y = y + pg.textHeight*2

to double space.

I hope this helps.

=== A Mac addict in Tennessee ===

_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>




--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 268.2.1/279 - Release Date: 3/10/2006





--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 268.2.1/279 - Release Date: 3/10/2006

_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to