DRAGID (set drag-and-drop host signatures)

Top  Previous  Next

 

DRAGID( signature [, signature] )

DRAGID

Specifies a LIST or REGION control that can serve as a drag-and-drop host.

signature

A string constant containing an identifier used to indicate valid drop targets. Any signature that begins with a tilde (~) indicates that the information can also be dragged to an external (Clarion) program. A single DRAGID may contain up to 16 signatures. The drag signature cannot start with an exclamation mark (!).

The DRAGID attribute (PROP:DRAGID, an array) specifies a LIST or REGION control that can serve as a drag-and-drop host. DRAGID works in conjunction with the DROPID attribute. The DRAGID signature strings (up to 16) define validation keys to match against the signature parameters of the target control's DROPID. (The drag signature cannot start with an exclamation mark "!" ) This provides control over where successful drag-and-drop operations are allowed.

A drag-and-drop operation occurs when the user drags information from a control with the DRAGID attribute to a control with the DROPID attribute. For a successful drag-and-drop operation, both controls must have at least one identical signature string in their respective DRAGID and DROPID attributes.

Example:

WinOne WINDOW,AT(0,0,160,400)

       !Allows drags, but not drops:

       LIST,AT(120,0,20,20),USE(?List1),FROM(Que1),DRAGID('FromList1')

       !Allows drops from List1, but no drags

       LIST,AT(120,120,20,20),USE(?List2),FROM(Que2),DROPID('FromList1')

      END

 

CODE

OPEN(WinOne)

!Drag and Drop Ids can also be assigned at runtime

?List2{PROP:DropID,1) = 'FromList1'

?List1{PROP:DragID,1) = 'FromList1'

!***********************************************

ACCEPT

 CASE EVENT()

 OF EVENT:Drag       !When a drag event is attempted

  IF DRAGID()        !check for success

   SETDROPID(Que1)   !and setup info to pass

  END

 OF EVENT:Drop       !When drop event is successful

  Que2 = DROPID()    !get dropped info

  ADD(Que2)          !and add it to the queue

 END

END

 

See Also:

DROPID