本文へジャンプ

ソフトウェア > Lotus > Lotus Developer Domain > 製品別技術情報 > Lotus Notes/Domino > 

LDD Today

1回のクリックによる画像ファイルの添付とインポート

Lotus Software
by Ashok Hariharan
レベル:中級者
対 象: Notes/Domino 5 以降
原文の掲載:2002年11月4日

LDD Today の原文(US)

誰かに画像を送信する際に、相手がわざわざ添付ファイルを開かなくてもその画像を見ることができるようにするには、画像を文書の中に表示して、画像ファイルをダウンロード用に添付します。このように画像の添付とインポートを行うには、通常は2つのステップが必要になります。まず、[ファイル] - [添付]を選択して画像を添付し、次に、[ファイル] - [呼び出し]を選択して画像を文書にインポートします。

しかし、次の方法を使えば、1ステップで画像ファイルを添付してインポートすることができます。
  1. フォーム上に3つのフィールドを作成します。添付ファイルを受け入れるためのフィールド、画像を表示するためのフィールド、およびファイル名を表示するためのフィールドの3つです。
  2. 1クリックで画像ファイルを添付して表示するホットスポット・ボタンを作成します。

ここでは、この方法に加えて、画像と添付ファイルを1クリックで文書から削除する方法も説明します。

フォーム・フィールドの作成
フォームを作成または修正して、以下のフィールドを追加します。

フィールド名フィールド・タイプ説明
img リッチ・テキスト 画像を添付ファイルとして受け入れます。
img_display リッチ・テキスト インポートした画像を文書に表示します。
img_name テキスト(編集可能) 添付したファイルの名前を表示します。

ホットスポット・ボタンの作成
ホットスポット・ボタンを作成し、「添付と表示」というラベルを付けます。その後、以下のコードをプログラム・ペインにコピー・アンド・ペーストします。

FIELD img_name := img_name;
previous := @Subset(@AttachmentNames;-1);
@If(@IsDocBeingEdited;"";@Command([EditDocument]));
@Command([ToolsRunMacro]; "Kill");
@Command ([EditGotoField]; "img");
@If(img_name = "";@Command([EditInsertFileAttachment]);"");
@If(img_name !="";@Prompt([OK];"Error";"There is already an image attached");@Do(
@If(@Subset(@AttachmentNames;-1) = previous; "";@Right(@Subset (@AttachmentNames;-1);3)="jpg";
@Command([EditDetach];@Subset(@AttachmentNames;-1); "c:\\image.jpg");@Right(@Subset(@AttachmentNames;-
1);3)="gif";@Command([EditDetach];@Subset(@AttachmentNames;-1); "c:\\image.gif");"");
@SetField("img_name"; @Subset(@AttachmentNames;-1));
@Command ( [EditGotoField]; "img_display" );
@If(@Subset(@AttachmentNames;-1) = previous;
@SetField("img_name";"");@Right(@Subset(@AttachmentNames;-
1);3)="jpg";@Command ( [FileImport]; "JPEG Image"; "c:\\image.jpg"
);@Right(@Subset(@AttachmentNames;-1);3)="gif";@Command ( [FileImport]; "GIF Image"; "c:\\image.gif" );@Subset(@AttachmentNames;-
1)="";"";@Prompt([OK];"Error";"Not a Valid Image File"))))

この式の処理内容は次のようになります。
  1. 文書が編集モードになっているかどうかをチェックします。

  2. 編集モードになっていた場合は、@Command([EditInsertFileAttachment])を使って画像をimgフィールドに添付します。

  3. 画像の添付が済んだら、@Command([EditDetach])を使って、画像を一時的な場所(C:\)に保存します。

  4. 次に、画像ファイルの名前をimg_nameフィールドに追加します。

  5. 最後に、@Command([EditGotoField])を使って文書上のフォーカスをimg_displayフィールドに移動して、@Command([FileImport])式で画像をインポートします。

一時的な場所のクリーンアップ
上の式で一時的な場所から画像をインポートした後、Killというエージェントを起動します。このエージェントは、LotusScriptのKill関数を使って、C:\ディレクトリーから画像のコピーを削除します。NotesデータベースでLotusScriptエージェントを作成し、Killという名前を付けて、エージェントのInitializeサブルーチンに以下のコードをコピー・アンド・ペーストします。

Sub Initialize
On Error Resume Next
Kill "c:\image.jpg"
On Error Resume Next
Kill "c:\image.gif"
On Error Resume Next
End Sub

文書からの画像の削除
間違って別の画像を文書に追加してしまうことも考えられます。そのような場合も、わざわざ3つのフィールドから画像、添付ファイル、および名前のすべてを削除する必要はありません。ホットスポット・ボタンをもう1つ作成すればよいのです。ボタンを作成し、「画像の消去」というラベルを付けて、プログラム・ペインに以下のコードをコピー・アンド・ペーストします。

Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Call uidoc.FieldClear( "img" )
Call uidoc.FieldClear( "img_display")
Call uidoc.FieldClear( "img_name" )
End Sub

このボタンを1回クリックするだけで、3つすべてのフィールドから画像、添付ファイル、およびテキストを削除できます。以上で準備は完了です。添付された画像がNotes文書に表示される様子は、きっとユーザーに気に入られることでしょう。
 
上に戻る