Answers to Challenge ‘Sequence in advanced action’

One week ago I posted this challenge

  1. Which action will be functional: A or B?
  2. Why will the non-functional action fail?
  3. Could you ‘fix’ the non-functional action?
  4. Why is using a shared action not considered to be an alternative.
  5. … other ideas?

As promised, here are the answers to those questions (didn’t get any answer to 3 nor 5)

1. Correct action = B

Only action B will be working correctly. Action A will always show the same image, in this case image 4.

2. Why is A failing?

The reason was already ‘hidden’ in the title slide. It is linked to the way advanced (and shared) actions are read and executed in Captivate. All commands will be done, starting with the first decision from top to bottom, then with the second decision (top to bottom) etc until the last command in the last decision is finished. This is different from some programming languages, where a script can be finished before reaching the end, by breaking out of it. Captivate doesn’t support breakout. Hence the importance of screening the sequence of commands in a decision, and the sequence of the decisions themselves. Be also very careful with conditional decisions when using both the THEN and ELSE part! In most cases understanding the logic is easier when you do not use the ELSE part.

Translation of the commands in action A. Remember: the user variable v_click is tracking the number of clicks, there are 4 images to show in sequence and a loop has to be created.

  • First condition: What has to happen when v_click =0? First image has to be shown, and since it is a loop, it could be that the last image 4 has to be hidden. Looks logical. However, the problem is in the change of the variable to 1 with the Assign command!
  • Second decision: What has to happen when v_click =1? But it is 1 after the first condition (Assign), so this is true, and image1 will be replaced by the image2. Again, the variable will be changed, now to 2 (Assign)
  • Third decision: What has to happen when v_click =2? It is 2 after the second condition, image3 replaces image2 and the variable value is changed to 3.
  • Fourth decision: What has to happen when v_click =3? It is 3, result is that image3 is replaced by image 4, and the action ends in this situation. Variable is set back to 0. The next click will repeat all the conditions again and result is the same: image4 remains.

3. Fix the wrong action?

Strange that no one answered this challenge. In 2 you did see the cause of mal functioning: the change of variable within a conditional decision. Let us start by taking it out in a separate decision which is not conditional. You cannot use Assign in that case, because that means filling the variable with a fixed value. So I will replace Assign by Increment.

If I want to keep the decision commands as they are in the original action, with one Hide and one Show command, the sequence of the new (5th) decision is important: it has to be at the end, after the 4 original decisions. Result of the fixed action:

4. Shared action not an alternative

One user mentioned that a shared action was not appropriate because it is used only once. Shared actions are not only useful within one project, but have a lot of other advantages as I have mentioned in previous articles: their appearance in the Library, which can be used as external library to re-use the action in any other project is the main reason.

To be a shared action, that is useful for multiple situations, the number of photos should be variable, not fixed to 4. That means an extra variable (v_max). Both actions at this moment have 5 decisions, which is the number of photos + one for the increment (or eventually decrement). It is not possible to make the number of decisions variable however, which means a possible shared action would not be very flexible. It could be useful as template for a future advanced action, since duplicating a decision is very simple.  To be used as a shared action that can be used out of the box, it is not suited.

5. ..?

No answers. What about an automatic looping of the photos, using a While loop? Wondering if someone would take that challenge?

Or reversing the logic: use Decrement instead of Increment?

The post Answers to Challenge ‘Sequence in advanced action’ appeared first on eLearning.

Captivate’s Quizzes (1): Terminology


Since 2008 I have been blogging regularly about Captivate. The most visited post is a rather old one date October 2011. It is labeled  ‘Question Question Slides‘ and believe me, still has daily views.  It is the reason why  I consider Quizzes as one of the three main topics for any Newbie in ‘Three Skills to Acquire‘.  Since 2011 quite a lot has changed in Captivate, although the basic design of quizzes is still the same.  Many peers have asked me in the past to publish a book about Quizzes  (could easily fill a book if it included custom questions). From what I feel in the community, a book is not at all the appropriate medium anymore. However I want to publish a sequence of articles about Quizzes, as I did for the Timeline (another stumbling block), with up-to-date information. It is important to understand the terminology, which is a problem when trying to answer questions everywhere: there is no ‘official’ glossary for Captivate and lot of terms are used in a haphazard way. To avoid any misunderstanding in future posts about Quizzes, I want to start with explanation of the different terms concerning quizzes. Some are ‘official’ also to be found in the Help documentation, some are terms I am using as well.

Drag&Drop will not be included in this sequence of articles, it is not following all the rules of the normal question types

Quiz Menu

Although you can insert Question slides and Knowledge Check Slides from the big button Slides, the place to be is the Quiz menu:

The red box shows the 4 possible choices:

Question slide

Is based on a dedicated Quizzing Master slide, depending on the type: True/False, Multiple Choice, Fill-in-the-Blank, Short Answer and Sequence have the same master slide, Matching, Hotspot and Likert have each an individual master slide. Beware: Likert type cannot be used in a responsive project, whether Fluid Boxes or Breakpoint workflow is used.

An inserted Question slide will have these settings by default (except Likert which is set to Survey):

  • Graded
  • 10p score, no penalty
  • 1 attempt
  • actions Success/Last Attempt are set to Continue
  • pausing point at 1.5 secs
  • 1 Failure message
  • Reporting turned on
  • Included in Quiz Total

Most settings can be changed. Only one type has the possibility for partial scoring: MCQ with multiple correct answers. MCQ with one correct answer has the functionality of Advanced Answers (message/action). If number of attempts is higher than 1, you can have up to 3 Failure messages.

Question slides have a dedicated  category of system variables, read-only. More information in this post

You can use the On Enter event of a question slide to trigger a custom action, but not the On Exit event. Question slides, like interactive objects have a Success and a Last Attempt event which can be used for actions.

Random Question Slide

Is a placeholder slide, which will be replaced by a random question from a question pool. Pool questions are based on the same quizzing master slides as normal question slides. On Enter event can be used on slides in the pool, not on the placeholder slide. The same quizzing system variables are used for random question slides as for the normal question slides.

You find the option for Random slides also in the dialog box ‘Insert Question’ which you open with Quiz, Question slide.

More details about this type in Random Questions, Do’s and Don’ts

Pretest Question Slide

