DragDrop Driver 2.0 for GENSCRNX



The DRAGDROP.PRG driver is designed for GENSCRNX 2.0 or later.  
The DragDrop driver also requires 3D.PRG driver 2.0 or later to 
automatically create 3D effects for the drag and drop objects.  The 
DragDrop driver is entirely written in FoxPro and fully compatible with 
FoxPro 2.0 and FoxPro 2.5/2.6 (all platforms).  The only API calls made 
are in the Windows platform using FOXTOOLS.FLL to turn off the 
Windows mouse cursor while in the drag mode.  If FOXTOOLS.FLL is not 
loaded and is not found in the FOXPROW.EXE directory, the  mouse 
cursor will not be turned off while dragging objects.

Sample code files for the DragDrop driver can be found on 
CompuServe's FoxForum (section 3rd Party Products).  The first set of 
sample code is contained in a file called DGDP01.ZIP.

The DragDrop driver events/properties support a superset of the drag 
and drop events/properties found in Visual Basic 2.0 or later and also 
PowerBuilder 3.0.  For further information about designing drag and drop 
forms on a tutorial level, refer to books on Visual Basic 2.0 or 3.0 that 
contain chapters explaining how to create drag and drop forms and 
objects.  The DragDrop driver has extended the events/properties found 
in Visual Basic to eliminate the need for writing code as much as 
possible.



INSTALLATION


Read documentation on installation supplied with GENSCRNX before 
using the DragDrop driver and sample code.  GENSCRNX 1.7a or later 
and 3D driver 1.6 or later are the minimum versions required for use with 
the DragDrop driver.  If not specified with a directory path when declared 
in the Setup code or CONFIG.FP/FPW file, both DragDrop.PRG and 
3D.PRG must be in FoxPro's path during screen generation (both stand 
alone and from a project).  There is never a need to place 
GENSCRNX.PRG, 3D.PRG, or DragDrop.PRG in a project since they 
are only executed at compile time and never at runtime.  Both 
DragEvnt.PRG and 3DBOX.PRG must be in FoxPro's path during 
runtime since they are called within the generated .SPR file while both 
files will automatically be appended to a project when needed using 
FoxPro's Project Manager.




UP AND RUNNING


To enable the DragDrop driver, place the following line of code in the 
Setup snippet of a screen:

*:SCXDRV5 DRAGDROP
*:SCXDRV5 3D
*:ALL3D

Note:
The above *:ALL3D line is optional and is not required with the DragDrop 
driver.  *:ALL3D Specify 3D effects for all above objects other than the 
drag and drop objects to have a 3D effect.  Any drag and/or drop object 
containing a 3D driver directive will override the default 3D effects 
determined by the DragDrop driver.  For further information about 
directives available with the 3D driver, refer to README3D.TXT/WRI 
contained in 3DFOX.ZIP which can be found on CompuServe's 
FoxForum (section 3rd Party Products).

Note:
For best results, use screens with a light gray background to match the 
generated 3D effects and more closely match the Windows standard.

To enable the DragDrop driver globally for all FoxPro for Windows 
screens, place the following in the CONFIG.FPW:

_SCXDRV5="<path>DRAGDROP.PRG"
_SCXDRV5="<path>3D.PRG"

with the proper <path> of the DRAGDROP.PRG and 3D drivers.

Notes:
The 3D driver is optional (although it is recommended) for use with the 
DragDrop driver.  If the 3D driver is not installed with the DragDrop driver, 
3D effects will not be generated for the drag and drop objects.  Although 
all of the drag and drop object combinations have a default 3D effect 
generated by the DragDrop driver, any *:3D directive in a drag and/or 
drop object will override the default 3D effect for that object.  For each 
drag and/or drop object, the DragDrop driver overrides any global 3D 
settings specified in the Setup snippet.  For further information about 
using the 3D directives for the 3D driver, refer 3D driver documentation 
supplied with 3DFOX.ZIP.




SETUP SNIPPET DIRECTIVE REFERENCE


*:SCXDRV5 <path>DRAGDROP
*:SCXDRV5 <path>3D

