"Graphics Layout" - a "Delphi-Like" IDE replacement

===================================================


Using "Graphics Layout" you can create a program that supplies 
your customers with an environment like Borland's Delphi.....

   -  Drag and Drop components from an graphic list 
      of available components.

   -  Move the components around on the form with the mouse.

   -  Edit the properties of the components with an
      "Object Inspector".

All this, but without the need of the Delphi IDE running.

Version  1.00
Copyright ©1996 Jack Torrey and Phaedreus Labs
All Rights Reserved.

Note: These dcu units are compiled with Delphi version 2.0

This package contains delphi compiled units that are not
crippled in any way.  You may use these to develop any
software that you do not charge money for.  If are 
developing a product for sale, or if you would like the
source files.......

The latest version, with permision to use for profit:

    $ 45.00  (USA dollars)

The complete source, also with permision as above:

    $ 95.00

Feel free to experiment, or use in any way you wish except
to develop a product that you will charge money for.  To
be fair, you should register to get that priviledge.

========================================================

Included files:

    Project1.exe           { demonstration executable }
    Project1.dpr           { demonstration project file }

    CtlFom.dcu     & .dfm  { the comtrol form }
    DsgnForm.dcu   & .dfm  { the design form }
    InspForm.dcu   & .dfm  { the inspector form }
    PalForm.dcu    & .dfm  { the palette form }

    GLComp.dcu     { "Graphics Layout components" class }
                   { these objects contain an IF_Engine }

    IFEng.pas      { base class for all components you create }
    IFEngTst.pas   { example derived class to run demo }

    Icons\Default.bmp      { misc icons used to represent components }
    Icons\Function.bmp
    Icons\Pipes.bmp
    Icons\Views.bmp


All Files.. Copyright ©1996 Jack Torrey All Rights Reserved.

===============================================================

Graphics Layout is a demonstration program that uses the
files above to create a "Delphi-Like" environment.  This is
an environment that the user can drag and drop components
onto a form, and edit the properties of the components with
an "Object Inspector" - So what is new about this?

If you wanted to deliver a program that had these abilities,
and you used the standard Delphi approach of creating components,
your users would have to purchase Delphi 2.0 from Borland.  But
supppose you did not want to require this of your customers??

Suppose your customers were not programers?

Suppose, for example, you were writing a program to create/edit
schematics of electronics hardware.  You would want your customers
to be able to drag and drop schematic symbols for various digital
components, but you would NOT want them to have to purchase (or
learn about) Delphi!!  A library of custom components would not
be a very good starting point for this program, because they
require the Delphi IDE to be running in order to function.

"Graphics Layout", however, can form the basis of this program.

With it you can create your own set of components and define
the properties that you want the user to have control over.
At run time, these components are graphically displayed and
your customers can drag/drop them onto a design form - without
the IDE being present.

===============================================================

For a quick intro of how this works, run "Project1.exe".

When this demo program runs, there are four windows:

  1) The "Control" window (in the upper left corner) provides
     the menus and buttons for your application.  You would
     customize this form as necessary.  The form supplied
     is only an example of how this may look.

  2) The "Palette" window (at the upper right) provides a
     graphical list of all components that can be dragged on 
     the schematic.  This form need not be modified, because
     it dynamically loads the "Graphic Layout" elements
     necessary for your application.  You will probably
     keep this form just as it is.

  3) The "Design Form" (in the lowwer right corner) is where
     you drop the elements from the palette window.  It is
     like a "TForm" that is being "designed" at run time.

  4) The "Inspector" window (at lower left) lists all properties
     of the currently selected component.  To view the properties
     of a different component, simply click on the large arrow
     button in the palette window, then click on a component in
     the design window, and it's editable properties will show 
     up in the Inspector window.


To see how this works, click on one of the speed buttons in the
palette window, then click 3 or 4 times somewhere in the design 
window.  You will see a componenet created each time you press 
the left mouse button.

To select a different component to place onto the design window,
simply press a different speed button.  Note that there are three
sets of palette components.  You can select a different set with
the drop down selector in the palette window (just above the large 
arrow button.)  Each set has multiple tabbed pages, with each 
tabbed page having multiple components on it.

To change the properties of component placed on the design form...
First, press the large arrow button in the palette window.
Second, click on the component (in the design form) you wish to
view.  The "Inspector" window will show the properties of that
element.  You can change some of the properties shown, the others
are marked as read only.

To execute a method of one of the components, simply RIGHT-click
on the component in the design window.  A popup menu of commands
available for that particular component will be displayed.  

All this should be very familiar.  It operates just like
the Delphi IDE, except that the Delphi IDE is not present
when this program is running.  It has been replaced by the
"Graphic Layout" framework.

This demo only defines a very few limited components.

They are:

   -  'Add', 'Sub', and 'Mul' in the "Functions" group 
       of the palette window.
   -  'Pipe', in the "Pipes" group
   -  'View', in the "Views" group

"Graphics Layout" allows much further development than what is
shown in this (initial) demo program.  It allows for:

   -  Practicaly unlimited number of components
   -  Each with it's own graphic symbol (a "xxx.BMP" file)
   -  Each with it's own popup menu and unique set of commands
   -  Each with it's own set of properties
   -  Each property with:
      -  It's own unique name, up to 32 characters
      -  It's own type, including: integer, string, double, etc.
      -  Flags for:   1) Read_Only and 2) User_Viewable

To see how to create an application like this, look at the source
file (one of two supplied in this package) called "IFEngTst.pas".
This is the "Interface to the Engine - Testing unit" hence 
"IFEngTst".  This unit creates a class that is derived from the
code in "IFEng.pas".  You can edit this file to create your own
components, or derive new components of your own in other units.
As long as your components are derived from GLElement in the
"IFEng.pas" file, they will be a part of the overall structure.

================================================================

Disclaimer:

This code has gone through only minimal testing and may have
imperfections.  My objective at this point is to see if there is an
intrest out there for it.  If you like what you see, especially
if you think you may be able to use it in a real application,
please let me know.


"Graphics Layout" is supplied as is.  The author disclaims all
warranties, expressed or implied, including, without limitation,
the warranties of merchantability and of fitness for any purpose.
The author assumes no liability for damages, direct or conse-
quential, which may result from the (mis-)use of Graphics Layout.

Bug-reports, suggestions, even flames are welcome.  I'm easy.

Jack Torrey
Phaedreus Labs
jtorrey@mrtc.org