Just Tools-- A component collection

Version 1.0

License: See included License.txt For License information.
  The Use Of this product Means that you have accepted this
  License.

  Just Tools is a collection of shareware components.  It has
  been released in "limited" format: it runs, but if you are
  not running in debug mode from Delphi it will display a
  "Nag screen" on programs startup because it is not a
  registered version.  There will be upgrades to this
  collection coming out periodically.  Only registered users
  will receive these upgrades.

Support:
  The latest version of this software will be available at:
  http://www.schedulestuff.com/

  E-mail support will be available for registered users, and 
  limited support (i.e.- questions that will lead to a sale :-)
  will be available for unregistered users.  All support
  questions or suggestions should be directed to: 
  support@schedulestuff.com

  Please remember that support is being provided on a part-time
  basis; therefore urgent questions on Christmas Eve may not be
  answered 'til after New Years Day :-)

Version History
1.0

  As I have programmed in Delphi, I have observed that there are
  things I end up doing over and over.  I ran into a programming
  philosophy which stated that good programmers are lazy because
  they try never to write the same code more than three times
  --the third time they will write a library object :-) I have
  compiled some of the components I have written here.   Some for
  a program where they would be used many times, and some because
  I use them over and over in each program.  Here they are; more
  will follow.  Suggestions for improvement or new components will
  be appreciated.  Criticism will be filed in the appropriate
  receptacle. :-D

Components:

JSAppReg
  This component was written to give me quick access to some
  Registry functions commonly used for applications.  There
  are several Boolean properties of this component: 
  RunOnce, RunOnRestart, RunAsService, and
  RunOnceAsAService.  I often use these in conjunction 
  with a Menu item; they will reflect the registry setting 
  for the application they are in.  For example, if the
  registry setting for RunOnRestart exists, this property
  will be true--otherwise it will be false.  Setting this
  property to true will set the correct entry in the registry
  to run this program on startup; setting it to false will
  remove the registry entry if it exists.
  The other settings perform similarly.

JSCapNHook
  This component was written when I needed to know every mouse
  click and keyboard press that was happening in Windows.  This
  component implements a journal hook which traps *all* events.
  For safety and sanity, I have only exported the events for
  the specific things I was searching for.  The program must be
  modified to export any other events.  Enabled turns the hook
  on and off.
	

JSFormTools
  This component was written to give my forms a memory.  I have
  always liked to give my programs the ability to remember where
  they were last on the screen, or to pop up centered over the
  main form, as well as store the options set by the end user
  (and sometimes even panel sizes, etc.)  The task of writing
  registry procedures on form create, and close query got too
  tedious so I wrote this component. I can drop it on a form, set
  the save form position to True, and forget it.  It also has
  the ability to store other settings [With the form] in the
  registry.  Therefore, if you want to store other settings, just
  fill out the appropriate events and watch your forms begin to
  behave intelligently.

JSGrid
  Being an old-timer (in computer years), I liked the look of the
  green and white-striped paper because I found it easy to follow
  across the page so I wrote a grid that allows me to have
  alternating colors in the rows.  This grid also evolved to have
  sort routines; support types String, etc., for the columns;
  and to have the sorting of the grid (as well as justification)
  pay attention to the column type.  This grid also supports some
  "data bound-like" functions because it accepts a VariantArray
  in a function call to populate itself, and will return a
  VariantArray when asked for its contents.  It will also accept
  another VariantArray to populate the columns with types,
  captions, and widths (Not too shabby!) The default colors are
  supposed to look like Microsoft Money.

  Here is the definition of the field types:

  TDbsFldTypes = (ftString, ftSingle, ftDouble, ftSmallInt,
                  ftWordBool, ftInteger, ftDateTime, ftCurrency,
                  ftVariant);

JSJustAbout
  Do you ever get tired of writing About boxes?  I did; so I wrote
  a component to take care of this.  Just drop it on the form and you
  have a decent About box.  You set a few properties, and you have
  an About box with system information, version information, and
  the ability to link to your web site. Additionally, all your
  programs will have a "Standard look and feel" with little to no work.

  Note: uses JSFormTools, JSVersion, JSSysInfo components.

JSLog
  The need for a large, fast log file that would allow me to debug a
  non-visual program drove this one.  It has also been useful as a
  crude profiling tool.  The log component is pretty self contained,
  just drop it on, set 'Active' to 'True' and start calling it's
  'Log'procedure and pass in the string you want to write to the log.
  You can set 'FileName' to control the path and file name of the
  log, but the default will be the path and file name of the
  application (with a .log extension).  The speed and size are
  achieved through the use of file pointers which are fast, and the
  maximim size should be around four terabytes.  No, I never tested
  the max size (I would run out of disk space first. :-)

JSRegister
  Do you ever write Shareware applications?   I do.  I got tired of
  writing custom "Register here screens. (Besides- that isn't the
  fun part of programming:-).  So I wrote a component to collect the
  information for me.  Now I simply drop it on and call Execute
  (just like a Standard Dialog) and all the necessary information
  is entered and ready for me to check the serial number--if that is
  the way this program is registered.

JSSplash
  A nice splash screen that loads fast is a must for large or well-
  written programs, but these screens can be repetitive and cut &
  paste errors can be really embarrassing. (Imagine the help
  e-mails that leaving the title of a different program on your
  screen may generate:-) So, I wrote a component, which you drop on
  your main form, then set the SplashImage and set enabled to True,
  and thats it. The component also supports a message, timed
  destruction, manual-launching (Execute) Text over the image, and
  more. (Go look!)

JSURLLabel
  I've seen and used a lot of these and wondered what would happen
  if I included one from someone else in a package for sale by me
  (Probably nothing good :-) So, I wrote a very simple one to use
  with the other components here and decided to go ahead and
  publish it since you might have a use for it...

JSVersion
  Have you ever shipped a new version of a program only to have an
  immediate call from a customer to tell you the version on your
  About screen hadn't changed? Worse yet, youve spent literally
  hours debugging over the phone only to discover that the customer
  kind of copied some components from a new version over to a
  computer that had an older version of your program on it and
  that's why they called?  JSVersion to the rescue!  

  This component retrieves the properties CompanyName,
  Description, Version, InternalName, LegalCopyright,
  LegalTradeMark, OriginalFileName, ProductName,
  ProductVersion, and Comments from a program and publishes these
  as properties.  JSVersion also lets you retrieve these and more from
  another program specified in the FileName property.  On complex
  programs, and version sensitive programs I use this component to
  check and make sure all my files have the same version stamp, and
  eliminate many support requests before they even get to me.

Thanks for your support!

JustSoftWare (llc).