Specify SCX driver #5 to execute the DRAGDROP.PRG driver function.
Specify SCX driver #5 to execute the 3D.PRG driver function (optional).

Note:
When using the DragDrop driver with the 3D driver, the DragDrop driver 
must be declared before the 3D driver as in the above example.


*:NOICONLIST

Disable generation of null function calls for .ICO and .BMP files specified 
with the DragDrop directives.  The DragDrop driver default is to 
automatically create a list of the .ICO and .BMP files used for both static 
and animated pictures to force a project to append all the necessary files 
for building .APP or .EXE files.  The file names may include a directory 
path name which is required if the files are not in the FoxPro file search 
path.

Example:
If a few icons are declared using *:DragIcon, *:OverIcon, etc., the 
following would represent an example of what may appear within the 
DragOver() function in the generated .SPR file:

RETURN [m.null]
* Start of null icon file list
DO eye.ico
DO face01.ico
DO face02.ico
DO face03.ico
* End of null icon file list

Important:
Any icons declared within a function (ex. m.DragIcon='error1.ico') must 
be manually declared to be automatically placed into a project.

Example:
If a snippet or function includes the line m.DragIcon='error1.ico', place the 
following code anywhere:

IF .F.
  DO error1.ico
ENDIF

Also, a list of icons can be included in the above example to force all 
icons used within string variables to be placed into the project manager 
during a project build.  The only icons and/or bitmap files that need to be 
declared as above are the ones that are only referenced within a variable 
string setting (ex. m.DragIcon='fox.bmp').  Pictures that are referenced by 
FoxPro's screen builder or directly specified with a DragDrop driver 
directive will automatically be placed in a project.  Picture files that have 
already been specified in either FoxPro's Screen Builder or with a 
DragDrop driver directive do not need to be included in a null file list.




EVENT AND PROPERTY DIRECTIVE REFERENCE


The DragDrop.PRG driver event and property directives are compiled 
during code generation for use with DragEvnt.PRG at runtime.

Note:
Function names do not require () when no parameters are passed.

Note:
All directives used for target (drop) objects can be used for the entire 
READ window by placing the proper directives in the Setup snippet.

Note:
Directives that use numeric value clauses (like pixel row/column) can 
contain variable or function names as well as literal numeric values.


*:DblClick <function name>

Event that occurs when a user presses and releases the left mouse 
button and then presses it and releases it again in the same position over 
an object.  The <function name> is a function used to handle a 
*:DragDrop event by checking both m.ObjClass and m.ObjMsg for event 
processing.  *:DblClick is primarily used as a default *:DragDrop event for 
any *:DragMode object.

Note:
*:DblClick is only available when used with *:DragMode for drag objects.


*:DragDrop [<function name>]

Event that occurs when a drag-and-drop operation is completed as a 
result of dragging a control over a form window or control and releasing 
the mouse button.  The *:DragDrop event function can be used to control 
what happens after a drag operation has been completed.  The function 
specified by *:DragDrop should use m.ObjClass and m.ObjMsg to 
determine what was the source object and what action should take place.


*:DragEnter [<function name>]

Event that occurs when a drag-and-drop operation is in progress.  The 
*:DragEnter can be used to monitor when the mouse pointer enters a 
valid target.  The mouse pointer position determines which target object 
receives this event.  *:DragEnter is equivalent to using the *:DragOver 
event and checking for m.ObjState=0.

Note:
If the *:DragEnter event is specified with the *:DragOver event for the 
target object, then *:DragOver event will occur second.


*:DragHeight <rows>

Property controlling the maximum number of pixels the drag object can 
be dragged vertically.  If *:DragHeight is not specified, the limit is the form 
window.


*:DragIcon [<expC>]

Property controlling the default drag icon picture or text.  If *:DragIcon is 
not specified and the object is either a picture or text object, then the 
default is contents of the PICTURE clause of the object is the default 
DragIcon.


*:DragLeave [<function name>]