Slides are based on the same master slides as the normal question slides. They have a special bunch of system variables, will not be included in the variables used for question and random slides. The Pretest slides have only one goal: to have navigation after the pretest based on the results. For that reason you set up a Pretest action. These special slides have limitations:

  • They need to appear in sequence at the start of the course.
  • All free navigation will be disabled: both by playbar and by Table of Contents (reason is that learner cannot go back to the Pretest slides).

Knowledge Check Slide

This new type was introduced with Captivate 9.  Likert questions nor random questions can be used. They are not scored, will not be present in the quizzing system variables nor in Review/Retake. They can be recognized by a special icon in the Filmstrip. This is the default setup:

  • Not graded
  • No score, no penalty, partial scoring in MCQ impossible
  • Infinite attempts
  • action Success is set to Continue
  • pausing point at 1.5 secs
  • No Failure message
  • No Reporting

Some featured can be changed: you can limit the attempts and will then get a Last Attempt action. You can turn on Failure message(s).

A complete comparison with normal quiz slides can be found in Tips for Knowledge Slides


  1. It is possible to copy/paste normal question slides in a question pool  to reuse them as random slides.
  2. It is possible to copy/paste a question slide from a pool as a normal question slide in a project.
  3. It is impossible to convert a normal quiz slide to a Knowledge Check slide nor to a Pretest slide.
  4. It is impossible to convert a Knowledge Check slide to a normal quiz slide nor to a Pretest slide.
  5. It is not possible to convert a Pretest slide to a normal question slide, nor to a KC or random slide.

PS: KC slides can also be used as Overlay slides in an Interactive video. You’ll find more details in Tips for Interactive Video.

Question slides can be used in 360 slides and VR projects. Styling of those slides is limited at this moment, cannot be based on a custom theme.

Import GIFT file

Instead of adding the question/answers in the individual slides, Captivate allows two alternatives, one of them being GIFT import. Moodle developed this ‘language’, you can find the full documentation here. Use a text editor which allows to publish to non-formatted txt files. This file can be used to insert all types of questions in Captivate with the exception of Likert, Hotspot and Sequence types. There are also workflows which start from an Excel file.

Lot of features are supported: for MCQ with multiple correct answers you can set up partial scoring, you can add feedback messages etc.

GIFT import is possible for normal question slides, for slides in a question pool. It is NOT possible for Pretest slides, nor for Knowledge Check Slides.

Especially when dealing with big amounts of question slides, and/or many pools I like to keep the questions ready in a GIFT file as backup and for eventual editing

Import CSV file

New import workflow appeared with CP2019: use of an Excel template which will create a CSV file that can be imported. You’ll need two files which are stored in the GalleryQuiz under the installation folder of Captivate. I published a small article about this workflow. Using the macros in CSVQuestionsCreationMacro file is pretty straightforward and documented in this tutorial by Dr. Pooja Jaisingh.  Same question slides are supported as for GIFT import (T/F, MCQ, Matching, FIB and Short Answer). There are some limitations, reason why I still stick to the GIFT alternative:

  • You cannot indicate partial scoring for MCQ with multiple correct answers
  • CSV file not really suited as backup, since you cannot edit a question once it has been added to the CSV sheet
  • Got some errors when trying CSV editing with importing to an Excel file, and exporting to CSV. File was not accepted by Captivate.

Quizzing Master Slides

All types of question slides described above are using the Quizzing Master slides. Each theme in Captivate needs at least 6 master slides, whether it is a blank (non-responsive) project, a Fluid Boxes (responsive) or a Breakpoint Views (responsive) project. Blank master slide is always required (for PPT import an software simulations), 4 question master slides and one score master slide. The Blank theme used to show this minimum set, but for some reason in CP2019 a Title master slide was added (?) which I deleted in this screenshot.

I will focus on editing those quizzing master slides in a later article. In this introduction I just want to point out some very special aspects of those slides.


The timeline of the quizzing master slides, and the result master slide is very simple: you see only the slide timeline. There are no placeholders, no object timelines like you normally find  on content master slides. However when you look at the content of those master slides, you see a lot of objects!

You don’t see any pausing point on the master slides, not for the questions, nor for the score master. However when you insert a question slide (any type) it gets automatically a pausing point at 1.5secs. Same for the Score slide.

When you select an object on the master slide (button, a feedback, Question, Answer area) they still don’t show a timeline. Their properties will appear. I will point to the objects in a question (master) slide or a score (master) slide as:

Embedded Objects

My definition: objects that do not have an individual timeline, not on the master slide nor on the slide itself. Those objects have functionality built in, which control the workflow for the slide. I talk about the Submit process (see future article), the appearance of messages, the inclusion in quizzing system variables etc. Just one tip: be careful when dealing with Embedded objects.

Those objects have absolute priority in the z-order, also known as stacking order. They will always appear on top of extra inserted custom objects.

Puzzling: normally the only interactive object allowed on a master slide is a shape converted to a shape button. However on the quizzing and score master slides the used buttons are all Transparent buttons.

When creating a question slide or a score slide, not all objects will appear. It depends on the setup in Quiz Preferences (see later article), the Quiz Properties of the slide and… on the situation. The Review Navigation buttons (with the double arrows) on quiz slides will only appear during Review. The Retake button on the score slide can only appear if more than one Attempt on Quiz level is allowed.


So much has to be told about Quizzing, always more than I expected. In future posts I will try to write about:

  • Two-step Submit process
  • Tweaking/customizing that process
  • How to handle Embedded Objects
  • Quiz Preferences
  • Editing the Master slides for quizzing
  • (Setting up the Pretest condition)
  • Audio on Quiz slides
  • Custom objects on quiz/score slide
  • Custom score slide
  • Scoring for KC slides
  • ….

I am sure this list is not complete. If you want to add more ideas, feel free to comment.

The post Captivate’s Quizzes (1): Terminology appeared first on eLearning.

Find the Correct Action


Fixing bugs is one of the best ways of learning. That is my personal experience and I suspect I am not at all unique. Several years ago I solved a problem for a Captivate user, which I will use now for this challenge.

Watch the output

Goal was to show a sequence of images, not all in the same location, by clicking a button. In this case, there are only 4 images. It is looping, you can continue clicking eternally. No multi state objects were used (they didn’t exist yet when I solved this issue):


Possible actions

