IBM®
Skip to main content
    Country/region select      Terms of use
 
 
   
     Home      Products      Services & solutions      Support & downloads      My account     
 
developerWorks
AIX and UNIX
Information Mgmt
Lotus
New to Lotus
Products
How to buy
Downloads
Live demos
Technical library
Training
Support
Forums & community
Events
Rational
Tivoli
WebSphere
Java™ technology
Linux
Open source
SOA and Web services
Web development
XML
My developerWorks
About dW
Submit content
Feedback



developerWorks  >  Lotus  >  Technical Library
developerWorks



Tips from LDD

Attaching and importing image files in one click

Tip submitted by
Ashok Hariharan


Level: Intermediate
Works with: Notes/Domino 5 and later
Updated: 11/04/2002

Related link:
More Tips from LDD


Suppose you want to send an image to someone, and to save your recipient the extra step of having to launch or open the file attachment to preview the image, you want to display the image in the document and attach the image file for downloading. Attaching and importing images is usually a two-step process: First, you attach the image by choosing File - Attach, and then to import the image into a document, you choose File - Import.

But no longer—you can attach and import image files in one step by:
  1. Creating three fields on a form: a field to host the file attachment, a field to display the image, and another to display the file name.
  2. Creating a hotspot button that attaches and displays the image file with one click.

We'll also tell you how to remove the image and file attachment from the document with one click.

Creating the form fields
Create or modify a form, adding the following fields:

Field nameField typeDescription
imgRich textHosts the image as a file attachment.
img_displayRich textDisplays the imported image in the document.
img_nameText (editable)Displays the name of the attached file.

Creating the hotspot button
Now create a hotspot button and label it Attach & Display. Then copy and paste the following code into the programmer's pane:

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"))))

The formula does the following:
  1. Checks whether or not the document is in edit mode.
  2. If the document is in edit mode, the formula attaches the image to the img field using @Command([EditInsertFileAttachment]).
  3. After attaching the image, the formula detaches the image to a temporary location (C:\) using @Command([EditDetach]).
  4. Next, the formula adds the image file name in the img_name field.
  5. Last, the formula shifts the focus on the document to the img_display field using @Command([EditGotoField]). Then the @Command([FileImport]) formula imports the image.

Cleaning up the temporary location
After importing the image from its temporary location, the formula triggers an agent called Kill that deletes the image copies from the C:\ directory using the LotusScript Kill function. Create a LotusScript agent in the Notes database, call it Kill, and then copy and paste the following code into the agent's Initialize subroutine:

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

Removing the image from the document
What if you add the wrong image to your document? Do you have to delete the image, file attachment, and name from all three fields? No need—just create another hotspot button and label it Clear Image. Then copy and paste the following code into the programmer's pane:

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

This button removes the image, attachment, and text from all fields with a single click. Now you are all set, and users will love the way your Notes document displays images as they are attached to the documents!


SUBMIT YOUR TIPS!
We encourage you to send us your tips (You can also click the "Would you like to submit a tip?" graphic below.) Your tips can be anything you've discovered about any Lotus product. The most important thing is that your tip be interesting, useful, or handy. And be sure to include complete information about how your tip works. For ideas, take a look at our tip archives. If we publish your tip, we'll send you the IBM Redbooks Lotus Collection on CD.






Would you like to submit a tip?
    About IBM Privacy Contact