The EnterPage 8-04

The Source for ToolBook and VBTrain.Net News
from Platte Canyon Multimedia Software Corporation


December 15, 2005


In This Issue





TBCON and e-Learning Authoring Conference 2006

Exam Engine 2.0 Released

Learning & Mastering ToolBook Assistant 2004

ToolBook, VBTrain.Net, Flash, and More

SCORM Watch™ Makes a Splash

New Versions of VBTrain Controls: Question and LmsApi

Conference Reports: DevLearn 2005 and Training Fall 2005

Platte Canyon to Offer Web-Based Product Demonstrations in 2006



Plug-In Pro Tool Spotlight: A Review of Past Favorites

Expert Information

OpenScript Tip

Web Hint



Control Spotlight – Web Player

VBTrain.Net Nugget



Come See Us: The Platte Canyon World Tour

Platte Canyon Products in the Pipeline

Coming in the Next Issue of The EnterPage

About The EnterPage

Information on Subscriptions




Conferences, TBCON, love of ToolBook. .NET and expanded enchantment with Flash and other tools.


Top Stories


ToolBook User’s Conference / e-Learning Authoring Conference 2006


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 Colorado Springs, Colorado from June 19 – 21, 2006, with preconference workshops on June 17 and 18. Please visit periodically for updates and more information.



Exam Engine 2.0 Released


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:



Learning & Mastering ToolBook Assistant 2004


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 Platte Canyon has ever offered. It is priced at $375:


For you Instructor users, read about Learning & Mastering ToolBook Instructor 2004 at:



ToolBook, VBTrain.Net, Flash, and More


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.



SCORM Watch™ Makes a Splash


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.



New Versions of VBTrain Controls: Question and LmsApi


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.


LmsApi also added SCORM 1.3 (2004) support. It also gave developers the ability to omit script tags on generated JavaScript, reducing page size. LmsApi is $295 on its own and is part of the $995 VBTrain bundle.



Platte Canyon to Offer Web-Based Product Demonstrations in 2006


Platte Canyon will begin offering live web seminars in 2006 using Microsoft Live Meeting. These events will focus on various products that we sell including ToolBook, Tracker.Net, Exam Engine, Plug-In Pro, and other tools. We are also considering offering some training opportunities via this format. Watch our web site over the coming weeks for more details and an opportunity to sign up for the sessions. If you don’t want to wait and would like a special Live Meeting demonstration just for you and your team, send us an email at



Conference Reports: DevLearn 2005 and Training Fall 2005


At Platte Canyon, we think it is important to attend e-Learning conferences. We like to hear new ideas, see presentations, and mix and mingle with vendors. Of course, we also like showing off our products to attendees who come to visit our booth. We recently attended VNU's Training Fall 2005 and the e-Learning Guild's DevLearn 2005 conferences. These conferences were wildly different in their focus, but each was successful in its own way.


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 Orlando in early March.


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.





Plug-In Pro Tool Spotlight – A Review of Past Favorites


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:



The following are all from the "Learning & Mastering ToolBook" series


Expert Information


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!



OpenScript Tip


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

end getColorValue


-- page "scripts1" (of system book)

to get _getColorValue string nameOfColor

       -- returns the HLS color "number"

       -- associated with the name



              when nameOfColor = "black"

                     return 0,0,0

              when nameOfColor = "magenta"

                     return 300,50,100

              when nameOfColor = "blue"

                     return 240,50,100

              when nameOfColor = "red"

                     return 0,50,100

              when nameOfColor = "cyan"

                     return 180,50,100

              when nameOfColor = "white"

                     return 0,100,0

              when nameOfColor = "green"

                     return 120,50,100

              when nameOfColor = "yellow"

                     return 60,50,100

              when nameOfColor = "gray"

                     return 0,50,0

              when nameOfColor = "lightGray"

                     return 0,75.3125,0

              when nameOfColor = "blueGreen"   

                     return 180,25.125,100

              when nameOfColor = "purple"

                     return 300,25.125,100

              when nameOfColor = "navyBlue"    

                     return 240,25.125,100

              when nameOfColor = "maroon"

                     return 0,25.125,100

              when nameOfColor = "aqua" 

                     return 180,37.4375,100

              when nameOfColor = "lightGreen"  

                     return 120,80.8125,28.5

              when nameOfColor = "darkAqua"    

                     return 180,50,49.8125

              when nameOfColor = "lightYellow" 

                     return 60,87.4375,100


                     request "Color" &nameOfColor&& "is not

                           currently defined.  Using blue


                     return 240,50,100

       end conditions