To understand the meaning of the labels, here is the timeline of the photo-slide:

You’ll see the Preview of two advanced actions, created in CP2019. They both use one user variable v_click which is defined with a default value of 0.

Action A

Action B

Your challenge

  • Which action will be functional: A or B?
  • Why will the non-functional action fail?
  • Could you ‘fix’ the non-functional action?
  • Why is using a shared action not considered to be an alternative.
  • …. other ideas?

Looking forward to your answers….

The post Find the Correct Action appeared first on eLearning.

Object Styles in Responsive Projects


This is the last blog in a sequence of 3. In the first article I explained meaning of Object Styles when creating a custom theme, ternminology and how to create a custom object style based on an example on the stage.

The second post explored in depth the Object Style Manager, for creation and managing of Object Styles.

In this last article the focus is only on Responsive projects: tips and tricks to keep in mind for Object Styles in a responsive theme. Since CP2017 Captivate offers two workflows for responsive projects: using Fluid Boxes and using Breakpoint Views. Tips will be specific for each of those workflows. If you want to re-read the advantages/limitations of both workflows, may I recommend reading this post, where I also include the workflow to a Rescalable HTML project.

Fluid Boxes project

For such a project I recommend to use real fluid boxes whenever possible. It is the only way of having a real fluid layout. If you demote (use that negative word on purpose) a Fluid box to a static fluid box to circumvent some limitations like stacking of objects, you lose the real fluidity and the layout can look very weird on smaller browser resolutions.  A static fluid box keeps the width/height ratio, and that may cripple other real fluid boxes on the slide.

Objects not allowed in normal Fluid Boxes

What are the limitations of real fluid boxes? Many objects cannot be used. For the Object styles, that means you don’t have to bother about styling those objects. They all are in the category of the Standard objects:

  • Highlight Box cannot be used because it is meant to be stacked over the object to want to highlight. If outer fill is selected, it is covering up the rest of the slide against that rule.
  • Rollovers are not possible in any fluid box (not even in a static fluid box): Rollover Area, Rollover Slidelet, Slidelet.
  • Zoom object cannot be used for the same stacking limitations: Zoom Source and Zoom Destination

Font size

The font size which you define in the Object style, is for the biggest browser resolution. In the default setup, it is indicated as Desktop (1024x627px). If you have set up a bigger resolution for the desktop, maybe for a 1280px wide resolution, you could prefer a slightly larger font size.

No need to bother about the other browser resolutions. After publishing fonts will decrease in size smoothly until the minimum font size is reached. At that moment the famous ‘icon’ will appear to indicate that te text doesn’t fit in the available text container (shape or caption). Just one tip: set the minimum font size to 10 if you expect to have learners on small browser resolutions.


For full control over the layouts on different screens, you need to switch to Breakpoint mode  workflow, using an option in the Project menu.

Objects not allowed in Breakpoints

All objects allowed for HTML output can be used in Breakpoint mode.  When you check the HTML5 tracker under Project menu, you’ll see th warnings about unsupported items like Slide transitions, Text animations. You’ll see that warning also for Rollover objects. However they will be functional, but only on desktop/laptop screens when a trackpad or a mouse is used. On Mobile screens, the rollovers will not be functional. I would not recommend to use the Rollover slidelet because it is no longer actively supported and can be buggy.

Font size in Breakpoints

In a Breakpoint views project, the font size will not decrease smoothly when you decrease the resolution of the browser. You have to set up the font size for all the Breakpoints you want to use in your project: from 3 (minimum) to 5 (maximum). Between those breakpoints the font size will remain fixed, equal to the setup for the  higher of the two breakpoints the browser resolution is situation: you’ll keep the font size of the Desktop view until the resolution of the landscape Tablet (if you activated it) or the Portrait Tablet is reached.

It is no secret that the Adobe team is promoting the Fluid Boxes workflow over the Breakpoints (which mean more work but offer lot more control to the developer). For that reason, there are no real Breakpoint views themes packaged with Captivate anymore. For a responsive project you always have to start with a Fluid Boxes, where you can use an appropriate theme. When switching to Breakpoints that theme loses all fluid boxes, but the object styles for fonts are not changed: all breakpoint views keep the same font size which is the maximum font size set up for Desktop (or higher Custom size) in the Fluid Boxes.

This is a situation where I use the Object Style Manager to start with the tedious work, eventually to be edited later on while designing the master slides. The OSM will now have a dropdown list for the activated Breakpoints, whenever font size is needed. That is the case for the Captions and Shapes under Standard Objects and for most of the Quizzing Objects. Of course, you don’t have to bother about Captions if you only use shapes and vice versa. Look at this screenshot, for the Title shape, common style in most themes:

When you check the font size for the 4 Breakpoints below the Desktop, you’ll see that the size is fixed. You need to decrease the size gradually. Minimum font size is 10pt. It is a bit guessing at the start to find a good distribution between the maximum and that minimum font size (which is for Mobile Portrait). My workflow:

  • I look for the smallest used font size on Desktop, that will have to be 10pt for the Mobile Portrait.
  • Once you have chosen Mobile Portrait in the dropdown list, it will remain for the other styles. Edit all mobile font sizes at once, related to that smallest size.
  • Landscape Tablet doesn’t have to be much smaller than Desktop, unless you use a really big resolution for the desktop breakpoint. So I’ll set up all the font sizes for that breakpoint.
  • etc.

Here is a check list of the objects I usually edit. Know that I never use captions, only shapes as text containers. As for the buttons, only shapes and transparent buttons (compulsory for quiz slides) are used.  They appear in the same sequence as in the OSM.

  • Buttons: I edit the style(s) for the Transparent button and for the Quiz button here (both will also appear for Buttons in the Quizzing category)
  • Text Entry Box: edit only one style which I set as default style.
  • Text Entry Box button switch to Transparent button whose default style has already been edited
  • Smart Shape: for use as text container.
  • Title: often start with 16p for the lowest breakpoint
  • Subtitle: often start with 14p for the lowest breakpoint
  • Success/Failure/Hint Shape: all need same font sizes. Beware some included themes use same style (Success), you’ll want different styles but with same font size in breakpoints.
  • Quizzing Partial Correct Shape: all other shapes use a default style which has been edited under the Standard objects.
  • Quizzing Progress indicator
  • Quizzing Review Area: is only used on the score slide to store the text about passing/failing
  • Short Answer