Event that occurs when a drag-and-drop operation is in progress.  The 
*:DragLeave can be used to monitor when the mouse pointer leaves a 
valid target.  The mouse pointer position determines which target object 
receives this event.  *:DragLeave is equivalent to using the *:DragOver 
event and checking for m.ObjState=1.

Note:
If the *:DragLeave event is specified with the *:DragOver event for the 
target object, then *:DragOver event will occur second.


*:DragMode [<function name>]

Event that occurs when the mouse is moved during a drag event.  If the 
drag object is over a target object, the *:DragMode event occurs after the 
*:DragOver, *:DragEnter, *:DragLeave, and *:DragWithin events.  If 
<function name> is omitted, the object is defined to be a drag object 
without executing a DragMode event for each movement of the mouse.

Note:
*:DragMode is required to allow any object to be a drag object even if a 
DragMode event is not specified.

Example:
To create a text object that can be dragged and sends a text message of 
"Hello", place the following in the Comment snippet:
*:DragMode
*:ObjClass TEXT
*:ObjMsg Hello


*:DragOver [<function name>]

Event that occurs when a drag-and-drop operation is in progress.  The 
*:OverIcon can be used to monitor when the mouse pointer enters, 
leaves, or is directly over a valid target.  The mouse pointer position 
determines which target object receives this event.  Use the property 
m.ObjState to determine actions at key transition points.

Note:
If either *:DragEnter, *:DragLeave, or *:DragWithin event(s) are specified 
with the *:DragOver event for the target object, then *:DragOver event will 
occur second.


*:DragWidth <columns>

Property controlling the maximum number of pixels the drag object can 
be dragged horizontally.  If *:DragHeight is not specified, the limit is the 
form window.


*:DragWithin [<function name>]

Event that occurs when a drag-and-drop operation is in progress.  The 
*:DragWithin can be used to monitor when the mouse pointer is dragged 
over a target which occurs after it has entered the target area.  The 
mouse pointer position determines which target object receives this 
event.  *:DragWithin is equivalent to using the *:DragOver event and 
checking for m.ObjState=2.

Note:
If the *:DragWithin event is specified with the *:DragOver event for the 
target object, then *:DragOver event will occur second.


*:IconTxt <expC>
(Windows and Mac only)

Property controlling the default drag icon text below any dragging 
.ICO/.BMP picture using DragIcon.


*:ObjArray [<array name>]

Property controlling an object packager used for creating a macro drag 
and/or drop object.  If <array name> is not specified, a unique array name 
is created.


*:ObjClass <expC>

Property controlling the object classification.  When referencing the object 
class using the m.ObjClass property, an upper-case string will be 
returned.

Example:
*:DragMode
*:DragIcon @m.filelist
*:ObjClass FILE
*:ObjMsg @m.filelist


*:ObjHeight <expN>

Property controlling the height in pixels of the drag object's picture.   If 
<expN> is omitted, the height of the picture will equal the height of the 
picture as specified within the Screen Builder.  If *:ObjHeight is not 
specified, the height of the drag object defaults to normal icon height.  
*:ObjHeight requires the m.DragIcon to be a picture and also supports 
animated icons sequences.


*:ObjMsg <expC>

Property controlling the object message.  If *:ObjMsg is omitted, then 
*:ObjTxt is used as the default object message.

Example:
*:DragMode
*:ObjClass WINDOW
*:ObjMsg Calculator


*:ObjTxt [<expC>]

Property controlling the default drag object's text that displays centered 
under an object.  If *:ObjMsg is omitted, then *:ObjTxt is used as the 
default object message.
FoxPro for Windows only.


*:ObjWidth <expN>

Property controlling the width in pixels of the drag object's picture.   If 
<expN> is omitted, the width of the picture will equal the width of the 
picture as specified within the Screen Builder.  If *:ObjWidth is not 
specified, the width of the drag object defaults to normal icon width.  
*:ObjWidth requires the m.DragIcon to be a picture and also supports 
animated icons sequences.


*:OverButton  [<variable name>]

