This is a problem is of my own making, as the code for drag_n_drop was 
moved from the host system to a component. As a result in the case of 2 
or more allowed source tables, a process variable which contained a 
pointer to the dropped record's source table was no longer accessible.


right now the code looks like this:

In the host
:(On Begin Drag Over)
  Drag_n_Drop_Begin("Source_set";->[Source_Table])
  // Source set is most often the selection set of a listbox
  // source table is most often the source table for the listbox

:(On Drag Over)
  $0:=Drag_n_Drop_Verify(Form Event;Allowed_to_Drop(_One or 
_Many);->[allowed_table1_1...->[allowed_table_N]
  // allows or fails drag over & drop

:(On Drop)
  Drag_n_Drop_Verify(Form Event;Allowed_to_Drop(_One or 
_Many);->[allowed_table1_1...->[allowed_table_N]
  // Places dragged record(s) into current selection of allowed_Table


the Drag_n_Drop methods are all in a component.
Drag_n_Drop works as follows:
- Drag_n_Drop_Begin -- an IP set is created which holds the record(s) 
being dragged.
- On Drag over, the table to which the set belongs** is compared 
against the the allowed source table(s), and a long int is returned 
allowing (0) or dis-allowing (-1) the drag over/Drop action.
- On Drop the IP set is used & cleared, and the dropped record(s) are 
left in the current selection.

** I can do this due to code Ive written (is available as the component 
'Setutl') which allows me to ask the question:
To which table does a specified set belong?

All of this works very well, when there is only 1 source table allowed. 
As I have recently found, this breaks down when there are 2 or more 
source tables allowed, as, Outside of the component, I do not know 
which of the allowed tables the drag n drop belongs too.

After reading through the various replies, the simplest solution is to 
return a pointer to source table of the drag n drop, or Nil so my new 
code will look like this:

:(On Drag Over)
  $0:=Drag_n_Drop_Verify(Allowed_to_Drop(_One or 
_Many);->[allowed_table1_1...->[allowed_table_N])
  // allows or fails drag over & drop

:(On Drop)
  $Source_Table:=Drag_n_Drop_Process
  if (Not(Nil($Source_Table)))
    // do stuff



On Mon, 12 Aug 2019 17:12:50 -0600, Adam Bevan via 4D_Tech wrote:
> I throw the data i want dropped into an object for dragndrop. Then 
> when i drop I know what iam getting as i include the table and record 
> numbers. Where i dragged it from(process,form,object) are also 
> included. Made my listbox drag an drop so much easier to handle and 
> very generic.
> 
> Sent from my iPhone
> 
>> On Aug 12, 2019, at 3:06 PM, Chip Scheide via 4D_Tech 
>> <4d_tech@lists.4d.com> wrote:
>> 
>> I am dragging and dropping 1 or more records from 1 process onto a 
>> listbox in a second process.
>> 
>> I see that I can use the pasteboard to mange the data during this 
>> action.
>> 
>> However....(dragging 1 record)
>> I am looking at the data types returned by GET PASTEBOARD DATA TYPE
>> com.4d.private.pid & com.4d.private.Form.Object -- neither of these 
>> makes much sense to me.
>> 
>> By using GET PASTEBOARD DATA i get a blob which is either
>> 4 bytes (com.4d.private.pid)
>> or
>> 524 bytes (com.4d.private.object.form)
>> 
>> I do not know what to do with either of these blocks of data... can 
>> someone point me in the right direction.
>> 
>> The drop area is allowed to accept data from 5 different tables.
>> I need to be able to differentiate which table the data is from, & 
>> which record(s) were dropped.
>> 
>> Once I have which ever of the above data types hand, what do I do with 
>> them to extract the needed information.
>> 
>> Thanks
>> Chip
>> 
>> ---------------
>> Gas is for washing parts
>> Alcohol is for drinkin'
>> Nitromethane is for racing 
>> **********************************************************************
>> 4D Internet Users Group (4D iNUG)
>> Archive:  http://lists.4d.com/archives.html
>> Options: https://lists.4d.com/mailman/options/4d_tech
>> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
>> **********************************************************************
> **********************************************************************
> 4D Internet Users Group (4D iNUG)
> Archive:  http://lists.4d.com/archives.html
> Options: https://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **********************************************************************
---------------
Gas is for washing parts
Alcohol is for drinkin'
Nitromethane is for racing 
**********************************************************************
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**********************************************************************

Reply via email to