Manage Learn to apply best practices and optimize your operations.

Mark calendar entries red and strikethrough

This tip describes how to mark calender entries.

I recently had a request from a user to allow for Calendar entries to be marked in Red and Strikethrough text by clicking an action button. These would be displayed along with the 'Normal' entries within the Calendar. She also wanted the ability to reset the 'Marked' entrie(s) back to normal.

Below are the steps to recreate the solution I came up with. If you have a better solution I would love to know:

  1. Open the users Mail file in Designer.
  2. Open the ' _Calendar Entry | Appointment ' Form
  3. At the end of the Subject field press the enter key and create a new Text, Editable field called Marked.
  4. Open the Hide When Tab of the properties box for this field and select all for reading and editing, we want to hide in read and edit modes. Do not place any default value into this field.
  5. Save and Close the form.
  6. Right click the ' _Calendar Entry | Appointment ' Form and select Design Properties.
  7. Click the Design Tab and select the 'Prohibit design refresh or replace to modify'.
  8. Open the View '($Calendar) alias Calendar'
  9. Select the Description column and copy to Clipboard then Paste.
  10. You now have two Description columns. Select the end one, farthest to the right.
  11. Open the Properties box for this column and change the display color for the documents to Red and with the Strikethrough attribute.
  12. Edit the formula for this column to read :
    xxLocation := @If(@Length(Room); 
    "Location: " + @Name([CN];@Subset
    (Room;1)); @Length(Location);"Location: 
    " + Location; "");
    xxChair := @If(AppointmentType = "3";
     "Chair: " + @Name([CN];Chair); 
    TaskType = "2"; "Owner: " + 
    @If(Marked="Y";@Trim(Subject : 
    xxLocation : xxChair);"")
  13. Note that only the last line of the formula has changed.
  14. Edit the formula in the first Description column to read:
    xxLocation := @If(@Length(Room); 
    "Location: " + @Name([CN];
    @Subset(Room;1)); @Length(Location)
    ;"Location: " + Location; "");
    xxChair := @If(AppointmentType = "3"; 
    "Chair: " + @Name([CN];Chair); 
    TaskType = "2"; "Owner: " + 
    @If(Marked="N" | Marked = "";
    @Trim(Subject : xxLocation : xxChair);"")
  15. Note that only the last line of the formula has changed.
  16. Open the Action Pane for the View and add an action button to the bottom of the current list.
  17. Name it ' Toggle Strikethrough', no icon, Show on Action bar only.
  18. Add the following Lotusscript code the the Click event of the Action button:
    Dim ns As notesSession
    Dim db As notesDatabase
    Dim ncol As notesDocumentCollection
    Dim ndoc As notesdocument
    Dim workspace As New NotesUIWorkspace
    Set ns = New notesSession
    Set db = ns.currentDatabase
    Set ncol = db.unprocessedDocuments
    Set ndoc = ncol.getfirstdocument
    subj = ndoc.GetItemValue( "Marked" )
    If subj( 0 )="N" Then
    Call ndoc.replaceitemvalue("Marked","Y")
    Elseif subj( 0 )="Y" Then
    Call ndoc.replaceitemvalue("Marked","N")
    Call ndoc.replaceitemvalue("Marked","Y")
    End If
    Call workspace.ViewRefresh
  19. Save and Close the View.
  20. Right click the '($Calendar) alias Calendar' View and select Design Properties.
  21. Click the Design Tab and select the 'Prohibit design refresh or replace to modify'.

Thats it. Open your calendar and select an entry and click the button to test...

Dig Deeper on Lotus Notes Domino Formula Language

  • Favorite iSeries cheat sheets

    Here you'll find a collection of valuable cheat sheets gathered from across the iSeries/ community. These cheat ...