on dragDrop
put dragData["files"] into tPath
if word 1 of the target is not "image" then
beep
exit to top
end if
set the filename of the target to ("file://" & tPath)
end dragDrop
これでファイルはイメージ・オブジェクトにセットできますが、オリジナル・イメージの持っている左右天地の比率に整える必要があります。ここではイメージ・オブジェクトの幅は、ウインドウ・サイズの2分の1にします。イメージのオリジナルの左右、天地は「the formattedwidth of image "イメージ名"」と「the formattedheight of image "イメージ名"」で得ることができますから、ウインドウ・サイズの2分の1幅でその比例を保つように計算します。イメージ・オブジェクトの位置は、左上のポイントが基準で左右・天地が決まります。
on dragDrop
put dragData["files"] into tPath
if word 1 of the target is "image" and char -4 to -1 of tPath is ".jpg" then
set the filename of the target to ("file://"&tPath)
set the width of image "dropImage" to the width of this cd / 2
set the height of image "dropImage" to \
(the formattedheight of image "dropImage" * the width of this cd / 2) \
/ the formattedwidth of image "dropImage"
else
-- もうひとつ条件「ターゲットがフィールド」と「ファイルパスがテキスト・ファイル」
if word 1 of the target is "field" and char -4 to -1 of tPath is ".txt" then
put textdecode(url ("binfile:/" & tPath), "utf-8") into the target
end if
end if
end dragDrop
private command setImage pPath
set the filename of the target to ("file://"& pPath)
set the width of image "dropImage" to the width of this cd / 2
set the height of image "dropImage" to \
(the formattedheight of image "dropImage" * the width of this cd / 2) \
/ the formattedwidth of image "dropImage"
end setImage
ハンドラー「dragDrop」は以下のようになります。
on dragDrop
put dragData["files"] into tPath
-- イメージ・ファイル .png
if word 1 of the target is "image" and char -4 to -1 of tPath is ".png" then
setImage tPath
else
-- イメージ・ファイル .jpg
if word 1 of the target is "image" and char -4 to -1 of tPath is ".jpg" then
setImage tPath
else
-- テキスト・ファイル .txt
if word 1 of the target is "field" and char -4 to -1 of tPath is ".txt" then
-- テキストはバイナリー・データを、utf-8(ユニコード)にしてフィールドに入れます
put textdecode(url ("binfile:/" & tPath), "utf-8") into the target
else
-- それ以外で条件の外れるものは全てビープ音を鳴らす
beep
exit to top
end if
end if
end if
end dragDrop
カード内に書き込む全てのスクリプトは以下の通りです。
on dragEnter
set the acceptDrop to true
end dragEnter
on dragDrop
put dragData["files"] into tPath
if word 1 of the target is "image" and char -4 to -1 of tPath is ".png" then
setImage tPath
else
if word 1 of the target is "image" and char -4 to -1 of tPath is ".jpg" then
setImage tPath
else
if word 1 of the target is "field" and char -4 to -1 of tPath is ".txt" then
put textdecode(url ("binfile:/" & tPath), "utf-8") into the target
else
beep
exit to top
end if
end if
end if
end dragDrop
private command setImage pPath
set the filename of the target to ("file://"&pPath)
set the width of image "dropImage" to the width of this cd / 2
set the height of image "dropImage" to \
(the formattedheight of image "dropImage" * the width of this cd / 2) \
/ the formattedwidth of image "dropImage"
end setImage