home *** CD-ROM | disk | FTP | other *** search
/ stazsoftware.com / www.stazsoftware.com.tar / www.stazsoftware.com / futurebasic / sample-code / SwitchingToFB.sit / storage_bin / Print.incl < prev    next >
Text File  |  2002-07-31  |  3KB  |  158 lines

  1. /*
  2.      These routines assume that all cells are of equal width
  3.      calculated from the constant _colCount in the .glbl file.
  4.  
  5.      All print routines assume that the printer is already 
  6.      selected (ROUTE _toPrinter). 
  7. */
  8.  
  9. /*
  10.      calc the rectangle for any cell
  11. */
  12.  
  13. LOCAL FN calcCellRect(row,col,@rPtr AS ^RECT)
  14. '~';
  15. DIM r AS RECT
  16. DIM ht,wd
  17. col --
  18. row --
  19. ht = USR FONTHEIGHT + 2
  20. r.top = row * ht
  21. r.bottom = r.top + ht
  22. wd = WINDOW(_width)\\_colCount
  23. r.left = col * wd
  24. r.right = r.left + wd
  25. BLOCKMOVE @r,rPtr,SIZEOF(RECT)
  26. END FN
  27.  
  28. /*
  29.      print the cell. if doFrame is non-zero
  30.      put a line along the bottom and righthand 
  31.      borders
  32. */
  33.  
  34. LOCAL FN printCell(row,col,cellText AS STR255,doFrame AS BOOLEAN)
  35. '~';
  36. DIM r AS RECT
  37. FN calcCellRect(row,col,r)
  38. DEF LBOX(r,cellText)
  39. LONG IF doFrame
  40. MOVETO (r.left     , r.top       )
  41. LINETO (r.right - 1, r.top       )
  42. MOVETO (r.left     , r.bottom - 1)
  43. LINETO (r.right - 1, r.bottom - 1)
  44. END IF
  45. END FN
  46.  
  47. /*
  48.      it's just a heading
  49. */
  50. LOCAL FN printHeading(pageNumber)
  51. '~';
  52. DIM r AS RECT
  53. DIM err
  54. DIM title AS STR255
  55.  
  56. err = FN USETHEMEFONT(_kThemeEmphasizedSystemFont,_smSystemScript)
  57. SETRECT(r,0,0,WINDOW(_width),USR FONTHEIGHT)
  58. title = gPref.reportTitle
  59.  
  60. LONG IF gPref.titleInfoFlags AND _includeDateMask
  61. title += SPACE$(25) + DATE$
  62. END IF
  63.  
  64. LONG IF gPref.titleInfoFlags AND _includePageNumber
  65. title += SPACE$(25) + "Page " + STR$(pageNumber)
  66. END IF
  67.  
  68. DEF CBOX(r,title)
  69.  
  70. FN printCell(2,1,"Name"           ,_zTrue)
  71. FN printCell(2,2,"Address"        ,_zTrue)
  72. FN printCell(2,3,"City, State ZIP",_zTrue)
  73. FN printCell(2,4,"Phone"          ,_zTrue)
  74.  
  75. err = FN USETHEMEFONT(_kThemeApplicationFont,_smSystemScript)
  76.  
  77. END FN = USR FONTHEIGHT * 2
  78.  
  79. /*
  80.      let 'er rip, 'tater chip
  81. */
  82.  
  83. LOCAL FN printReport
  84. '~';
  85. DIM t        AS STR255
  86. DIM count    AS LONG
  87. DIM @fileRef AS LONG
  88. DIM @recNum  AS LONG
  89. DIM row,pageNumber,pixelPos,ht,err
  90.  
  91. DEF LPRINT
  92. IF PRCANCEL THEN EXIT FN
  93.  
  94. LONG IF FN getRefNums(fileRef,recNum) = _noErr
  95. count = FN countRecords
  96. FN saveCurrentRecord
  97. pageNumber = 0
  98. row        = 1000
  99.  
  100. '~'6
  101. ROUTE _toPrinter
  102. err = FN USETHEMEFONT(_kThemeApplicationFont,_smSystemScript)
  103. ht = USR FONTHEIGHT + 2
  104. count --
  105.  
  106. FOR recNum = 0 TO count
  107.  
  108. LONG IF row + 1 * ht > WINDOW(_height)
  109.  
  110. LONG IF pageNumber
  111. ROUTE _toScreen
  112. CLEAR LPRINT
  113. ROUTE _toPrinter
  114. END IF
  115.  
  116. pageNumber ++
  117. FN printHeading(pageNumber)
  118. row = 3
  119. END IF
  120.  
  121. RECORD #fileRef,recNum
  122. READ #fileRef,gStorageBin
  123.  
  124. LONG IF gStorageBin.lastName <> "** Blank Record **"
  125.  
  126. //name
  127. t = gStorageBin.firstName + " " + gStorageBin.lastName
  128. FN printCell(row,1,t,_false)
  129.  
  130. // street address
  131. t = gStorageBin.address1
  132. LONG IF LEN(gStorageBin.address2)
  133. t += ", " + gStorageBin.address2
  134. END IF
  135. FN printCell(row,2,t,_false)
  136.  
  137. // city, state, zip
  138. t = gStorageBin.city + ", " + gStorageBin.state 
  139. t += " " + gStorageBin.zip
  140. FN printCell(row,3,t,_false)
  141.  
  142. // phone
  143. t = gStorageBin.phone
  144. FN printCell(row,4,t,_false)
  145.  
  146. row ++
  147. END IF
  148.  
  149. NEXT recNum
  150.  
  151. ROUTE _toScreen
  152. CLOSE LPRINT
  153.  
  154. '~'6
  155. END IF
  156.  
  157. END FN
  158.