The EnterPage 15-03
November 30, 2012

In this issue:

TBK Tracker 4 Allows Native Tracking of ToolBook and HTML Content

Tracker Reporter Offers 178 Reports and Graphs for Tracker.Net Users

ToolBook 11.5 Coming Soon

Recent Blog Posts

Programming for e-Learning Developers Segment

Expert Information from Learning & Mastering ToolBook

OpenScript Tip from Learning & Mastering ToolBook

Web Hint from Learning & Mastering ToolBook


Welcome to the final EnterPage Newsletter for 2012. We have been hard at work creating the first new TBK Tracker version in 11 years. We followed that up with the brand new Tracker Reporter, a Windows application that connects to your Tracker.Net database and gives you 178 reports and graphs. We're looking forward to ToolBook 11.5 arriving soon and will be updating our ToolBook product line. This newsletter has all this information plus blog postings and Programming for e-Learning Developers tips on ToolBook, Flash, JavaScript, and Silverlight. We wish you all a happy holiday season and a bright 2013!

TBK Tracker 4 Allows Native Tracking of ToolBook and HTML Content

We have completely rewritten the freely-distributable TBK Tracker Administrator and Reporter applications as well as the TBK Tracker Player for HTML content. Here are a few of the new features.
  • Support Exam Engine 4 and Training Studio 3 content without any changes
  • Support other HTML content by making defined API calls
  • Player Windows application (.NET 4) hosts the HTML content
  • Freely-distributed Administrator and Reporter applications completely rewritten in .NET 4
  • Administrator adds batch import from any screen and improved functionality.
  • Reporter uses Microsoft Report Viewer technology to display 61 reports and 75 graphs organized by Student, Lesson, Course, Class, and Organization
  • Reporter architecture supports customization of reports and the addition of more reports
  • Reports and graphs have customizable logo and certificate graphics
  • Documentation completely updated

TBK Tracker remains $2,995 per development license with free runtime distribution of your content and the TBK Tracker Administrator and Reporter applications. Upgrade from version 3 is $1,595 and from version 2 or older is $1,995.



Tracker Reporter Offers 178 Reports and Graphs for Tracker.Net Users

The new Tracker Reporter application connects directly to your SQL Server to give 86 reports and 92. The application is installed to your local machine and connects over the network to your SQL Server machine. You select one or more students, lessons, courses, classes, or organizations. Many reports include "drill-down" capabilities where you can click on a parent item like a course and see child (lesson) information. Users run the installation and then use a simple screen to connect to a Platte Canyon® Tracker.Net™ database. For those users with multiple instances, they can switch between report instances very simply.

The Tracker Reporter is priced at $495 per user.



ToolBook 11.5 Coming Soon

The most recent word from The ToolBook List is that ToolBook 11.5 will be hitting the streets next week. We will do a complete review in the next EnterPage issue. For now, make sure that your support agreement is in place so that you get the new version without having to pay the more expensive upgrade fee. Feel free to email or call us at 888-866-5251 or 719-548-1110 if you want us to check on your support agreement or give you upgrade pricing.

ToolBook List

ToolBook Site

Recent Blog Posts

Here are some recent blog posts.

ToolBook: Going to the Next Page on Ctrl + Page Down

e-Learning Management 101

We hope you will visit our blog often and consider subscribing to the RSS feed.


RSS Feed

Programming for e-Learning Developers Segment

This feature is a short segment from Jeff's Programming for e-Learning Developers book.

Setting a Property

Much of e-Learning development involves the setting of properties, or attributes. We set the desired page or slide size, the color of our buttons and text, the desired font, and much more. In programming, we can even create our own properties as a mechanism for storing desired settings. Our task in each of our environments will be to set a button to green when it is clicked and then ensure it is reset to its original color when the user returns to the page or frame.
ToolBook - OpenScript
Although our primary focus is in setting properties via code, it is instructive to look at the built-in interface for setting properties. In ToolBook, you can select the object and choose Properties from the Object menu, the right-click menu, or the toolbar. Our task will be to change the color of this button to green in response to the buttonClick event and then set it back to the original color if the user returns to the page. When we check out the fillColor property in the help, we'll see that we can use a "named" color like green or a numeric representation of the color. That takes care of the first part of the task. For the second, we need to know that native ToolBook has an enterPage event (notice that this is where we get the name of this newsletter) that fires when the user gets to the page. OpenScript has a unique concept of a "notify" handler where an object like a button can ask to be notified of an event (and hence do its own response to the event). We could choose either notifyBefore or notifyAfter in this case. The resulting code is shown below:

