<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />MouseBoxes很難。 我正在嘗試實施拖放解決方案來移動圖片。
下面我從Scripting Index >> Mouse Box >> SetDropTrack中獲取了示例代碼,並重新實現它以包含框中的圖像而不是字母。 掉線後我無法將圖像填入新位置。 任何幫助,將不勝感激。
名稱默認為此處 ( 1 ) ;
// Datatable with:LocalPath包含計算機上圖像文件路徑的列
dtFull = 當前數據表 () ;
PATH1 = dtFull : 了localPath [ 20 ] ;
路徑2 = dtFull : 了localPath [ 21 ] ;
path3時, = dtFull : 了localPath [ 22 ] ;
PATH4 = dtFull : 了localPath [ 23 ] ;
PATH5 = dtFull : 了localPath [ 20 ] ;
path6 = dtFull : 了localPath [ 21 ] ;
path7 = dtFull : 了localPath [ 22 ] ;
path8 = dtFull : 了localPath [ 23 ] ;
IMG = 新圖片 ( PATH1 ) ;
IMG2 = 新圖片 ( 路徑2 ) ;
IMG3 = 新圖片 ( path3時, ) ;
IMG4 = 新圖片 ( PATH4 ) ;
IMG5 = 新圖片 ( PATH1 ) ;
img6 = 新圖片 ( 路徑2 ) ;
IMG7 = 新圖片 ( path3時, ) ;
img8 = 新圖片 ( PATH4 ) ;
//下面是修改後的腳本索引>> SetDropTrack示例
nextToBlank = 功能 ( { X , ÿ } , / *輔助函數* /
如果 ( / *孩子是邊界,孫子是文字* /
( X > 1 & 是空的 ((( 難題 [ X - 1 ] [ ÿ ] << 兒童 ) << 兒童 ) << 的getImage )) | ( X < 3 & 是空的 ((( 難題 [ X + 1 ] [ ÿ ] << 兒童 ) << 兒童 ) << 的getImage ))
| ( ÿ > 1 & 是空的 ((( 難題 [ X ] [ ÿ - 1 ] << 兒童 ) << 兒童 ) << 的getImage )) | ( ÿ < 3 & 是空的 ((( 難題 [ X ] [ ÿ + 1 ] << 兒童 ) << 兒童 ) << 的getImage ))
,
1 ,
0
)
) ; / *只允許在空單元格隔壁開始拖動* /
dragBegin = 功能 ( { 這個 , clickPt } ,
{ X , ÿ } = 這個 << getUserData ;
打印 ( “dragBegin” ) ;
如果 ( nextToBlank ( X , ÿ ) ,
圖片 = (( 這個 << 兒童 ) << 兒童 ) << 的getImage / *消息是文本框內容* /
, / * else * /
0 / *抑制阻力* /
) ;
) ; / *函數從源單元格中刪除字符,但僅在刪除成功時* /
dragEnd = 功能 ( { 這個 , clickPt ,怎麼樣 } , / *如何復制/移動/忽略* /
destbox = 這個 << getDestBox ;
如果 ( 是空的 ( destBox ) ,
節目 ( “未知目的地” ) ;
0 / *不知道dest的位置,強制忽略* /
;
,
嘗試 (
{ X , ÿ } = destbox << GetUserData ,
X = - 1 ;
ÿ = - 1 ;
) ; / * destbox可能沒有userdata中的列表* /
如果 (
嘗試 (
難題 [ X ] [ ÿ ] != destbox ,
1 / * throw與!= * /相同
)
, / * x,y可能不是有效索引* /
節目 ( “沒有放棄這個難題” ) ;
0 / *不是這個拼圖實例,強制忽略* /
;
, / * else * /
如果 ( 怎麼樣 == “忽視” ,
節目 ( “沒完成” ) ;
0 / *下降未完成* /
;
, / * else * /
(( 這個 << 兒童 ) << 兒童 ) << setImage ( “” )
)
) ;
) ;
0 / *返回代碼被忽略* /
;
) ; / *函數來決定是否允許丟棄。 返回碼(0,1)是至關重要的。* /
dropTrack = 功能 ( { 這個 , clickPt } ,
sourcebox = 這個 << getSourceBox ;
如果 ( 是空的 ( sourcebox ) ,
節目 ( “未知來源” ) ;
0 / *未知來源框沒有掉落* /
;
, / * else * /
嘗試 (
{ X , ÿ } = sourcebox << getUserData ,
X = - 1 ;
ÿ = - 1 ;
) ; / *源框可能沒有userdata中的列表* /
如果 (
嘗試 (
難題 [ X ] [ ÿ ] != sourcebox ,
1 / * throw與!= * /相同
)
, / * x,y可能不是有效索引* /
節目 ( “不是來自這個難題” ) ;
0 / *不是來自這個謎題實例,忽略* /
;
, / * else * /
如果 ( !是空的 ((( 這個 << 兒童 ) << 兒童 ) << 的getImage ) ,
0 / *佔用單元沒有下降* /
, / * else * /
1 / *允許刪除空白單元格* /
)
) ;
) ;
) ; / *函數實現drop * /
dropCommit = 功能 ( { 這個 , clickPt ,圖片 } ,
(( 這個 << 兒童 ) << 兒童 ) << setImage ( 圖片 ) ;
1 ; / *忽略* /
) ; / *光標更換器可以獲取拖動的單元格* /
跟踪 = 功能 ( { 這個 , clickPt } ,
{ X , ÿ } = 這個 << getUserData ;
如果 ( nextToBlank ( X , ÿ ) ,
這個 << 的setCursor ( “手” ) ,
這個 << 的setCursor ( “箭頭” )
) ;
1 ; / *忽略* /
) ; / *輔助函數構造顯示框樹* /
MB = 功能 ( { 信件 , X , ÿ } ,
MouseBox (
邊框 ( 剩下 ( 9 ) ,對 ( 9 ) ,最佳 ( 3 ) ,底部 ( 3 ) ,雙方 ( 15 ) ,
圖片框 ( 信件 )
) ,
<< setUserData來 ( 評估列表 ( { X , ÿ } ) ) , / *記住我的位置。 我不動,但我的內容髮生了變化。* /
<< setDragEnable ( 1 ) ,
<< setDragBegin ( dragBegin ) , / * dragFunctions定義如下* /
<< setDragEnd ( dragEnd ) ,
<< setDropEnable ( 1 ) ,
<< setDropTrack ( dropTrack ) ,
<< setDropCommit ( dropCommit ) ,
<< setTrackEnable ( 1 ) ,
<< setTrack ( 跟踪 )
)
) ;
難題 = 評估列表 (
{ 評估列表 ( { MB ( IMG , 1 , 1 ) , MB ( IMG2 , 1 , 2 ) , MB ( “” , 1 , 3 )} ) ,
評估列表 ( { MB ( IMG3 , 2 , 1 ) , MB ( IMG4 , 2 , 2 ) , MB ( IMG5 , 2 , 3 )} ) ,
評估列表 ( { MB ( img6 , 3 , 1 ) , MB ( IMG7 , 3 , 2 ) , MB ( img8 , 3 , 3 )} )}
) ;
新窗戶 ( “難題” ,
邊框 ( 剩下 ( 五 ) ,對 ( 五 ) ,最佳 ( 五 ) ,底部 ( 五 ) ,雙方 ( 15 ) ,
陣容箱 ( N Col ( 3 ) ,間距 ( 3 , 3 ) ,
難題 [ 1 ] [ 1 ] ,
難題 [ 1 ] [ 2 ] ,
難題 [ 1 ] [ 3 ] ,
難題 [ 2 ] [ 1 ] ,
難題 [ 2 ] [ 2 ] ,
難題 [ 2 ] [ 3 ] ,
難題 [ 3 ] [ 1 ] ,
難題 [ 3 ] [ 2 ] ,
難題 [ 3 ] [ 3 ] ,
)
)
) ;
很近!剪貼板僅設置為移動文本,而不是其他JMP對象。 您可以將圖片轉換為大塊文本並將其移動到剪貼板中。 (您還可以使用關聯數組的字符鍵來構建不同的機制,可能使用關聯數組來保存圖像。 它看起來會更複雜,但在剪貼板/ CPU上壓力更小。 如果你拖出拼圖,進入另一個編輯器,你會看到大量的文本。)
字符轉換使您的代碼開始工作:
image = char(((this << child)<< child)<< getImage); / *消息是文本框內容* /
圖片;
和
圖像解析=(圖像);
((本<<孩子)<<孩子)<< setimage(圖像);