Dec 102017
Excellent group of user interface routines for dBase III. WIth source. | |||
---|---|---|---|
File Name | File Size | Zip Size | Zip Type |
BIGBOXDT.PRG | 801 | 316 | deflated |
BOXCLEAR.PRG | 315 | 167 | deflated |
DB3STOCK.DOC | 19711 | 6983 | deflated |
DB3STOCK.OBJ | 6954 | 2647 | deflated |
DB3STOCK.SKL | 11601 | 2203 | deflated |
DB3STOCK.TXT | 15751 | 3713 | deflated |
DLINBOXB.PRG | 545 | 237 | deflated |
DLINBOXM.PRG | 545 | 237 | deflated |
DLINBOXT.PRG | 544 | 235 | deflated |
GETFLD23.PRG | 532 | 301 | deflated |
LINCOUNT.PRG | 845 | 339 | deflated |
LINEBOX.PRG | 228 | 66 | deflated |
LINEBOXM.PRG | 527 | 226 | deflated |
LINMSG23.PRG | 426 | 244 | deflated |
LINPRM23.PRG | 642 | 342 | deflated |
PASSWERD.PRG | 2368 | 832 | deflated |
PRTMSG23.PRG | 356 | 186 | deflated |
SLINBOXB.PRG | 545 | 236 | deflated |
SLINBOXM.PRG | 545 | 237 | deflated |
SLINBOXT.PRG | 542 | 234 | deflated |
SMALLBOX.PRG | 417 | 163 | deflated |
Download File DB3STOCK.ZIP Here
Contents of the DB3STOCK.DOC file
As programmers, we all have several creative problem-solving routines we have
written for clients that we like to brag about -- they were clever, compact,
and tight. They might have even compiled and run perfectly the first time.
But let's face it -- writing meaningful, consistent user interfaces with
exceptional attention to thorough error-trapping takes a lot of TIME, perhaps
even the most time we spend in the actual coding development and code writing
process. It certainly increases the bulkiness of our code (by way of many
K-bytes of TEXT data structures).
But this aspect of programming -- user interface --is the singularly most
important determining factor of client satisfaction. As a maintenance
programmer, I have been apalled at the abject lack of user interfaces. In
one situation, the previous coder before me wrote coder before me wrote no
code to give the user any status messages indicating what was happening
when the user was finished working with data. i.e., "Saving the new data to
disk", "Deleting your record from the file", etc.). The little red light
on the drive may have come on, but what was happening was anyone's guess.
When an internal error from an error trap was encountered, there were often
no messages -- simply a return to the previous calling menu before the error.
Apparently, the user was supposed know what error had been committed. Even
worse, some of the important data input was not error-trapped that could
overwrite data in an unintended record, or simply crash the program.
In virtually EVERY maintenance program I have ever worked on, I have been
absolutely shocked at the AUSTERITY of the input screens I have seen. There
is no regard for the fact that clients have to look at that screen, perhaps
as often as long as eight full hours EVERY WORKING DAY. If the screen is
dull and unattractive, how long do you think it will be before they start
making mistakes--and then blaming YOU, the programmer, for data crashes???
The recently vast improving user interfaces in commercially available general-
user software (word processors, database managers, spreadsheets) makes
inexcusable this "let's-continue-the-awe-about-computers-and-programming-
with-mystery" fashion of doing business with a client. I predict in a few
years anyone thinking that nothing less than absolutely superior user
interfaces --including top-notch, attractive screens-- for a common end user
will render that individual unemployable in programming. And since dbaseIII
handles much of our file handling activities with single lines of code and/or
commands, there is now more time for programmers to spend more of their
precious time with good user interface development.
To that end, then, I have developed some simple, yet extremely useful
subroutines that can be used almost as meta-commands. It makes development
a lot simpler.
This DB3STOCK.ARC file contains the following files:
DB3STOCK.DOC -- this (introductory) file
bigboxdt.prg -- A simple "MAIN MENU" type, graphics-drawn box that centers,
highlights, and displays a header message at the top inside
line of the box, and then displays the date and time at the
left and right sides of the box, respectively.
boxclear.prg -- A routine that clears the inside of BIGBOXDT without having
to clear the screen and redraw it. This is helpful for
continuous LISTs or DISPLAYs of data. The starting line of
the clearing procedure is defined by the numeric variable
LN, and it is helpful to have it user defineable BEFORE ent-
ering the routine, as you may have subheaders towards the
top of the screen that you do NOT want to erase and redraw.
smallbox.prg -- A routine that creates a smaller box on the screen. Useful
for help screens or flagging important data entry.
slinboxm.prg -- A routine that draws a single line box in the middle of the
screen, and then centers, highlights and displays a user-
defined message (MSG) inside the box.
slinboxt.prg -- A routine that draws a single line box at the top of the
screen, and then centers, highlights and displays a user-
defined message (MSG) inside the box.
slinboxb.prg -- A routine that draws a single line box at the bottom of the
screen, and then centers, highlights and displays a user-
defined message (MSG) inside the box.
dlinboxm.prg -- These three programs are indentical to their "SLINBOXx" sub-
dlinboxt.prg -- routines above, with the exception that they use a double
dlinboxb.prg -- line graphic-oriented box instead of the single line box.
linprm23.prg -- This is a metacommand that will save no ends of programming,
particularly where multiple branches are about to occur. Let's
take an example: you have displayed a screen of data from a
file record. The decision list is as follows:
"dddit elete ext
written for clients that we like to brag about -- they were clever, compact,
and tight. They might have even compiled and run perfectly the first time.
But let's face it -- writing meaningful, consistent user interfaces with
exceptional attention to thorough error-trapping takes a lot of TIME, perhaps
even the most time we spend in the actual coding development and code writing
process. It certainly increases the bulkiness of our code (by way of many
K-bytes of TEXT data structures).
But this aspect of programming -- user interface --is the singularly most
important determining factor of client satisfaction. As a maintenance
programmer, I have been apalled at the abject lack of user interfaces. In
one situation, the previous coder before me wrote coder before me wrote no
code to give the user any status messages indicating what was happening
when the user was finished working with data. i.e., "Saving the new data to
disk", "Deleting your record from the file", etc.). The little red light
on the drive may have come on, but what was happening was anyone's guess.
When an internal error from an error trap was encountered, there were often
no messages -- simply a return to the previous calling menu before the error.
Apparently, the user was supposed know what error had been committed. Even
worse, some of the important data input was not error-trapped that could
overwrite data in an unintended record, or simply crash the program.
In virtually EVERY maintenance program I have ever worked on, I have been
absolutely shocked at the AUSTERITY of the input screens I have seen. There
is no regard for the fact that clients have to look at that screen, perhaps
as often as long as eight full hours EVERY WORKING DAY. If the screen is
dull and unattractive, how long do you think it will be before they start
making mistakes--and then blaming YOU, the programmer, for data crashes???
The recently vast improving user interfaces in commercially available general-
user software (word processors, database managers, spreadsheets) makes
inexcusable this "let's-continue-the-awe-about-computers-and-programming-
with-mystery" fashion of doing business with a client. I predict in a few
years anyone thinking that nothing less than absolutely superior user
interfaces --including top-notch, attractive screens-- for a common end user
will render that individual unemployable in programming. And since dbaseIII
handles much of our file handling activities with single lines of code and/or
commands, there is now more time for programmers to spend more of their
precious time with good user interface development.
To that end, then, I have developed some simple, yet extremely useful
subroutines that can be used almost as meta-commands. It makes development
a lot simpler.
This DB3STOCK.ARC file contains the following files:
DB3STOCK.DOC -- this (introductory) file
bigboxdt.prg -- A simple "MAIN MENU" type, graphics-drawn box that centers,
highlights, and displays a header message at the top inside
line of the box, and then displays the date and time at the
left and right sides of the box, respectively.
boxclear.prg -- A routine that clears the inside of BIGBOXDT without having
to clear the screen and redraw it. This is helpful for
continuous LISTs or DISPLAYs of data. The starting line of
the clearing procedure is defined by the numeric variable
LN, and it is helpful to have it user defineable BEFORE ent-
ering the routine, as you may have subheaders towards the
top of the screen that you do NOT want to erase and redraw.
smallbox.prg -- A routine that creates a smaller box on the screen. Useful
for help screens or flagging important data entry.
slinboxm.prg -- A routine that draws a single line box in the middle of the
screen, and then centers, highlights and displays a user-
defined message (MSG) inside the box.
slinboxt.prg -- A routine that draws a single line box at the top of the
screen, and then centers, highlights and displays a user-
defined message (MSG) inside the box.
slinboxb.prg -- A routine that draws a single line box at the bottom of the
screen, and then centers, highlights and displays a user-
defined message (MSG) inside the box.
dlinboxm.prg -- These three programs are indentical to their "SLINBOXx" sub-
dlinboxt.prg -- routines above, with the exception that they use a double
dlinboxb.prg -- line graphic-oriented box instead of the single line box.
linprm23.prg -- This is a metacommand that will save no ends of programming,
particularly where multiple branches are about to occur. Let's
take an example: you have displayed a screen of data from a
file record. The decision list is as follows:
"dd
revious
Merely define the variable "MSG" as the text in quotes above.
Define the variable "TEST" as the string literal :"AEDNPX" .
Define TZ as " ". Now the next line of code would be "DO
LINPRM23". The routine centers, highlights and displays the
text and waits for the ,
December 10, 2017
Add comments