to handle buttonClick
	fillColor of self = green
end buttonClick

notifyBefore enterPage
	fillColor of self = white
end enterPage

OpenScript Code for Setting the Color Property and Resetting it on EnterPage.
ToolBook - Actions Editor
The method of setting the color of a button and resetting it again is different. We select a Set Property action from the Action Palette and then select rgbFill from the list of available properties. From there, we can type in the name of the color, enter the RGB value (such as "100,230,44"), or click the Build Expression button. We select the name of the color from the "special values" that have been defined. Note that there are other useful values like pi and CRLF (Carriage Return Line Feed or a hard return) that might be useful in other circumstances.

Our final task is to reset the color when the user returns to the page. We do that by handling the load page event and setting the rgbFill back to white.
While setting properties for many objects in Flash is just as straightforward as for ToolBook, buttons are components, which are a bit more difficult to deal with. There is not an interface to change its color. We'll punt a little bit on doing it programmatically and set the color of the text of the button rather than the background color, as the latter involves a fairly complicated set of steps to "reskin" the component. We'll still learn some new techniques and some more sophisticated programming concepts.

We start by calling the runInitialLoad() method and adding the listener. This and the rest of the code is shown below.


function runInitialLoad():void {
	// set up listener
	Button2.addEventListener(MouseEvent.CLICK, setPropertyMethod);

function setPropertyMethod (eventId:MouseEvent):void {
	var textFormatId:TextFormat = new TextFormat();
	textFormatId.color = 0x00FF00;
	Button2.setStyle("textFormat", textFormatId);

Setting Up an Event Listener and Changing the Color of a Button Component.

Things get interesting with the textFormatId variable. We use the var keyword and declare it of type TextFormat. The ActionScript TextFormat class has various paragraph and character formatting settings. To use it, we need to create an instance of the class that we can use. This is our first example of a popular programming concept called Object-Oriented Programming (OOP). We cover it in detail later in the book but, in a nutshell, the class is like a blueprint that covers what can be built. But we can't do anything with it until we create an instance of that class. We do that with the new keyword. Once we have that, we set the instance's color property to the hexadecimal representation of green. The ActionScript Editor helps us a bit on what properties are available for the TextFormat instance. We then use the button's setStyle method to set its "textFormat" style to our textFormatId instance.

The last part of our task is to reset the button when we re-enter the screen. In this case, we take advantage of the fact that Flash recreates the button (in its original color) when we return to this key frame.
We'll now jump to HTML and JavaScript. We set the color of an HTML button in Visual Studio by going to the Properties Window, selecting the Style property, and clicking the button. This gives us insight into the approach we'll need to take to set the color programmatically. We will create an onclick handler for our HTML button. The challenge is then how to "find" the button from our JavaScript code so that we can change its color to green. There are some good techniques for looking for the object, but since the object that we want is the one that initiated the call, we can take advantage of the JavaScript this keyword as shown below.

<html xmlns="" >
    <title>HTML/JavaScript Sample</title>
    <link href="StyleSheet.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript">
function Button2_onclick(objectId) { = "green";
 <form action="index.htm">
    <h2>Setting Properties</h2>
    <input id="Button2" type="button" value="Button2" class="InputButton" onclick="return Button2_onclick(this)" />
    <br />

HTML and JavaScript for Setting the backgroundColor Property of a Button.

Rather than using the default return Button2_onclick() generated by Visual Studio, we add this as a parameter to the function. At the same time, we call this parameter objectId and add it to the function. That allows us to start setting the property that we want immediately. We use a JavaScript reference to come up with the .style.backgroundColor = "green" syntax.

Once again, we don't need to worry about resetting the value since the original look of the button will return when its HTML page is reloaded.
Although a bit easier to work with than Flash components, Silverlight buttons have a pretty extensive template structure that makes it challenging to work with their background color. So we'll again change the text color instead. We select Foreground and then the Solid color brush tab. Finally, we click on the color we want. We could also enter in the RGB or hexadecimal value.

Where do we go from here? We might use IntelliSense along with the fact that we clicked the Foreground line in Blend to reveal that the name of the property we want is Foreground. We might then try to set it to green in code. This is where the power of Visual Studio really starts to help us out. We get an indication of an error from the squiggly line (similar to a spelling error in Microsoft Word). We could hover over the line or use the Error List window to see what the error is: Value of type 'String' cannot be converted to 'System.Windows.Media.Brush'. We can't set a property of type Brush with text (a String). The idea of a brush comes from drawing tools that fill in shapes or parts of the image. In Silverlight, all colors are some type of brush. Since we want a single color (green), we make a SolidColorBrush object (we get an indication of this by the Solid color brush tab in Blend as well). Similar to how we needed to create a new TextFormat instance in ActionScript, we need to create a new SolidColorBrush object. IntelliSense gives us two options for making the object. The second one allows us to specify the color. This is quicker and less typing than creating the brush and then setting its color property afterwards.

The last challenge is how we get our hands on the color. We could make a new Color object from the RGB value, but we can use the named color. Now that we have created our brush instance, we go ahead and set the Foreground property.

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)

    Dim brushId As New SolidColorBrush(Colors.Green)

    Button2.Foreground = brushId
End Sub

Setting the Foreground Property of a Button in Silverlight.

Programming for e-Learning Developers Information

Order Programming for e-Learning Developers ($29.95 with free shipping in the U.S.)

Expert Information from Learning & Mastering ToolBook 

By Tim Barham

Importing Graphics at Runtime

ToolBook can now import JPEG (and PNG, GIF, TIFF, WMF) files at runtime using the import resource OpenScript command. This was restricted to BMP with previous versions of ToolBook because we used third party filters to import formats other than BMP, and while we had the right to distribute these filters, ToolBook users didn't. We have now built the functionality into ToolBook and no longer use the third party filters.

OpenScript Tip from Learning & Mastering ToolBook

By Jeff Rhodes, Platte Canyon Multimedia Software Corporation

Setting SkipNavigation via the Command Window

The code below shows how to implement the logic of the "Set SkipNavigation" DevEx tool if you wanted to do it in the Command Window. 18 is the first page number in the range and 29 is the last page number. In DevEx tool itself, you need to read the starting and ending page numbers from fields and do some error checking to make sure the book has that many pages and so forth. But this code shows the main logic.

step num from 18 to 29
	pageId = page num
	skipNavigation of pageId = true
end step

Web Hint from Learning & Mastering ToolBook

By Tim Barham

SCORM Question Identifier

Question: If you are using the Quiz Summary object in ToolBook, do you know what is reported to the LMS for the question identifier? Since ToolBook question objects now have an option for setting the question text, that would seem to be a good choice for the identifier. Or does it still rely on the question object's name?

Answer: We don't use the question text as the SCORM question identifier (as it is not an appropriate value for that field), but we do pass it to the LMS in the "interaction description" field.

For the question identifier, we used a munged together value that includes the author specified question name, the object id and the page id, to ensure a unique value.

Editor note: This is why it is very important to give a descriptive name to your question objects. It will greatly help in interpreting reports from your Learning Management System.

The EnterPage is distributed up to four times per year, with occasional special issues. Individuals who have expressed interest in Platte Canyon Multimedia Software Corporation or its products receive The EnterPage. Suggestions for articles or proposals for article submissions are welcome. Send information to Back issues of the EnterPage are available at:

Platte Canyon Multimedia Software Corporation, 8870 Edgefield Drive, Colorado Springs, CO 80920, (719) 548-1110