
Grouping controls allows you to align controls together in columns, indicate the relationship of associated controls using a surrounding frame, and nest groups within groups.
Controls are ordered linearly in the PPGLayout: that is, the order in which you declare the controls is the order in which they appear on the property page.
To group a set of controls together, insert the PPGLayout.AddGroup or PPGLayout::AddGroup call before the first member-to-be and the PPGLayout.EndGroup or PPGLayout::EndGroup call after the last.
When you omit the last PPGLayout.EndGroup or PPGLayout::EndGroup call, all controls from the preceding PPGLayout.AddGroup or PPGLayout::AddGroup call to the last control on the page will be part of that group.
When you create your group control you can optionally specify a label and a frame (both or none) and the percentage of a row that the group will occupy, if applicable.
You can also set these and other attributes dynamically by using the PPGItem.SetAttribute method with one of these item attributes:
Group controls can be enumerated by setting up a loop using the PPGLayout.Count or PPGLayout::GetCount property and testing each PPGLayout.Item or PPGLayout::GetItem to see if it's a group (see Changing the Layout for more information).
The PPGLayout.Item or PPGLayout::GetItem property takes either the index or the name of the item, so you can test it using the PPGItem.Type or PPGItem::GetType property as in the following example:
function ChangeLastGroupLabel_OnClicked() {
// Loop backwards through the list of items to find the group tag
// that starts the last group
for (var i=PPG.PPGLayout.Count-1; i>=0; i--) {
// Test for "GroupBegin" (type of opening tag)
if (PPG.PPGLayout.Item(i).Type == "GroupBegin") {
// When we find it, reset the label
PPG.PPGLayout.Item(i).Label = "Last Group";
PPG.PPGLayout.Item(i).SetAttribute( siUIShowFrame, false );
// We need to refresh the layout to see the changes and then
// we're done!
PPG.Refresh();
break;
}
}
}
Except where otherwise noted, this work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License