Property controlling the check box variable when an object is dragged 
over a target.  *:OverButton is used with picture and text check boxes to 
automatically set a check box on when the check box becomes a target 
object and resets when the drag object leaves the target area.  If 
<variable name> is omitted, the variable specified within the Screen 
Builder is used.


*:OverHeight <expN>

Property controlling the height in pixels of a target object's picture.   If 
<expN> is omitted, the height of the picture will equal the height of the 
picture as specified within the Screen Builder.  If *:OverHeight is not 
specified, the height of the target object's icon defaults to normal icon 
height .  *:OverHeight requires the m.OverIcon to be a picture and also 
supports animated icons sequences.


*:OverIcon  [<expC>]

Property controlling the default target icon picture or text.  If *:OverIcon  is 
not specified for a target object, then the drag icon will not change when 
is passes over the target object.  If <expC> is omitted, then a file called 
overicon.ico is used as the default OverIcon.


*:OverTxt [<expC>]

Property controlling the default target object's text message.  If *:OverTxt 
is not specified for a target object, then a default message is used contain 
the ObjMsg of both the source object and the target object.

Note:
In FoxPro for MS-DOS, the WAIT WINDOW is used to display the 
message.  In FoxPro for Windows, the MESSAGE bar is used to display 
the message.


*:OverWidth <expN>

Property controlling the width in pixels of a target object's picture.   If 
<expN> is omitted, the width of the picture will equal the width of the 
picture as specified within the Screen Builder.  If *:OverWidth is not 
specified, the width of the target object's icon defaults to normal icon 
width.  *:OverWidth requires the m.OverIcon to be a picture and also 
supports animated icons sequences.




DRAG EVENT METHOD REFERENCE


The drag event methods are functions contained in DragEvnt.PRG.  They 
can be referenced by any event or function call during a drag event.  The 
drag event methods are usually contained with a DragDrop driver 
directive and are not called directly from within pre-defined function.


animate(<expC1>, <expN1>, <expN2> | <expC2>, <expN3> | <expC3> 
[,<expN4>])

Animate .ICO or .BMP picture files for a drag or drop object.  Animate() is 
a function contained in DragEvnt.PRG and can be used with *:DragIcon, 
*:OverIcon, or m.DragIcon.

<expC1>
The character expression <expC1> specifies the file name with 
wildcard character(s) of the files to be used in the animation 
sequence.

<expN1>
The numeric expression <expN1> specifies animation fps (frames 
per seconds).  <expN1> can be a real number while specify zero 
forces maximum animation speed.  Maximum fps is limited by CPU 
and/or video speed (486/66 = 20-35 fps).  Using a specific number of 
fps (non-zero) will allow the animation to look identical on computers 
with various speeds (5-15 fps typical).

<expN2> | <expC2>
The numeric expression <expN2> or character expression <expC2> 
specifies the first digit(s) of the wildcard character used in the 
animation sequence.  <expN2> may be any numeric integer greater 
than zero while <expC2> must be a single digit ASCII character.

<expN3> | <expC3>
The numeric expression <expN3> or character expression <expC3> 
specifies the last digit(s) of the wildcard character used in the 
animation sequence.  <expN3> may be any numeric integer greater 
than zero while <expC3> must be a single digit ASCII character.  If 
<expN2> is specified then <expN3> is required or if <expC2> is 
specified then <expC3> is required.

<expN4>
The optional numeric expression <expN4> specifies the incremental 
value of <expN2> to <expN3>.  If <expN4) is negative, the animation 
sequence is reversed.  If <expN4> is omitted, the counter is 
incremented by 1.  When using <expC2> and <expC3>, <expN4> 
represents the incremental step of ASCII digit(s).

