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>