Thanks I already went with GetInLine and I like the way it looks. Scott's stuff is always visually pleasing. Paypal donation on the way!
Bob On Feb 10, 2012, at 1:13 AM, André Bisseret wrote: > Bonjour Bob, > > In some apps I am using the following script. > It is an adaptation to drap and drop inside one field, of a script from Eric > Chatonet he had written for drag and drop from one field to another. > > Besides the field, this script uses an extra field name "tempo" which allows > to see what line one is dragging. > > A bug (# 6823) prevented this script to work well in a grouped field (but the > Slug had writte a workaround). > > Seems that now this bug has been fixed : I just tried the script on a grouped > field and it works. > > Best regards from Grenoble > > André > > > > ----------- THE SCRIPT OF THE FIELD ----------------------- > > local lLineNo,tLaLigne,tStyle, -- script local variable > ---------------------------------- > on mouseEnter > set the dragDelta to 5 -- instead of 10 seems to prevent to drag a wrong > line too often > 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 > 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 > unlock screen > end DragLeave > ---------------------------------- > on dragEnter -- NÉCESSAIRE DANS LE CONTROL DE DESTINATION > set the dragAction to "Move" > 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 > set the dragData["text"] to the selectedText > put the selectedText of the target into fld "Temp" -- in order to create > the right image > -- put tLaLigne into fld "Temp" > 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 > > on dragEnd > 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 > ------------------------------------------------------------------------------------------------ > > > Le 10 févr. 2012 à 01:35, Bob Sneidar a écrit : > >> Hi all. I use locked fields with multiple lines and listBehavior set to true >> as a kind of menu. Now I am trying to allow the user to rearrange the items >> in the list. I read in the Dictionary that LC handles drag and drop between >> *unlocked* fields automatically. Crud. So I tried unlocking the field on >> mouseDown and then sending mouseDown again in 0 seconds, but that was a >> bust. I tried just unlocking the field on mouseDown and locking it on >> mouseUp but that was problematic too. >> >> Any easy way to implement this? I could use a datagrid I suppose (grumble >> grumble) but it would be nice if I could just do this with a simple list >> field. I want to reorder entire lines by dragging and dropping them. >> >> Bob >> _______________________________________________ >> use-livecode mailing list >> use-livecode@lists.runrev.com >> Please visit this url to subscribe, unsubscribe and manage your subscription >> preferences: >> http://lists.runrev.com/mailman/listinfo/use-livecode > > > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode