I'd fully support the idea of the printer object, it sounds good for
me. But may I submit a proposal to add values for choosing printer
extensions like :
- a paper tray selector to tell the printer to get the paper from
tray 2 if you have more than one tray installed
- duplexer activation to tell the printer to print on both sides of
the sheet
- output tray selector if you have more output trays installed than one
- and to allow access to other options from code...
I create tools for a larger pharmaceutical company and their trend is
to use networked office printers instead of desktop printers, so i.e.
a xerox copystation has all those options (even an old lexmark optra
s 1855 I have at my desk has them...) and currently I need to show up
a printer dialog to the user so that he/she manually selects the
options necessary each time (which means lost time before the print
job could be sent, each time you sent a print job) and since all the
parameters could be accessed from the printer dialog I assume it
would not be a too much complicated job for Real Software to make
these parameters accessible from the code as new printer object
parameters or as an overloaded printerobject.open(sourcetray as
integer, outputtray as integer, duplexer as boolean, stitch as
integer) for example.
Maybe you think now that this is a minor issue...
I already sold a tool to another company where I had to install four
printers at their shipping department to create the invoice on their
pre-printed letter paper, to create the shipping documents on the
papers from the shipping company, to create a RMD form with attached
adhesive return-address-label and to print one form on a plain paper
for internal usage... think about 500 parcels to be prepared each
day, and 500 x 4 times selecting the appropriate printer tray if you
would have an "old-fashioned" lexmark optra s with 4 printer trays
capable of holding 500 sheets per tray...
I also had another job to create a workshop tool to keep track of
people attending the workshop, about the lessions they booked etc...
people came to the entrance of the workshop location, they told their
name to the guys at the reception desk and they printed out their
registration, a formal confirmation of participation, and a sheet of
more stable paper with a rip-off badge and information on how to find
to the class rooms - the guys at the reception had one printer per
desk and they needed to select between pre-printed paper and the
stable paper which was prepared for ripping of the personal badge -
manually, each time. we had about 300 people attending the workshops
each time we made one...
What do you think ?
Kind regards,
Oliver
Am 04.01.2007 um 02:57 schrieb William Squires:
On Jan 3, 2007, at 11:29 AM, Jayson Garrett wrote:
[snip]
2. The inclusion of a built-in data-aware banded report writer
would radically simplify my life, and I suspect that of a great
many people. I know this can be done with third-party plugins, but
I think something as basic as this needs to be included in a tool
that aspires to be a rapid-development environment. Such a
facility should also have the ability to output its reports to
printers, PDF, HTML, and possibly plain text.
Or how about a simplified (or - at least - simpler to use)
printing model. I imagine it would:
* have a System.Printers object that would be an iterable container
of available printers (and print-modes that simulate printers, such
as the OS X ability to print-to-PDF)
* a Printer object (from the above System.Printers container) that
would have
1) an Open() and Close() method (i.e. you call .Open(), print
what you want to it, then call .Close() to send the 'sheet' to the
actual printer)
2) User scalable 'printing grid' (in pixels, picas, inches, cm,
and characters - this last though would only be accurate as long as
the font size/style wasn't changed in between .Open() and .Close()
calls)
3) a Color property that can get/set the current printing color. Ex:
Dim c As Color
...
c = myPrinter.Color(rbForeGroundColor)
// or
c = myPrinter.Color(rbBackGroundColor)
...
myPrinter.Color(rbForeGroundColor) = rbRed
myPrinter.Color(rbBackGroundColor) = &cFFFF00 // yellow
and an Invert() method which would flip the currently assigned
foreground and background colors (call again to revert to the
original.)
4) a Locate(Integer, Integer) method which would position the
'cursor' so that the next character would "print" on the sheet at
the specified coordinates of the printing grid, based on the scale.
This would have a companion HorizVert property that - if true -
indicates it expects the two arguments to be the column, then row.
If false, then the row value comes first (like in the older MS
QuickBasic)
5) a Get(Integer, Integer) method which would retrieve the
character at that position (accurate only as long as; 1) no
character has over-printed at that location, and 2) the grid size/
scale remain constant between the time you set the grid size/scale,
and the time you make the Get() call.)
6) a Sheet property (of type Graphics; same as the 'g As
Graphics' in a Paint() event) so you could do fancy things like add
colored lines for a custom report.
7) a Print(String, Variant) method. The String parameter would be
a print specifier (a-la C/C++ printf() function), and the Variant
would be the variable to be printed using the print specifier.
Prints at the current 'cursor' location. The overloaded Print
(String, Variant, Boolean) method would allow you to choose whether
text wraps around, or is truncated at the right margin.
8) an Input(String, String) As String method. Ex:
Dim userName As String
// code to setup the 'printer'
userName = myPrinter.Input("Type your User Name in the field",
"Username:")
this would cause a message box to appear whose TitleBar's
caption would be the 1st parameter's value, and would display a
StaticText just to the left of an EditField, and finally an "OK"
button. The StaticText's caption would be the value of the 2nd
parameter (the prompt string), and whatever was typed in would be
returned as the result of the function call. The prompt string,
plus the user's response would be printed to the 'sheet' much like
the older BASIC Input statement.
9) the resulting Printer object's 'Sheet' property could also be
used as an off-screen buffer and copied to the 'g As Graphics'
object in a Canvas's Paint() event.
10) a 'Width' and 'Height' property that would return the correct
values based on the current printing scale of the grid (so you
could figure out how many character would fit across using Courier
12 Normal, for example)
3. In addition to POP3 and SMTP, the inclusion of email classes
for the IMAP protocol.
_______________________________________________
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>
_______________________________________________
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>
_______________________________________________
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>