Example:
To animate cat1a.ico, cat1b.ico, cat1c.ico, and cat1d.ico at 10 fps:
*:DRAGICON @animate('cat1a.ico',10,'a',d')

Example:
To animate moon11.ico to moon18.ico at maximum fps:
*:DRAGICON @animate('moon??.ico',0,11,18)

Example:
To animate trash1a.ico to trash1t.ico at 7.5 fps skipping every other file:
*:OVERICON @animate('trash1?.ico',7.5,'a','t',2)

Note:
Although animate() can be called from within any function during a drag 
event, it is intended to be called automatically from within DragEvnt.PRG.

Note:
The use of the @ character in the above examples causes the 
expression following the @ character to be evaluated at runtime.  Refer 
to evlmsg() for further information.  The @ character can be used with 
*:ObjTxt (ex. *:ObjTxt @m.mytext) and be refreshed using the SHOW 
GETS OFF command.


evlmsg(<expC>)

Evaluates contents of <expC> if the first character equals @.  evlmsg() is 
normally used internally for evaluation expressions automatically but can 
be used within any function called during a DragEvnt.

<expC>
The character expression <expC> to be checked for evaluation.  
If the first digit of <expC> is equal to @, the expression following 
the @ character is evaluated, which may execute any function 
including animate().

Note:
Although evlmsg() can be called from within any function during a drag 
event, it is intended to be called automatically from within DragEvnt.PRG.

Note:
evlmsg() is automatically called for the expressions declared using 
ObjClass, ObjMsg, DragIcon, DragTxt, OverIcon, OverTxt directives and 
memory variables.

Example:
To create a list box that drags a file name and the message sent, the icon 
displayed, and the text displayed all contain the currently selected file 
name while the list box controls a memory variable called m.filelist, place 
the following in the Comment snippet of the List Box object:

*:DragMode
*:ObjClass FILE
*:ObjMsg @m.filelist
*:DragIcon @m.filelist
*:DragTxt @m.filelist




DRAG EVENT PROPERTY REFERENCE


The drag event properties are memory variables controlled by 
DragEvnt.PRG during any drag event.  They can be referenced by any 
event or function call during a drag event.  Unless otherwise specified, 
most of the following properties are used for read only purposes and 
should not be altered within a function.

Note:
All screen and mouse row/column values are relative to them WinName0.

Note:
All pixel values are relative 1 character in FoxPro for MS-DOS and 
relative to FoxPro pixel for FoxPro for Windows.

Symbols:
(C) - character
(N) - numberic
(L) - logical
(r) - normally read only during a drag event
(w) - write enabled for property update during a drag event


m.CenterCol  (N)  (r)

Center column position of object used to initiate the drag event.


m.CenterRow  (N)  (r)

Center row position of object used to initiate the drag event.


m.ColorScheme  (C)  (r)

Color scheme used to define the window used for the drag object.


m.DblClkFnct  (C)  (r)

*:DblClick setting of the object being dragged.


m.DragHeight  (N)  (r)

*:DragHeight setting of the object being dragged.


m.DragIcon  (C)  (w)

Picture or text of the object being dragged.  m.DragIcon can be set to any 
picture .ICO/.BMP or character sting during a drag event.  Setting 
m.DragIcont to a null string will restore the DragIcon to the default setting.

Note:
The m.DragIcon default is specified by *:DragIcon of the object being 
dragged.

Example:
To change the drag object to the character string "Address", execute the 
following during any event:
m.DragIcon='Address'

Example:
To change the drag object an animated cat using cat1a.ico to cat1d.ico at 
12 frames per second, execute the following during any event:
m.DragIcon="@animate('cat1?.ico',12,'a','d')"


m.DragIcon0  (C)  (r)

*:DragIcon setting of the object being dragged.


m.DragIcon2  (C)  (r)

Previous picture or text of the object being dragged.


m.DragMode  (C)  (r)

*:DragMode setting of the object being dragged.


m.DragTxt  (C)  (w)

Text of the message bar during a drag event and the drag object is being 
dragged over a drop object.  m.DragTxt can be set to any character sting 
up to 79 characters during a drag event.  Setting m.DragTxt to a null 
string will restore the DragTxt to the default setting.

Note:
In FoxPro for MS-DOS, the WAIT WINDOW is used to display the 
message.  In FoxPro for Windows, the MESSAGE bar is used to display 
the message.

Note:
The m.DragTxt default is specified by *:DragTxt of the object being 
dragged.

Example:
To change the message to the character string "Invalid drop area" while 
dragging over an invalid drop object, execute the following during the 
DragOver event of the target object:
m.DragTxt='Invalid Drop Area'


m.DragTxt2  (C)  (r)

Previous *:ObjTxt of the object being dragged.


m.DragWidth  (N)  (r)

*:DragWidth setting of the object being dragged.


m.FoxTools  (L)  (r)

Set to .T. if running in FoxPro for Windows and FOXTOOLS.FLL library is 
loaded during the drag event.
FoxPro for Windows only.


m.IconTxt  (C)  (w)

Text below picture of the object being dragged.  m.IconTxt can be set to 
any character sting during a drag event when a .ICO/.BMP picture is 
currently the DragIcon.  Setting m.IconTxt to a null string will restore the 
IconTxt to the default setting.

Example:
To change the drag object text below the current DragIcon picture to the 
character string "Name", execute the following during any event:
m.IconTxt=Name


m.IconTxt0  (C)  (r)

*:IconTxt setting of the object being dragged.


m.IconTxt2  (C)  (r)

Previous icon text of the object being dragged.


m.DragMode  (C)  (r)

*:DragMode setting of the object being dragged.


m.LastMsgBar  (N)  (r)

Original setting of the status message bar prior to the drag event.  Only 
FoxPro for Windows only.


m.Null  (C)  (r)

CHR(0) or ASCII character zero.


m.ObjArray  (C)  (r)

*:ObjArray setting of the object being dragged.


m.ObjClass  (C)  (r)

*:ObjClass of the object being dragged.  m.ObjClass contains the object 
class of the source object being dragged and can be checked during any 
drag or drop event.  If m.ObjClass is a null string, the source object did 
not specifiy a *:ObjClass property.


m.ObjClass0  (C)  (r)

*:ObjClass setting of the object being dragged.


m.ObjCol  (N)  (r)

Column position of the object being dragged.


m.ObjCol0  (N)  (r)

Original mouse column position at the start of the drag event.


m.ObjCol2  (N)  (r)

Previous column position of the object being dragged.


m.ObjHeight  (N)  (r)

*:ObjHeight setting of the object being dragged.


m.ObjHeight0  (N)  (r)

*:ObjHeight setting of the object being dragged.


m.ObjMsg  (C)  (r)

*:ObjMsg of the object being dragged.  m.ObjMsg contains the object 
message of the source object being dragged and can be checked during 
any drag or drop event.


m.ObjMsg0  (C)  (r)

*:ObjClass setting of the object being dragged.


m.ObjMsg2  (C)  (r)

Previous *:ObjMsg of the object being dragged.


m.ObjOver  (C)  (r)

*:ObjClass and *:ObjMsg of the object being dragged over separated by a 
period ASCII character.


m.ObjOver2  (C)  (r)

Previous *:ObjClass and *:ObjMsg of the object being dragged over 
separated by a period ASCII character.


m.ObjRow  (N)  (r)

Row position of the object being dragged.


m.ObjRow0  (N)  (r)

Original mouse row position at the start of the drag event.


m.ObjRow2  (N)  (r)

Previous row position of the object being dragged.


m.ObjState  (N)  (r)

The transistion state of the control being dragged in relation to a target 
form or control:
0 --- Enter (source control is being dragged within the range of a 
target).
1 --- Leave (source control is being dragged out of the range of a 
target).
2 --- Over (source control has moved from one position in the 
target to another).
-1 --- Drop (source control has been dropped on a target).

Example:
To set the DragIcon to an error picture with a message for a target object 
and restore both when leaving the target area, execute the following 
during the DragOver event of the target object:

DO CASE
  CASE m.ObjState=0
    m.DragIcon='error1.ico'
    m.DragTxt='Invalid drop area'
  CASE m.ObjState=1
    m.DragIcon=''
    m.DragTxt=''
ENDCASE
RETURN


m.ObjState2  (N)  (r)

Previous object state of object being dragged relative to a target object.

m.ObjWidth  (N)  (r)

*:ObjWidth setting of the object being dragged.


m.ObjWidth0  (N)  (r)

*:ObjWidth setting of the object being dragged.


m.OverClass  (C)  (r)

*:ObjClass of the object being dragged over.


m.OverMsg  (C)  (r)

*:ObjMsg of the object being dragged over.


m.ScnNo  (N)  (r)

Screen number of screen set involved in the drag event.


m.WinName0  (C)  (r)

Window name of currently active in the READ of the object initiating the 
drag event.  The window used to drag the object is a child of this window.




ADDITIONAL INFORMATION


Any cross-platform screens using 3D effects must be built in FoxPro for 
Windows for the WINDOWS code to be generated properly.  The 
DragDrop driver and the 3D driver programs use the FONTMETRIC() 
function to determine the row,col, and size information which requires 
FoxPro for Windows.  Generating cross-platform screens using 3D 
effects in a platform other than Windows will only effect the code 
generated for the Windows platform.  Therefore, a cross-platform project 
can simply be re-built in FoxPro for Windows when development is 
complete.

When using animating icons with the default object height and width, .ICO 
files are slightly faster than .BMP files because .ICO files a already 
scaled to the size of the default window size.  This is only important if the 
frames per second desired is not obtainable because of the limitations of 
CPU and/or video speed.  Animated icons will also be cycled faster if the 
.ICO/.BMP file name is specified with a directory path instead of having 
FoxPro search its path for each picture frame during an animated 
sequence.

Clauses used with the DragDrop driver directives generate source code 
that use brackets [] as string delimiters.  Therefore, if any DragDrop 
directives include function calls or array references using brackets, an 
automatic translation will occur at compile time changing any left bracket [ 
into a left parentheses ( and any right bracket ] into a right parentheses ).  
To avoid any potential problem or confusion, parenthesis () should be 
used instead of brackets [] when using any of the DragDrop directives.

The 3D driver automatically adds a SET READBORDER OFF command 
at the end of the Setup snippet if a SET READBORDER ON command or 
a *:SET BORDERGETS directive does not already exist in the Setup 
snippet.  The easiest way to enable the border gets option when using 
the 3D driver is to place a SET READBORDER OFF command anywhere 
in the Setup snippet making sure the command is places starting in 
column one (not indented).  Refer to GENSCRNX documentation for 
further information about the *:SET BORDERGETS directive.

If a public variable called _DRAGDROP is set to OFF, the DragDrop 
driver will be disabled and all DragDrop code generation will be 
suppressed.  _DRAGDROP='OFF' is useful when prototyping a project 
and DragDrop code generation is not needed for testing but the time it 
takes for a project to re-build needs to be as short as possible.  The 
overhead time of using the DragDrop driver depends on the number and 
type of drag and drop objects generated for the screen.  
DRAGDROP=OFF can be placed in the CONFIG.FPW file to disable 
DragDrop code generation without being dependent on a public variable 
call _DRAGDROP existing.  If both a public variable _DRAGDROP and 
DRAGDROP =ON | OFF in the CONFIG.FPW file, the public variable has 
precedence.  A variable called _3D can enable/disable the 3D driver in 
the same way _DRAGDROP controls the DragDrop driver.




COPYRIGHT NOTICE


Compressed file: DRGDRP.ZIP
System: GenScrnX
Author: Ken R. Levy
Company: Jet Propulsion Laboratory
Copyright: None (Public Domain)

All source code and documentation contained in DRGDRP.ZIP was 
developed at the Jet Propulsion Laboratory in Pasadena, Calif. and has 
been placed into the public domain.  You may use, modify, copy, 
distribute, and demonstrate any source code, example programs, or 
documentation contained in DRGDRP.ZIP freely without copyright 
protection.  All files contained in DRGDRP.ZIP are provided 'as is' without 
warranty of any kind.  In no event shall its authors, contributors, or 
distributors be liable for any damages.




COMMENTS/SUGGESTIONS/PROBLEMS/QUESTIONS


Please use CompuServe's FoxForum (section 3rd Party Products) 
directed to:

Ken Levy 76350,2610

-----------------------------------------------------------