IMPORTANT:  Do save the theme when you have finished, and indicate clearly that it is a Breakpoint Views theme. That way you will be able to apply the theme when you have converted another project to a Breakpoint views workflow. If you change the desin a lot throughout , it may be worthwhile to create a Blank project with edited font sizes for Breakpoint Views projects.

Begging; if you do use Breakpoint views because you have learners using a lot of devices and want to have a simple look for the smallest screens, please log feature requests. It should be possible to choose which workflow to prefer when creating a responsive project: Breakpoints or Fluid Boxes.

The post Object Styles in Responsive Projects appeared first on eLearning.

Calculate Expiry Date (Expression, variables)


Today a user asked for help with coding to get an expiry date for a certificate slide,  see thread

It is a nice use case for the use of both system and user variables, and the use of the mysterious Expression command which is only available in the Advanced Actions dialog box (not as simple action in the Actions tab of the Properties panel). If  you are totally new to the use of variables, here are some links:

Using System Variables – part 1

Using System Variables – part 2

User Variables – Intro

Workflow described here step-by-step will show how to get the expiry date, 3 years from the present date can be calculated and stored in a user variable. It can of course also be done with JS, but I kept to one advanced action. Since I live in Belgium, I used the date format ‘day/month/year’. It is rather easy to change this to another sequence like the one used by ISO or in the USA.  Maybe I’ll post an interactive output, where you can choose the sequence of the 3 parameters. It is also possible to go for another way of presenting the date, but that is not treated here. Insertion in the Learning Interaction  ‘Certificate’ is not included neither.


1. Variables

You will be using these system variables, all from the category System information:

  • cpInfoCurrentYear: its value is a 4-digit number, at this moment 2019
  • cpInfoCurrentMonth: its value is a 2-digit number, still January at this moment, will be 01
  • cpInfoCurrentDate: its value is a 2-digit number, for me at this moment it will be 29; it may seem bit confusing that I don’t use cpInfoCurrentDay, but that gives a 1-digit number for the sequence in the week. Monday will result in 2 if t Sunday is considered to be the first day of the week in your OS settings.

You need two user variables (how to create them, see third link in the Introduction ‘Why?’)

  • v_year: will be used to calculate the expiry year, which would be 2022 for this user (3 years from now).
  • v_date: will have the full date of expiration after the calculations explained later.

The third variable v_choice has been used to offer a choice between the sequence for the date numbers. That is not part of this workflow.

2. Advanced action – creation

You need to create this advanced action, which is non-conditional I will explain each command:

  1. First Expression calculates the expiry year from the present year (cpInfoCurrentYear) and stores it in the user variable v_year. This is possible since the system variable can be seen by Captivate as a number, and using the mathematical operator +. Result will be of course 2022.
  2. The mathematical operator becomes here a ‘concatenation’ operator: it will add the string “/” to the day number. Do not forget the quote marks, because / is a mathematical operator. Result after this expression is the text:    29/   which will be stored in v_date
  3. Another concatenation replaces the value in v_date  by 29/01   
  4. Third concatenation results in v_date = 29/01/
  5. Last expression gives the final result v_date = 29/01/2019

The need for 4 expressions to get to the final value for v_date is due to the fact that the Expression command can have only one operator. You can use the Copy/Paste functionality in the Advanced Actions dialog box to speed up the process.

3. Assign action to Slide On Enter event

Attach the Advanced Action to the On Enter event of the slide, where you need to insert the variable v_date.

How you can insert a variable has been explained in the very first link I posted under ‘Why’.


  • Change the Advanced action to present the date in another sequence, like ‘Year/Month/Day’. If you are on CP2017 or later, maybe this blog could help.
  • For the fans of conditional actions: try to create a version where the learner can choose the sequence. You’ll need probably another user variable in that case and a multiple decision conditional action.
  • Which dangers exist for ‘cheating’ (I am a former professor) in the use case as described here? How would you cope with those dangers?

The post Calculate Expiry Date (Expression, variables) appeared first on eLearning.

Object Styles – Pillars of Themes


A while ago I posted a blog comparing a Theme for consistent design of a project, with the older Template workflow (which is bit buggy at this moment):

Themes vs Templates

You will have read that I always start each project by creating a custom theme, starting mostly from the Blank theme which has the minimum amount of master slides needed for each theme. More recently I offered some tips in Themes Q&A

Due to my past as civil engineer, I would like to compare a theme with a building :

  1. Theme colors palette (see Theme Colors) is the foundation. Palette is independent on type of theme: non-responsive, fluid boxes or breakpoint views.
  2. Object styles, the topic of this blog are the pillars. Breakpoint views need slightly different styles for objects containing text.
  3. Master slides are the beams. As in a building there is a lot of interaction between beams and pillars, together they are the structure You will often going back and forth with object styles while creating the master slides. Master slides depend on type of theme.
  4. Can be considered as optional: Recording defaults and Skin, depending on the project if you need them

Now you are ready to complete the building by filling in the walls, floors…. In Captivate those are the slides.

Captivate’s Object Styles

Contrary to a word processor, Captivate has no Text styles in the sense of a word processor. which mostly has a bunch of paragraph styles (includes leading, space before and after paragraph, indents, bullets….) and word/character styles. I will post a future blog about the Object Style Manager where you’ll find all object styles used in Captivate’s themes. Let us look at some examples:

  • Caption style: includes indeed the font, font size, eventually attributes (bold, italic, light), font color and leading, alignment but also the type of caption, margins within the caption, and the transition type. In the themes packaged with Captivate the caption type is mostly set to transparent, but that was not always the case in older versions and doesn’t need to be always transparent.
  • Text Entry Box style: has the formatting of the text but also the Fill (color and transparency) and the Transition:
  • Button style: becomes more complicated, because the button style includes 3 of the 4 Inbuilt states (Visited is not included).  In the screenshot, which shows a Default style (see later) for the button you can see that by default a Transparent button will be inserted. For each state  the text formatting of the label is defined (in case of a Text or a Transparent, button, this is not possible for an Image button which cannot have a label), but also the fill (here a gradient, and full opacity), stroke (color, width and style) and the corner radius. Formatting for the two other types is much more limited.
  • Smart Shape style: the most versatile object in Captivate can be used as text container, hence the text formatting similar to caption styles. But it can also be used as a button. That is why the object style has the same InBuilt states as for the Transparent button. The corner radius is missing because you can edit it when you choose a rounded rectangular shape.


