Branching [Switch]
More useful than simple skipping is to present the user with a set of choices, and to branch the flow as requested. The WizardEngine provides a method named, "Switch" for this purpose. The parameters to "Switch" are:
- Labels: An array of labels for the radio buttons.
- Bmps: An array of image values for the icons (32*32 images).
- Descriptions: An array of descriptions (up to four lines of text can be accommodated).
- Destinations: An array of state names.
- DefaultVal: An optional parameter that is the value (0..2) of the initial selection.
- BottomMargin: An optional parameter specifying the padding at the bottom of the wizard.
- EnableFlags: Arrays of TRUE/FALSE flags to determine which radio buttons are enabled/disabled.
- ToolTips: Phrase labels to display in the tooltips for the individual radio buttons
A maximum of five choices can be accommodated. Assuming that suitable variables were declared and initialized:
Tasks = New(3); TaskDescs = New(3); TaskBmps = New(3); TaskSwitch = New(3); Tasks[0] = "Choice 1"; Tasks[1] = "Choice 2"; Tasks[2] = "Choice 3"; TaskBmps[0] = MakeBitmap(FileFind("C:\VTScada\Resources\Copy.png", 0)) TaskBmps[1] = MakeBitmap(FileFind("C:\VTScada\Resources\Cut.png", 0)) TaskBmps[2] = MakeBitmap(FileFind("C:\VTScada\Resources\Paste.png", 0)) TaskDescs[0] = "Selecting this will take you down path number one."; TaskDescs[1] = "Selecting this will take you down path number two."; TaskDescs[2] = "Selecting this will take you down path number three."; TaskSwitch[0] = "Switch1"; TaskSwitch[1] = "Switch2"; TaskSwitch[2] = "Switch3";
Then the state for the branch might appear as follows:
SelectTask [ WTitle = "Select Required Task"; Task = Engine\Switch(Tasks, TaskBmps, TaskDescs, TaskSwitch, SvTask); If Move; [ SvTask = PickValid(Task, 0); Move = 0; ForceState(NextState); ] ]
Example:
"Switch" returns the value (0..2) selected.