The Source for ToolBook and VBTrain.Net News
from Platte Canyon Multimedia Software Corporation
December 15, 2005
Control Spotlight – Web Player
Conferences, TBCON, love of ToolBook. .NET and expanded enchantment with Flash and other tools.
We are excited to announce that beginning in 2006 we will now have two co-located conferences: The ToolBook User’s Conference and The e-Learning Authoring Conference. The first one will feature the ToolBook content that you have grown to love as well as the opportunity to interact directly with the SumTotal development and management team. The new e-Learning Conference will provide similar opportunities for developers using Flash, .NET, or ToolBook. It will also have a special management track covering SCORM, estimating, quality assurance, marketing, and similar topics. What both conferences will have in common is a relaxed atmosphere, the opportunity to mix with the best developers in the world, great food and drink, and an unbeatable price.
We anticipate the free-flowing exchange of information between the two related conferences and feel the simultaneous nature of both conferences is an advantage to attendees who are focused on either event. ToolBook developers can learn how to position and use ToolBook within the context of other e-Learning creation tools as well as hone their Flash, .NET, and management skills. Flash and .NET developers will be see state-of-the-art techniques for applying these environments to e-Learning. Managers will be able to hone their skills while accompanying their teams to THE event of the year.
Both conferences will be in
We are pleased to announce the release of new version of our online assessment tool, Exam Engine, on December 14, 2005. Exam Engine allows subject matter experts to easily create database-driven, SCORM-conformant exams without any programming. Pull questions randomly by objective, email results to a manager, store question results in Access, SQL Server, or XML, include media with questions, easily update questions and objectives, and much more. Here is a list of some of its new features:
· Support SCORM™ 1.3/2004 Runtime Environment (in addition to 1.2)
· Save exam and question data to Access or SQL Server for question analysis
· Add media playable by the Windows Media® Player, Flash, or RealPlayer to questions
· Display graphics or media above or to the left of questions (in addition to the current down and right)
· Configure web server caching of questions and settings
· More easily support multiple languages
· Automatically emailed reports in Microsoft® Word, Microsoft Excel, HTML, and/or plain text formats
· Better support Netscape®, Mozilla™, and Firefox™ browsers
· Display an optional Login page for capturing user name when not run via a Learning Management System
· Hide exam results if desired for high-stakes tests
· Redirect to a URL when SCORM is not detected
· Display an optional technical support email message, link, and input screen for communicating with a help desk or administrator
· Much more!
Pricing is unchanged at $2,995 per developer.
Take a rock & roll exam: http://www.vbtrain.net/examengine
The popular Learning & Mastering ToolBook CD-ROM training
series now includes content on Assistant 2004. With a wide range of updated
content, it is the most complete Assistant training
For you Instructor users, read about Learning & Mastering ToolBook Instructor 2004 at:
by Chris Bell
When I got engaged last decade, I thought the whole world was going to be amazed at my luck for marrying such a spectacular person. It turned out that, while people were happy for me, my personal life didn't really concern a lot of people. It was a lesson in humility. Maybe decisions that seem big to me aren't as big to others. What a shock! In a similar vein, I've been wondering if Platte Canyon's decision to offer a conference focusing on general e-Learning Authoring practices would raise the eyebrows of our long-time friends who think of us as ToolBook developers. I've been worried that people will think that we're somehow turning away from ToolBook by allowing a broader focus on other tools like VBTrain.Net and Flash. In fact there is nothing new to our approach. We have always advocated choosing the right tool for the job. Often that tool has been ToolBook. We have also tried to share our passion for .NET over the last few years. And Flash continues to impress for animation and more recently, for full-fledged applications. So, while my engagement experience has led me to wonder if anyone really cares, I'd still like to offer the assurance that while we are interested in other tools, we still love ToolBook.
In our recent trade show experiences, we have seen a lot of interest in SCORM Watch. SCORM Watch is a tool for checking how your content works with a Learning Management System (LMS) that uses the SCORM runtime environment. It lets you monitor the messages sent back and for the between the LMS and your content (called a "SCO" in SCORM-speak). In addition, you can save any state and start-up again, confirming bookmarking behavior for instance. Creating SCO's that successfully interact with a LMS is tough. Most developers are not able to run their LMS locally on their desktop. And even when they get to test the SCO against the actual LMS, they are not able to view the individual messages or see the return values. In addition, advanced authoring environments such as ToolBook hide much of the runtime communication from the developer. This is nice until the developer needs to add capabilities or debug a problem. At that point, they need to know what SCORM messages get sent and when.
SCORM Watch does NOT use Java and can launch SCO’s with a file reference (c:\content\index.html) or via a URL (http://localhost/training/index.html). You can even put it on your web site for troubleshooting end user problems. SCORM Watch helps you “Build the Perfect SCORM” for $395 per developer.
In addition to using them in our own Exam Engine product, we sell our Question and LmsApi controls to .NET developers interested in building their own e-Learning applications. We recently released version 2 of each of these products.
Question added SCORM 1.3 (2004) support and the option to use relative positioning and display all of its elements inside HTML tables, among other changes. This new option is helpful when integrating Question on a page with dynamic images or extensive use of tables. Version 2 also has improved and updated sample applications. Question is $495 and is part of the $995 VBTrain bundle.
VNU's Training Fall conference began life in 1998 or so as the
OnLine Learning Conference. Since then, the focus has drifted towards a general
Training Conference with sessions on e-Learning presented alongside ones on
classroom training techniques (and a fair amount on "blended"
approaches that straddle the two camps). It is an excellent event for training
department managers and trainers focused on all aspects of training. There
aren't as many technically oriented sessions as our geeky friends would like,
but for instructional designers and managers this is a good event. With about
1500 attendees in attendance, we had the opportunity to show Tracker.Net,
ToolBook, Exam Engine and most of our other tools. We are already planning on
exhibiting and attending the Spring Training conference to be held in
On the other end of the spectrum is the e-Learning Guild's DevLearn conference. With a strong focus on practical how-to aspects, the presentations included a great deal of analyzing programming code and dealing with things like XML. The show drew about 250 attendees and had a small expo floor where we had a booth. Jeff Rhodes and Chris Bell both gave presentations at the event and will be presenting at other e-Learning Guild events as well.
There are 140+ tools and shortcuts in the Plug-In Pro for ToolBook, and we're working hard to add even more for a soon-to-be-released next version. We created each of these tools because we needed it. People usually choose to get Plug-In Prot for one or two tools, and then slowly they discover more and more tools that enter into their daily development techniques. This EnterPage column is normally reserved to highlight one of Plug-In Pro's tools, but for this issue, we're going to do something a little different. We thought it would be helpful to take a look back through previous EnterPage issues and briefly describe previously featured tools. So, let's jump in and look at these proven tools:
User Properties Editor - provides a big area for viewing and editing user properties, lets you select an object on the page/background from a drop-down list and then be able to view/edit THAT object's properties
Color Spy – Identify the exact color on your ToolBook page by parking the mouse over it
First and Next Background – Navigate to backgrounds in order.
Show Page Objects – Show all hidden objects on the page and then re-hide them
CBT Question Editor – A custom question editor for faster access to most common parts. Automatically finds the question on the page.
Plug-In Pro Options – Always paste plain text and many more options.
Magnification – Zoom in on any object on your page and stay zoomed in at reader level. Navigate while zoomed in to any object on the page.
Comments – Make notes about ToolBook pages, store the notes externally and share them with others
Delete Pages and Resources – Use one project as the basis for a new project by deleting a range of pages and all associated resources with the page.
Edit Object Actions – List all objects on the page with actions, click on any in the list to edit those actions.
Name Selected Objects - Gives each selected object a name and an incremented number such as "myField 1," "myField 2," etc.
Import/Export Resources - Import all files in a directory into ToolBook's resource manager. Export all resources to a directory.
Sticky Notes – Leave notes in your ToolBook file for yourself or another developer. Navigate to the next note. Hide or show all notes.
View a Page – Work with another page in the current book or in another book without needing to open the other book.
Alignment Editor – Perform advanced alignment and spread functions such as distribute centers of objects, distribute based on spacing, and align to the edge of the page
More information on these tools, more information on Plug-In Pro, and a free trial version is available at:
By Chris Bell
Anatomy of a TBR File
The product of running the Sim AutoBuilder Recorder is a TBR file. We import the TBR file into ToolBook using the Insert Simulation from Recording menu item. That's really all that we need to know about TBR files. But if you're really interested in digging deeper, here's what you'll find:
A TBR file is a zip file with a different extension. This means that you can open it with WinZip, PKZip, or another unzip routine.
Inside the TBR zip file, we find two types of files:
BMPs - these are the captured screens. One image per step. These are the same images that you'll see if you were to click "preview" at a step while going through the TBR import wizard.
XML file - this is the data file that the simulation import process uses to create the simulation. It is a highly structured and detailed account of the full capture. Every menu item, button, dialog box, is represented here for reproduction in ToolBook.
Have fun digging into the file!
by Jeff Rhodes
Redirecting Functions and Handlers
Like other ToolBook objects, the script of books may only contain 64K of data. Since you often want to put a large amount of complex code in your system books, you can quickly run into the "script full" message. Your best strategy is to then "redirect" your scripts to individual pages of the system book. The script to the left shows an example of redirecting the getColorValue() function. It is something of a standard to put a "_" on the front of the redirected function name, in this case _getColorValue(). You don't want to use the same exact name since there is a possibility of starting an infinite loop if the function inadvertently is not handled at the redirected page. Notice the use of the "self" property. It allows us to call a function of a page of the system book, not the calling book. Using "this book" instead would actually refer to the application book using this system book.
Notice how much room in the book script we saved by having this long function in the page script instead.
-- system book script
to get getColorValue string nameOfColor
return _getColorValue(nameOfColor) of page
"scripts1" of self
-- page "scripts1" (of system book)
to get _getColorValue string nameOfColor
-- returns the HLS color "number"
-- associated with the name
when nameOfColor = "black"
when nameOfColor = "magenta"
when nameOfColor = "blue"
when nameOfColor = "red"
when nameOfColor = "cyan"
when nameOfColor = "white"
when nameOfColor = "green"
when nameOfColor = "yellow"
when nameOfColor = "gray"
when nameOfColor = "lightGray"
when nameOfColor = "blueGreen"
when nameOfColor = "purple"
when nameOfColor = "navyBlue"
when nameOfColor = "maroon"
when nameOfColor = "aqua"
when nameOfColor = "lightGreen"
when nameOfColor = "darkAqua"
when nameOfColor = "lightYellow"
request "Color" &nameOfColor&& "is not
currently defined. Using blue
Note 1: When you redirect functions and handlers, watch for the use of target, self, this, and my. If your script contains these key words, your redirected script might break down. For example, when you send a message to a page, target changes from the original object (such as the button that was clicked) to the system book. In this case, you send the original target as a parameter so that the redirected handler can perform its original task.
Note 2: Many developers prefer to segregate their redirected scripts by function. This is how the ToolBook system books are organized. Open them directly to see.
[A ToolBook List user asked why a blank string was interpreted as a 0 after export. Tim's response was (as always) full of excellent insights]
Now, you're actually doing the right thing by putting quotes around that "0", because that should make it a string rather than a number. In that case, you'd be comparing two strings and "" obviously is not equal to "0" (with a string compare, the only thing that would match would be "0"... not "0.0" or "00" or "0.0000", although in ToolBook these things WOULD match because ToolBook will convert them both to numbers if it can!
However, we don't help you much here because as part of the export process (when creating the AXF file), even though you have that zero wrapped in quotes (indicating a string) it's exported as a number.
That's something I can fix and probably should. However, there are backward compatibility issues. For example, currently if you had this code in the actions editor:
Set text of field "foo" = "1.0"
Display alert text of field "foo" = "1"
If I FIX it so that "1" gets exported as a string, then the alert above will display false, because compared as strings "1.0" does not equal "1" (although in ToolBook, for the reason described above, it would display true).
This is why I added support for the "as text" modifier (in 7.2 or 8.0 - can't remember which) comparisons would always be numeric by default, unless you specified "as text" in which case they'd be compared as string. But it's currently only supported (in the Actions Editor) for "<" and ">", not for equals.
Anyway, bottom line is you want to force a STRING comparison, so that "" is not considered equal to "0". There are two ways of doing this:
1. Surround the value with a function call that doesn't alter the value but always returns a string. A good example is the uppercase() or lowercase() functions. Because of what you're comparing, it probably doesn't matter that you're converting case. So this will work:
If text of field "Fill in the Blank" = uppercase("0")
Really you only need it around the "0" because text of a field will already be a string type. It looks a bit non-sensical, but it forces a string comparison.
2. Append an empty string to the value:
If text of field "Fill in the Blank" = "0" & ""
Again it looks a bit nonsensical, but it forces the right hand side of the equation to be a string, and so forces a string comparison.
If I add support for the "as text" modifier for "=", that would have the same effect.
The PROBLEM here is that with these changes ONLY the actual string "0" will be accepted in DHTML. So "0.0" would be rejected, as would "00" or "0.00". All these strings would be ACCEPTED in native ToolBook.
If that's something you can live with (if you really DO only want to accept "0"), then you're laughing. If not, then we might have to think some more.
As its name implies, Web Player is designed to play media on ASP.NET web pages. Although you can configure it to always be a Windows Media Player, Flash Player, or RealMedia Player, most developers set it to “Automatic” mode and let it turn itself into whatever player matches the media. So if you set its MediaUrl property to be a .swf file, the player becomes a Flash Player. If you set its MediaUrl property to be a .wmv file, it becomes a Windows Media Player. Web Player detects whether it is running in Internet Explorer or a Netscape/Mozilla/Firefox browser and sets itself up as an ActiveX control or plugin accordingly. Here is some code from Exam Engine.
.Visible = True
.MediaUrl = qMediaPath
.AutoStart = True
If isAudioOnly = True Then
.Style("LEFT") = audioPos
.Style("POSITION") = "absolute"
.Width = audioUnit
.Height = audioUnit
.Style("LEFT") = ""
.Style("POSITION") = ""
.Width = mediaWidth
.Height = mediaHeight
If the subject matter expert has decided to associate media with a particular question, we show the Web Player and set its MediaUrl to the value (qMediaPath) that was stored in the database. We set the Web Player’s AutoStart property to True so that the media starts playing immediately. If the file is an audio-only extension (.wma or .mp3) and the developer wants the player to appear hidden, we move it off the screen and set its Width and Height to be 1 pixel. Web Player is $145 on its own and is part of the $995 VBTrain Bundle.
by Jeff Rhodes
We just finished our first big German-language installation of Tracker.Net (thanks to our friends at Media Freilingen GmbH for doing the translation). So this seems like a good time to talk about localizing .NET content and applications into multiple languages.
Let’s start with Windows applications as they are the easiest
to localize. You start by setting the Localizable
property of each form to True. You then select the language that you want from
a big list in a drop-down. For our Tracker editors, we selected German, French,
and Spanish in turn. You can even choose specific countries or regions such as
Thread.CurrentThread.CurrentCulture = Application.CurrentCulture
Thread.CurrentThread.CurrentUICulture = Application.CurrentCulture
ASP.NET has some similar features but it is not as automatic. For products like Tracker.Net, we have implemented our own scheme where all language content is stored in a database and language-specific images are stored in special directories. One benefit of this approach is that we can give users the ability to edit the text themselves. This is popular with English-language users as well. When a page loads, we loop through all the controls on the page and look up the corresponding text, tooltips, etc. based on the name of the control and the user’s selected language. For images or graphical buttons, we set the ImageUrl or ImageUp/ImageDown/ImageOver/ImageDisabled properties to the associated images directory. Here is a section of the code:
Dim uiElements As Hashtable
' For each base control, get associated data
uiElements = GetPageUiElements(baseName, baseCode)
' Set UI elements based on return values
For Each uiEltKey In uiElements.Keys
uiEltStr = uiElements(uiEltKey).ToString
Select Case uiEltKey
webCtrl = CType(pgControl, WebControl)
webCtrl.ToolTip = uiEltStr
Select Case objType
Case "cb", "rb" 'checkBox or radioButton
cbCtrl = CType(pgControl, CheckBox)
cbCtrl.Text = uiEltStr
Dim btnCtrl As Button = CType(pgControl, Button)
btnCtrl.Text = uiEltStr
labCtrl = CType(pgControl, Label)
If (Not uiEltStr.EndsWith("?")) Then
uiEltStr = String.Concat(uiEltStr, ":")
labCtrl.Text = uiEltStr
Case Else ' assuming checkboxes and radiobuttons don't have associated labels
relatedControlName = String.Concat(baseName, "_", "lbl")
labCtrl = CType(pageId.FindControl(relatedControlName), Label)
If IsNothing(labCtrl) = False Then
If (Not uiEltStr.EndsWith("?")) Then
uiEltStr = String.Concat(uiEltStr, ":")
labCtrl.Text = uiEltStr
' other cases here omitted
A control would be named like “UserName_lbl.” We build a Hashtable where with the associated tooltip, label, validation expression, etc. That is stored in uiEltKey. We then use the “lbl” part to tell that we are Label control (cb for checkBox, rb for radioButton, lbl for Label, etc.).. We even put in a “:” automatically at the end. Although not shown here, we cache the language constants in the web server’s memory to minimize how often we “touch” the database.
Here are all of our currently-planned events in 2006. We definitely hope to see you at the ToolBook User's Conference / e-Learning Authoring Conference in June. If you happen to be at any of the others, please stop by our booth and say Hi.
ASTD TechKnowledge (
Jeff Rhodes session (11:00 AM on February 1): "Talking SCORM with ASP.NET"
Jeff Rhodes session (2:45 PM on March 8): "Why E-learning Should Be Database-Driven"
e-Learning Guild Annual Gathering (including e-Learning
Producer and the Learning Management Colloquium) (
Jeff Rhodes and Chris
Bell will both be presenting sessions.
ASTD International (
Conference / e-Learning Authoring Conference (
Our favorite event of the year
Jeff Rhodes and Chris Bell will be presenting numerous sessions
Training Fall (
Plug-In Pro version 7 for ToolBook will be first out of the chute. We will also be making some substantial enhancements to Tracker.Net that will be free to customers of the current version 3. From there we plan to move to research and development mode for some brand new products.
· Another Plug-In Pro Tool Spotlight
· More Expert Information, OpenScript Tips, and Web Hints from the "Learning & Mastering ToolBook" series
· Another VBTrain Control Spotlight
· Another VBTrain.Net Nugget
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 firstname.lastname@example.org. Back issues of the EnterPage are available at:
To subscribe or unsubscribe, please send email to email@example.com. Please include your name and company with new subscriptions.
All content Copyright Platte Canyon Multimedia Software Corporation, 2005.