end _getColorValue


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.



Web Hint


Tim Barham


JavaScript versus OpenScript Type Conversions


[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]



This is an unfortunate side effect of how type conversion in JavaScript differs from type conversion in OpenScript.


Whenever you compare something to a number, JavaScript will try to convert the value you're comparing to a number. So you're converting the number 0 to an empty string - JavaScript converts the empty string to a number and, unfortunately, in JavaScript an empty string converts to... the number 0.


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"


It would display true, because the "1" gets exported as a number, so we're comparing a string (the text of a field will always be a string in JavaScript) to a number. The string gets converted to a number and they're compared numerically, and 1.0 = 1 when compared as numbers.


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.


I toyed with using the isNumber() function, but unfortunately it returns true for "" in the DHTML runtime (because "" is considered equal to 0 in JavaScript). It's possible I can do some work on the isNumber() function to special case "" (or any string that is just white space, which is also considered equal to 0 in JavaScript), but that's not going to help you now.





Control Spotlight – Web Player


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.


With webPlayerLeft

       .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

       End If

End With


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.



VBTrain.Net Nugget


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 German (Austria). You then can edit the text and even the positions of objects on the form (for example if the text is longer in another language and you need to reformat). Visual Studio stores the changed settings in a separate resource file for each language you select. The last step is to change the culture of the form to match the culture of the user’s machine:


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

     Case "tooltip"

        webCtrl = CType(pgControl, WebControl)

        webCtrl.ToolTip = uiEltStr

     Case "label"

        Select Case objType

           Case "cb", "rb"          'checkBox or radioButton

              cbCtrl = CType(pgControl, CheckBox)

              cbCtrl.Text = uiEltStr

           Case "btn"

              Dim btnCtrl As Button = CType(pgControl, Button)


              btnCtrl.Text = uiEltStr

           Case "lbl"

              labCtrl = CType(pgControl, Label)

              If (Not uiEltStr.EndsWith("?")) Then

                uiEltStr = String.Concat(uiEltStr, ":")

              End If

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

                End If

                labCtrl.Text = uiEltStr

              End If

        End Select

     ' 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.





Come See Us: The Platte Canyon World Tour


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 (Denver, CO, January 31 – February 2, 2006):

Booth: 212

Jeff Rhodes session (11:00 AM on February 1): "Talking SCORM with ASP.NET"


Training (Orlando, FL, March 6 – 8, 2006):

Booth: 206

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) (Boston, MA, April 17 – 20, 2006):

Booth: 401

Jeff Rhodes and Chris Bell will both be presenting sessions.


ASTD International (Dallas, TX, May 8 – 10, 2006):

Booth: 1414


ToolBook User's Conference / e-Learning Authoring Conference (Colorado Springs, CO, June 19 – 21)

Our favorite event of the year

Jeff Rhodes and Chris Bell will be presenting numerous sessions


Training Fall (Denver, CO, October 23 - 26, 2006):

Booth: TBD



Platte Canyon Products in the Pipeline


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.



Coming in the Next Issue of The EnterPage

·         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

·         More


About The EnterPage


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:


Information on Subscriptions


To subscribe or unsubscribe, please send email to Please include your name and company with new subscriptions.



All content Copyright Platte Canyon Multimedia Software Corporation, 2005.