Default Style: In the previous screenshots you see that all styles were set as ‘Default style’. The checkbox is automatically dimmed in that case.  When you insert an object of that type, it will automatically be inserted with that default style. The other styles which are not marked as default style can be used, but you’ll have to change them manually after inserting the object. Here is a screenshot of the 3 possible styles for a TEB. In a previous screenshot you did see that the Yellow is set as default style, this is one of the other styles that can be used:

Overridden Style: If you edit some formatting after inserting an object on the stage, a + sign will precede the style name as you can see in this screenshot (I changed the transparency of the fill and the font size). This is labeled as an ‘overridden style’.

Why is doing so considered to be bad practice in any style-based application? It means that if you have to make changes later on, this object will not be touched anymore. Maybe your client/boss wants to have another font for the TEB? If this is the only TEB in the course, you can find it and edit this TEB in place. When dealing with more TEB’s it is much easier to edit the object style itself (see later), it will be applied automatically to all TEB’s in the course, except for those with an overridden style.

Style menu in Properties : many sections in the Properties panel have a so-called ‘hamburger’ menu button. That is also the case for the Styles part, in this screenshot you see the style menu expanded for that TEB with the overridden style. You  can now choose to create a New style (if I want to keep the default style for later to be inserted TEB’s) or Save the editing in the existing style if you want all the TEB’s in this project to have this edited style. There is also a Reset Style to revert to the original style.

The option Apply this style to…. is a bit confusing in this situation. Suppose you have another TEB which is using the Default TEB Blue Fill Style you can use ‘Apply this Style to all objects with Style Default TEB Blue Fill, but it will be the original Yellow style that will be applied, not the overridden style. I would prefer to save first the edited Yellow style.

Create a Custom Style

You can create a style in the Object Style Manager, but it is easy to use the ‘from example’ workflow:

  1. Have a quick look at the Object Style Manager to see what is included in the style for your object type. I showed several screenshots above. It is not always clear from the Properties panel which features are included in the style. Example: Transition is included in some styles, not visible in the Properties panel but in the Timing Properties panel.
  2. Insert an object of that type on the stage. It will be inserted with the style set as Default style.
  3. Edit the features which you detected under 1. to your wishes.  Do not forget the states (Normal, Rollover, Down) for the interactive objects. The styled field will show that you have overridden the default style.
  4. Open the Style menu (hamburger) and choose the option ‘Create New Style’
  5. Give the style a significant name and confirm with OK

The style will appear in the Object Style Manager. But you don’t have to use the OSM to:

  • Set the style as Default style: is possible from the same Style Menu. Beware: for the example of the shape button, I would not set this as the default style because all shapes would take on that style. Really hope that we can have a default shape button style which is different from the default smart shape style in a future release.
  • Apply this style for all objects with a specific style. This is a workaround I sometimes use: for shape buttons I don’t use the default smart shape style, but one of the other styles (like a hint shape style if I don’t use it in the project) as long as I am not sure about the wanted button style. When I decide to create the definite style for all shape buttons, I can use the Apply this style to replace all those ‘hint’ shape styles by the new shape button style.

This problem only exists for shape buttons. Most other object types are not used for different goals like shapes.

If you want to include features which are not part of the style in a quick way, use the duplicate functionality (CTRL-D). It will keep not only the same style in the copy, but all features, including eventually attached advanced actions.

The post Object Styles – Pillars of Themes appeared first on eLearning.

Training Simulation: images as feedback


This step-by-step blog is for newbies, based on a question launched in the forum yesterday, look at the thread:

Goal: to have automatically images instead of the default failure message in a Software Simulation, Training mode. Don’t fear: I will not use any variables nor shared/advanced actions. It is a very simple workflow, provided to use it before recording! It is a lot more complicated if you want to achieve this after recording.

Default setup in all Themes

Feedback messages exist not only in Training/Assessment Simulations where they are linked to a Click box or a Text Entry Box, both interactive objects. You also have them for Interactive objects in normal, non-sim projects. In the default setup this is a bit confusing to newbies for these reasons:

  1. Feedback messages can be captions or shapes (both are text containers). Success, Failure, Hint messages have no individual timeline, they appear automatically, are linked to the interactive object: click box, button, Text Entry box
  2. In the default setup, the choice is to have Shapes, not Captions. You see this under Preferences, Defaults. You can change that preference by checking this box (SFH stands for Success, Failure, Hint):
  3. However this is NOT the default setup for those messages in Software simulations where Captions are the default. To change to Shapes, you need to check this box under Recording, Modes:
  4. Both types of text containers, Shapes and Captions do use a dedicated, default style. There is one style for Success, another for Failure and one for Hint message. You can check all of them out in the Object Style Manager (menu Edit, or SHIFT-F7). As all styles, these are part of the used Theme. FYI: I used the Windswept theme packaged with CP2019. Here are two examples: one for a Failure message in a Shape, another for a Failure message in a Caption.
  5. If you use the same type of text container for both normal projects and software simulations by changing checking either the checkbox in Preferences, Defaults to switch to captions, or the one in Recording, Modes to switch to Shapes for sims, in the default setup you will use the same style for all messages of that type. This may not necessarily be what you want, as is the case for the original issue here: only the Failure feedback message for the software simulation slides have to be ‘converted’ to images, not those for non-sim slides.


1 Switch to Shapes for Simulation feedback

Open Preferences, Recording and choose Modes.

Check off the option ‘Show Smart Shapes instead of Captions’.

2 Create shape filled with Image

2.1 Import Image in Library, check Size

Import the image you want to use to the Library using the second button: 

It will be in the Images folder, you can use JPEG or PNG (eventually GIF). Open its Properties with the right-click menu on its name and take note of the size:

2.2 Create a shape with that size

Create a (rectangular) shape with exactly the same size, using its Options tab (or eventually a grid created with guides);

That shape will automatically take on the Default shape style, in this case it is filled with a  Solid color, grey, from the Theme Colors.

2.3 Fill the shape with the image

