1) Boolean (which is set to 0 when VA profile is run the 1st time) to check is user has already entered his/her details?
If not the UserProfile command is run where important variables are loaded and saved as well.
The user can also call this UserProfile command should he/she which to change a variable value.
One (of many needed preloaded variables) example could be that VA greets the User by name upon opening the profile.
Here is a simple example covering a few of the items you're talking about:
// Retrieve boolean variable saved to the profile
Set Boolean [>>ProfileInitialized] to [Saved Value] (save value to profile)
// Check if profile has NOT been initialized
Begin Boolean Compare : [>>ProfileInitialized] Equals False
// Do stuff for profile initialization and save values to the profile
Set integer [Int1] value to 5 (save value to profile)
Set Text [Text1] to 'puppies' (save value to profile)
Set Boolean [IsRaining] to False (save value to profile)
// Set boolean variable to indicate profile is initialized and save to the profile
Set Boolean [>>ProfileInitialized] to [Saved Value] (save value to profile)
// Provide voice feedback to user
Say, 'Profile initialization complete'
Else
// Retrieve pre-initialized variables that are already saved to the profile
Set integer [Int1] value to [Saved Value]
Set Text [Text1] to [Saved Value]
Set Boolean [IsRaining] to [Saved Value]
End Condition
Note that the ">>" before the boolean indicates that the variable is "profile-scoped." You can read more about scoped variables (which can be quite handy for variable management) in the VA manual.
2) Can I call a "Function"...a command where NONE of the checkboxes are selected? How do I reference this function?
Yes. Simply create a new command (call it whatever you like, I'll call it
MyFunction) and add whatever content you want in this command. Then you can simply call for it in other commands via the VoiceAttack Action 'Execute Another Command' like this:
Execute command, 'MyFunction' (and wait until it completes)
3) Can I call a VA Command from within another VA Command? HOW?
Same answer as #2. From a naming point of view I tend to call "Commands" any VA command that can be executed with a "When I ..." and I call "Functions" VA commands that can only be activated by calling the 'Execute Another Command' action (sounds like you're implying this as well).
4) This is a big on, I guess. I know VB.NET and I JOYFULLY noticed VA supports VB.NET. Is there a document that explains a bit more of the integration between VB and VA? Eg. HOW do I call a VB.NET routine I wrote?
In the Command Edit window simply select: Other => Advanced => Execute an Inline Function => VB.net Code. The help document has some sections about using VB.net with VA (search for VAProxy for more info), but I suggest you also check out the
Inline Functions section of the forum. Most of the stuff I've uploaded is in C# but you should be able to get the idea and make conversions to VB.net when needed. I try to provide comments for EVERYTHING to make it easier for others to learn. Like previously mentioned in another thread the inline functions are most effective at extending VA's functionality, but you can certainly simplify some VA operations (particularly when it comes to more complex nested conditional statements, array processing, etc.).