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>

Reply via email to