With shape still selected, switch back to the Style tab in the Properties. Open the dropdown list under Fill, and choose Image instead of Solid. The default texture will now fill the shape.

Click the Image button to open the dialog box in this screenshot. You’ll see the folder Images from the Library and can choose your image, confirm with OK:

2.4 Edit Character features

Although the feedback now looks like an image, the text defined in the rdl file for recording feedbacks (too bad that it is not available in Preferences like the Quiz feedbacks) will appear anyway. For that reason you have to set up margins to force that text in the correct position by changing margins font size etc…

If you want to be able to add text in the shape, you can style that text (font, size, color) in the Character part, under the Style tab. For this particular image the challenge was setting up the alignment. I used the maximum number for the left margin (100), which was not sufficient. I had to add twice the Increase Indent as well.  In this case I supposed the feedback text would be edited in each slide. If you just want to keep the default feedback text which is (in English) ‘Incorrect, please try again.’ I would increase the font size, and probably also the bottom and right margins.

3 Create custom style

At this moment the field Style still shows ‘Default Smart Shape Style’, but preceded by a + sign. This sign means that the style has been overridden, which is a situation you have to avoid whenever possible. You will create a new custom style, using the tiny hamburger menu in the top right of the Style part. In that menu choose ‘Create new style’ and give that style a meaningful name. I labeled it ‘MyFailureShape’:

You don’t need the shape anymore now, you could delete it.

4 Set custom style to be used for Failure feedback

Open Preferences, Recording and go to Defaults. The Recording defaults dialog box opens. Those defaults are also part of the Theme, it is not necessary to change anything in the Object Style Manager. Find the feedback message where you want to change the style, in this case the Failure Shape style and choose the custom style from point 3.


Now you are all set. Start the recording, the Failure feedback will have your image style. However the size of the feedback will be automatically be rescaled to fit the size of the feedback text. You will have to check each slide and have to resize the shapes. AFAIK there is no way to keep a fixed size for any feedback message which would have been very useful for this use case. Will certainly log a feature request. Have a look at a failure message as it was inserted:

You could of course also use the same workflow for the Hint and Success feedback messages. If you want to use those feedback styles in other projects, the easiest way is to save the theme and to apply it to other projects. As explained in this blog, both object styles and Recording defaults are part of the theme (Master slides and Skin are the other components).

The post Training Simulation: images as feedback appeared first on eLearning.

Themes Q&A


This short blog is meant for newbies,  and is (again) due to what I hear/read on the forums, during (intermediate) training and consultancy job.   Yesterday I tried to answer users in two threads concerning themes:

Change color in theme

Main Master Slide

The last one reports a serious bug in the Help documentation, the first one is more a lack in that documentation. It is a pity that the Help is not something you can cout on, a problem which is not new at all.  I started blogging about 10 years ago because of lacks and bugs in the Help.  An “amazing application which is Adobe Captivate” (a quote of a fellow ACP who is not present in this portal) deserves better!

I’ll try to answer those two questions here, and offer some more tips for Themes..

1. Theme Colors

Editing or developing a theme start with the colors which will be used consistently in that theme.  Each theme  packaged with Captivate  has a Theme Colors palette which is labeled with the same name as the theme.  As described in an old post, that palette has 10 colors + 5 extra tints for each color. It is always available in the Color Dialog box as first button, A well designed theme will use only those colors: backgrounds, fill and stroke colors, font color etc. Most Learning interactions have a button to apply the Theme Colors as well.

If you want to change one color in the palette, as asked in the mentioned forum thread:

  • Rename te original theme (see screenshot: orignal was WindSwept, I renamed to MyWind) in the box with the Palette
  • Click the Customize button: the 10 colors will appear in a dialog box.
  • Click the color you want to change, you can use the Swatches palette, or the Color Wheel (where you can type in the hexadecimal code of the color or the RGB numbers).
  • When finished, confirm using the Save button


I already mentioned that the theme has to be well designed, only theme colors should have been used (is not always the case). Moreover no object style can be overridden (+ sign in the Style field) because for those the style will not change.

Another problem are the backgrounds. In the screenshot you see one of Captivate’s default themes, using several bluish colors (first three in the palette).  Those colors appear also in the backgrounds of several master slides: Title slide, Blank slide, etc You’ll find those backgrounds in the Library as…. images! That means they will not change automatically when ou change one of those bluish colors. That will only happen for the colors when they are used in object styles: fill of a shape, stroke of a shape etc….

As I wrote already multiple times: do not rely on names of the colors, they nave no meaning. In the theme mentioned above, the first color (Title) is never used for any title.

2. Main and other Master Slides

User did read this in the Help documentation

“The main master slide is the first slide in the Master Slide panel. The name of this slide is the same as the name of the theme. Objects and background color of this master slide appear on all other master slides. Each theme has one main master slide.”

This is indeed not fully correct, this text obviously was never upgraded since version….6. First, second and last sentences are OK, but not the one with the bold text.

2.1 Color Main Master Slide

Have a look at this screenshot, where I show the Master Slide panel in front of the Main Master slide:

The name of the main master slide is indeed the name of the Theme (it is a custom theme based on WindSwept). The main master slide has a solid white color as background. There is NO global project background, the used background is ‘Custom’, and that means that you can have a solid color, a gradient, or a custom image/texture. Those are the same options as for a shape fill.

You will see that the label is not appearing in the Properties panel. You can add a label but it will be added to the original name (MyWindSwept), not replace it.

None of the daughter master slides has that white color as background. It may not be very clear, but Content02, Conter07, Conclusion and the Quizzing Master slides also have a solid color background, however it is light grey, not white. All master slides in this theme  use a  ‘Custom’ Background. Look at the Properties of the MyContent master slide

You see that the Background is Custom, which means that the color of the Main Master slide is not inherited. In this case the background is fille with an image from the Library.

To inherit the color of the Main Master slide background, the Background has to be set to ‘Master Slide Background’. Here is a screenshot of the Pearl theme (default theme if you didn’t change it), which has originally a grayscale Color palette. I changed the background of the Master Slide (which is also set to Custom) to a Solid color, light green. You see here the Properties panel of the Title master slide, which inherited that color. It could also have been a gradient or even an image/texture, would have been inherited as well for master slides set to ‘Master Slide Background’.


  1. Project Background which is always an image which can be imported from the Library or from another location.
  2. Master Slide: where it will inherit the background of the Main Master slide. That can be the Project Background or a Custom Background (solid color, gradient, image/texture). It if is the Project Background, the result of ‘Master Slide’ and ‘Project Background’ is the same for a daughter master slide.
  3. Custom: which can be a solid color, a gradient or an image/texture.

