Le 12 nov. 10 à 23:42, zryip theSlug a écrit :

In case it could be useful for someone, here is a possible workaround
to this problem. The script has been validated by André:

Thanks a lot again, TheSlug, for your workaround; very usefull indeed. I can now use it in my app. where the field must be included in a group :-))

Have a nice weekend

André




-- LE SCRIPT DE DRAG DROP ENTRE 2 FIELDS d'Éric CHATONET, MODIFIÉ POUR UN SEUL
local lLineNo,tLaLigne,tStyle,lTrackDragMove -- script local variable
----------------------------------
on mouseEnter
  set the dragDelta to 5 -- AU LIEU DE 10 : EMPÊCHE UN PEU ERREUR
-- QUI OCNSISTE À PRENDRE UNE AUTRE LIGNE
end mouseEnter
----------------------------------
on dragMove -- sent repeatedly when the dragdata is within the field
  local tContents,tHilitedText
  -----
  put (the mouseV - the top of the target) div the effective
textHeight of the target into lLineNo -- line number
  if lLineNo > the number of lines of the target then put the
number of lines of the target into lLineNo
  -----
  lock screen
  put StripCR(me) into tContents -- see below
  put the hilitedText of the target into tHilitedText -- stores
highlighted line
  put cr after line lLineNo of tContents -- creates a blank line
  set the text of the target to tContents
  set the hilitedLine of the target to
lineOffset(tHilitedText,tContents) -- restores highlighted line
  unlock screen
  delete line (the hilitedLine of the target) of the target --C'EST
RÉPÉTÉ !!!

if the dragSource contains the long ID of me and (the mouseControl
is not empty \
and the long id of the mouseControl contains the long ID of me) then
   set the dragAction to "move" -- Change the dragAction in the
dragMove if we are in the group
end if
end dragMove
----------------------------------

on DragLeave -- restores current contents
  local tHilitedLine
  -----------
  lock screen
  put the hilitedLine of the target into tHilitedLine
  put StripCR(me) into the target --
  set the hilitedLine of the target to tHilitedLine

  put false into lTrackDragMove -- If we re-enter in the group,
cancel the need to force the dragDrop handler
  -- (we avoid to execute the handler two times)

  unlock screen
end DragLeave
----------------------------------
on dragEnter -- NÉCESSAIRE DANS LE CONTROL DE DESTINATION
--
end dragEnter
----------------------------------
on dragDrop
  local tContents
  -----
  put StripCR(me) into tContents -- see below
  if lLineNo = 0 then
         put the dragdata["text"] & cr before tContents
  else
         put cr & the dragdata["text"] after line lLineNo of tContents
  end if
  lock screen
  set the text of the target to tContents
  set the hilitedLine of the target to lLineNo + 1 -- sets
highlighted line to dropped line
  unlock screen
end dragDrop
----------------------------------
function StripCR pText -- returns 'normal' field's contents
if char 1 of pText = cr then delete char 1 of pText
if char -1 of pText = cr then delete char -1 of pText
replace cr & cr with cr in pText
return pText
end StripCR
-- ---------------------------------
on dragStart --NÉCESSAIRE DANS LE CONTROL SOURCE
--- put the textStyle of the selectedLine into tStyle -- MMMMMMMMMMMMMMMM put true into lTrackDragMove -- prepare the dragDrop handler to be forced

set the dragData["text"] to the selectedText --to tLaLigne --the
selectedText -- plain text
put the selectedText of the target into fld "Temp" -- in order to
create the right image
set the dragImage to CreateDragImage() -- see below
set the dragImageOffset to the width of last image div 2,the height
of last image div 2 -- centered
end dragStart
---------------------------------
-- set the dragData["html"] to the HTMLText of fld "telField"
---------------------------------
on dragEnd
if (lTrackDragMove) then send "dragdrop" to me --> Force the dragDrop message
delete last image -- we no longer need the drag image
end dragEnd
---------------------------------
function CreateDragImage -- creates drag image on-the-fly
local tRect,tempImage
-----
put the rect of fld "Temp" into tRect
-----
export snapshot from rect tRect of this cd to tempImage as jpeg
-- export image to a variable
lock messages -- important to speed up the process
create invisible image -- we don't want to see it
set the text of last image to tempImage
if there is an image ID 6001 then delete image ID 6001
set the ID of last image to 6001
-- setting dimensions
unlock messages
return the ID of last image -- we need it to set the dragImage property
end CreateDragImage
---------------------------------------------

Now some explanations:

Not read the report, because it is necessary to have an account to
join the QCC. I have no account and I have not found the link to
create an account...

It seems that the dragEnter and dragDrop are not trapped in a group.
The dragDrop is trapped only if the mouse leaves the group and then
enter again in the group.

1) So I added a local variable named lTrackDragMove.

- This variable is set to true when the drag start (dragStart handler)
- If the drag end and the lTrackDragMove is true, the dragDrop message
is forced by a send
- The lTrackDragMove variable is set to false if the drag leaves the
group. This is to avoid forcing the dragDrop as we are now in the
normal behavior of the dragDrop handler

2) In the group, the dragEnter handler is not trapped.

- The dragAction is removed from the dragEnter hander
- The dragAction is now set to move only in the conditions specified
by this test:
if the dragSource contains the long ID of me and (the mouseControl is
not empty \
  and the long id of the mouseControl contains the long ID of me) then

This is a test I picked in the datagrid library.


Best regards,
--
-Zryip TheSlug- wish you the best! 8)
http://www.aslugontheroad.co.cc
_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to