Help text ‘background color of this main master slide appear on all other master slides’   is not correct.

is incorrect.

Warning: identical to the one under Theme Colors. If you use images as background, you’ll have to edit them separately when changing the Theme Colors palette, their colors will not change automatically.

2.2 Objects on Main Master slide

In the first screenshot you did see that I inserted two system variables on the main master slide: bottom left the name of the author, and bottom right the slide number. Those objects are not part of the background, since they have to be generated on runtime.  You could also have shape button (like a Next button) on the main master slide.

They will be inherited on master slides, which have the option ‘Show Main Master Slide Objects’ checked off. In the screenshot of the master slide ‘MyContent’ you see those objects appearing, and the option (highlighted) is checked. On the contrary, the Title master slide  for that same theme is not showing those objects:

Usually in the packaged Captivate themes both Title master slide and Blank master slide will not show the Main Master slide objects. Quizzing master slides can show them, but in many instances it would be better to turn them off. Be careful with the Blank master slide: it is meant to be used for PPT import, and for Software simulations.  It is not recommended to have extra main master slides on them.  In the WindSwept theme the Blank master slide has an custom image background, which is very strange, not at all the case in most themes.

Conclusion: the Help text “Objects …. of this master slide appear on all other master slides” is not correct.

Themes and project types

Be careful when editing/creating themes because you have 3 different types of projects and you need a theme of that type:

  • A non-responsive theme cannot be used for responsive projects with Fluid Boxes, nor for responsive projects with Breakpoint Views.
  • A responsive theme with fluid boxes (as are most included themes in Captivate, can be used for a non-responsive project, the fluid boxes will be ignored. However be careful: if you edit that theme and save it, you’ll not be able to use it for a responsive project anymore.
  • A responsive theme with Breakpoint views is not included with Captivate. You need to check  at least the object styles where text is used, because they need a font size for each breakpoint. You can use it for a non-responsive project, with the same restriction as above when saving the theme.

Some more links for Themes:

Themes and Templates

Fluid-boxes and master slides

Fluid Quiz Slides

Editing/Repairing Themes

The post Themes Q&A appeared first on eLearning.

Hiding Custom Navigation buttons – Advanced or Shared Action


I have been writing multiple articles about Shared actions (and Advanced actions), have presented webinars. Someone even labeled me as ‘Empress of Shared Actions’ but I still see this feature ignored by the big majority of even advanced Captivate users.  I will create a list of resources in another blog for those who want to learn more about them. This short showcase is an answer to a question posted today in the portal. A typical use case for shared, actions, but the user tried to do it with one Advanced action. Since I couldn’t ask him for permission to use his question (I am respectful of his privacy as an European), I will not point to the thread but explain the use case here:

  • The navigation in the course is not accomplished by a default playbar but by custom navigation buttons. To make it simple, I will use only three buttons in my example: SB_Next,  SB_Back and SB_Home.
  • On some slides the navigation buttons have to be hidden, maybe because  dedicated buttons will appear at the end of the slide, thus forcing viewing the slide.
  • Because of that request, it is not possible to have the shape buttons on the master slide because they wouldn’t have an ID, twhich means you cannot control their visibility.
  • The Shape buttons have to be on the first slide, Timed for the rest of the project, always on top. This is only possible with shape buttons not with the trhee old types of buttons. Beware: if you use a responsive project developed with Fluid Boxes, objects timed for the rest of the project are not allowed.

One Advanced Action? Possible but cumbersome

The user proposed a solution where the value of the system variable cpInfoCurrentSlide was checked, and based on that number the buttons would be hidden or shown.  One great advantage of this system variable: the index starts with 1, which is exceptional because all the other incrementing system variables start with 0. Hence the Expression needed to restart a slide from its first frame (index of cpCmndGotoSldie starts with 0):

Expression  cpCmndGotoSlide = cpInfoCurrentSlide – 1

To make the use case specific: if I have  50  slides, and I want to hide the buttons on slides 5, 10, 15, 20, 25, 30, 35, 40 and 45 that could be done with one Advanced action like this:

IF cpInfoCurrentSlide is equal to 5     OR
cpInfoCurrentSlide is equal to 10   OR
cpInfoCurrentSlide is equal to 15   OR
cpInfoCurrentSlide is equal to 20   OR
cpInfoCurrentSlide is equal to 25   OR
cpInfoCurrentSlide is equal to 30   OR
cpInfoCurrentSlide is equal to 35   OR
cpInfoCurrentSlide is equal to 40   OR
       cpInfoCurrentSlide is equal to 45   

Hide Gr_Buttons


Show Gr_Buttons

You see that I grouped the three buttons in Gr_Buttons.

Pretty cumbersome, right? Moreover this long condition has to be attached On Enter for each slide, and evaluated (will be fast, but I don’t like that type of long conditions). Moreover, if you change the sequence of slides, add or delete slides, you’ll have to check the advanced action and change the literals: those slide numbers will change. If you need to use this action for another course, you have to edit the condition.

Shared action

I have already blogged a lot about the advantages of shared actions. The action I designed for this use case, may seem bit complicated but it needed a lot of testing and understanding of the use of parameters which are literals. You can have a look at this published file. There is no content on the slides, I just indicated in the title if the buttons had to be visible or invisible. The used master slides is different as well. Reason: when you hide all buttons, there is no pausing point on the slide anymore. That is the reason why I added a transparent shape button covering the slide, and the mention ‘Click the slide to go to the next slide. A shape with two variables is inserted to follow the changes.


I used three variables in this action:

  • v_show: has a default value of 1, because in the default setting the buttons are visible. This value is the only non-compulsory parameter, can be changed to 0 if the buttons have to be hidden.
  • v_visib: one of my popular variables which I import with a shared action as described in my recent post.
  • v_null: because I had to avoid double use of the literal 0, I used this variable with a default value of 0, it is also described in the same post.

The only variable that will be changed is the first one, you don’t have to bother about the other two variables.

The Shared Action, filled in with the two parameters looks in the Preview window as follows:

You have to add this shared action On Enter for each slide. This cannot be done for all slides at once. I’m sorry, but you always have to define the Button group as parameter, my request to be able to promote a non-variable/literal to the status of being always the same is not yet heard. The other parameter (value of v_show) has to be 0 for the slides where the buttons have to be hidden, and 1 for those where you want them visible. Here is an example for a slide where they have to be invisible.

In the Library you can check the usage of the action, 10 instances were used:


As a gift for 2019 you can grab this shared action:


Import it into your course, the variables will be created automatically. You have to create only what you want to hide/show on the slides, group those objects and name them. Now you are ready to use that action On Enter for each slide. The group to be hidden/shown doesn’t have to be buttons, but they have to be displayed for the rest of the project.

The post Hiding Custom Navigation buttons – Advanced or Shared Action appeared first on eLearning.

User Variables – introduction


In a recent post I described how you can create a variable to replace the generic variable associated with a Text Entry Box., by using the X button next to the Variable field:

This was a very specific but rare situation in Captivate: the variable needed for a TEB is created automatically, it has by default the same name as the TEB itself. There were two reasons to replace it: to recognize it easier in any dropdown list, and because I really don’t like to use the same name twice for two different items (the TEB and the variable), which in most situations is not a good practice, could cause problems.

In that same post I also mentioned that two user variables are created automatically for each project: cpQuizInfoStudentName and cpQuizInfoStudentID. They can be populated with data from the learner’s account by some LMS’s and are used for reporting to an Internal Server. In all other circumstances you need to create user variables.

A typical use case are those Learning Interactions which can have one or more  associated variables. You can consult my table in this post to find these.  You can type in a variable in the Properties dialog box for those interactions, but that variable will not be automatically created, contrary to the situation with a Text Entry Box. You need to create it separately. There is also no way to select the variable from a dropdown list neither. Be careful: remember that variables are case sensitive, typos would lead to problems. Look at this screenshot for the Checkbox interaction, I associated 4 variables but have to create them (see further)

Defining a user variable

User variables are defined using Project, Variables. You’ll see the two default user variables cpQuizInfoID/Name and eventually variables defined with the TEB-workflow. To create a new user variable you click the button ‘Add New’. You could limit the definition to the variable name and clicking ‘Save’ button, but I strongly recommend to add a description as well. It makes it a lot easier to identify the variable when you have to edit the course weeks/months/years later. In this screenshot I still have to click the Save button or the ‘Discard’ if after all I don’t want this variable.

You see in the screenshot that I left the Value field blank, because for these variables I didn’t need a default nor start value at all. Those variables will be linked to an interaction.

As mentioned multiple times, the choice of the names is very important in Captivate. Except for some rare situations, you cannot use the same name for two or more different items (objects, variables, actions, ….). Using the first character(s) of the name to indicate the type of item is a way to avoid that. In most dropdown lists, you can use filtering to find a name (see the interactive video in Custom Play/Pause button).  That makes the name choice even more important.

The other buttons in this dialog box are:

  • Remove:  if you want to clean up, check which variables are not used anymore after finishing the project and use this button. You can open the Variables dialog box from the Advanced Actions dialog box (see this article). In that case, the Remove button will be missing however.
  • Usage: will list up where the variable is used. That will mostly be an action (simple/advanced.shared), can be compared with a similar button in the Library, and in the Advanced Actions dialog box.
  • Unused items: also to be compared with a Library functionality. In the example of the dialog box, the two user variable cpQuizInfo…. would pop up.
  • check box Geolocation: if you want to use a conditional action based on comparison between the system variable cpInfoGeolocation and the present location of the learner, you need to define a user variable. Since both variables need exceptionally 3 numbers (all other variables have only one string or number) you need to check this box to be able to define a user variable of that type. The dialog box will then look like (I used the Map button and typed an address):

You can edit each field of a the variable dialog box, except the Name field. Do not forget to save the changes with the Save button in the top of the dialog box.

Variable commands

Captivate doesn’t allow to define the type of a variable: toggle, numeric, string but is smart enough to detect which variable you have based on the commands you use. Typical for variables are these simple commands:

  • Assign: allows to fill a variable with a value or to change that value. This command can be used for any type of variable
    Example: Assign v_name with Lieve
                       Assign v_score with 7
  • Increment …. by …: variable will be recognized as a number, and its value will be increased by the indicated amount
    Example:  Increment v_counter by 1
                        Increment v_score by 3
  • Decrement …. by …: variable will be recognized as a number, and its value will be decreased by the indicated amount
    Example:  Decrement v_counter by 1
                        Decrement v_score by 2
  • Toggle: variable will be recognized as a Boolean variable. Its value will switch to the opposite value (0/1 or true/false).
    Example:  Toggle v_visb

These commands are of course also available in the dropdown lists of the Advanced Actions dialog box. For those actions you also will find variables often in:

  • Expression (command): which allows you to do some simple mathematical operations. The variables will be recognized as numeric. Here is a simple example, where the percentage is calculated from a score and the maximum amount of points (not using the quizzing system variables):
    Example:   Expression v_total = v_score/v_max
                         Expression v_total = v_total * 100
  • in Conditions (for a conditional action or a while loop)  you will often use variables, either to compare with a literal or with another variable
    Example: IF v_visib is equal to 1    or
    IF v_name is equal to v_null    or
    While v_counter is equal or greater than 1

My favourite variables

In the examples above, and in other blog posts you’ll find often these variables. Read till the end to see how I avoid to define them from scratch in each course:

  • v_counter: often used to show the number of clicks, of visits (to a chapter), and/or to create a progress bar or show a ‘reward’.
  • v_null: an empty variable to check if the learner has entered at least one character in a field (see Where is Null?)
  • v_visib: a variable to track if an object/group is visible or hidden (see Multiple toggle buttons with 1 Shared Action)
  • v_name: often associated with a TEB
  • v_start: often used to store the first frame number of a slide when using micro-navigation (see Force First View)
  • v_one, v_two…..:  variables which I use for multiple goals like a dashboard, the checkbox widget,

I use a shared action which I drag to each new course to avoid having to redefine these user variables. This is described in detail in the first tip in Rare Use of Shared Actions.

The post User Variables – introduction appeared first on eLearning.