I've noticed that there are two methods available for aligning widgets: DLGAnchor and DLGSide (sometimes referenced as DLGAlign in some contexts). At first glance, they seem to serve the same purpose, but I suspect there are subtle differences in their usage.
Could someone provide an example or explanation that clarifies the usage differences between DLGAnchor and DLGSide? In particular:
Any sample code or detailed examples demonstrating the differences would be greatly appreciated.
Different dialog arrangement command utilizes different property values. (All dialog building is just a compilation of a descriptor TagGroup that then gets translated into a dialog.)
The anchor property is used for the Table Layout, as in the following example:
class UITest : UIFrame
{
object ShowTest(object self, number variant)
{
TagGroup DLG,DLGItems
DLG = DLGCreateDialog("VariantTest",DLGitems)
for(number i=0;i<25;i++)
{
number col = (i%5)
number row = trunc(i/5)
TagGroup item = DLGCreatePushButton("#"+i,"")
number width = (0==row%2) ? 5+col*12 : 65-col*12
number height = (1==row%3) ? 35-col*6 : 5+col*6*row
item.DLGInternalPadding(width,height)
//item.DLGExternalPadding(5,5)
DLGItems.DLGAddElement( item )
}
if (0==Variant)
{
DLG.DLGTableLayout(5,5,0)
}
else if (1==Variant)
{
DLG.DLGTableLayout(5,5,1) // All item tiles are same size in grid
}
else if (2==Variant)
{
DLG.DLGTableLayout(5,5,0)
taggroup item
// 2nd row gets "South" attribute to align bottom
for (number i=5;i<10;i++){
if (DLGItems.TagGroupGetIndexedTagAsTagGroup(i,item))
item.DLGAnchor("South")
}
// 3nd row gets "North" attribute to align top
for (number i=10;i<15;i++){
if (DLGItems.TagGroupGetIndexedTagAsTagGroup(i,item))
item.DLGAnchor("North")
}
}
else if (3==Variant)
{
DLG.DLGTableLayout(5,5,0)
taggroup item
// 3rd colum gets "East" attribute to align left
for (number i=2;i<25;i+=5){
if (DLGItems.TagGroupGetIndexedTagAsTagGroup(i,item))
item.DLGAnchor("East")
}
// 4th colum gets "West" attribute to align right
for (number i=3;i<25;i+=5){
if (DLGItems.TagGroupGetIndexedTagAsTagGroup(i,item))
item.DLGAnchor("West")
}
}
self.Init(DLG).Display("Test "+variant)
return self
}
}
Alloc(UITest).ShowTest(0)
Alloc(UITest).ShowTest(1)
Alloc(UITest).ShowTest(2)
Alloc(UITest).ShowTest(3)
The side property is used for arranging radio elements:
class UITest : UIFrame
{
object ShowTest(object self)
{
TagGroup DLG,DLGItems
DLG = DLGCreateDialog("VariantTest",DLGitems)
TagGroup Radio1,RadioItems1
Radio1 = DLGCreateRadioList(RadioItems1,1)
Radio1.DLGExternalPadding(0,20)
DLGItems.DLGAddElement(Radio1)
// Left-to-Right arrangement
For (Number i=1;i<=5;i++)
Radio1.DLGAddRadioItem("radio 1/"+i,10*i).DLGSide("Left")
TagGroup Radio2,RadioItems2
Radio2 = DLGCreateRadioList(RadioItems2,1)
Radio2.DLGExternalPadding(0,20)
DLGItems.DLGAddElement(Radio2)
// Right-To-Left arrangement
For (Number i=1;i<=5;i++)
Radio2.DLGAddRadioItem("radio 2/"+i,10*i).DLGSide("Right")
TagGroup Radio3,RadioItems3
Radio3 = DLGCreateRadioList(RadioItems3,1)
Radio3.DLGExternalPadding(0,20)
DLGItems.DLGAddElement(Radio3)
// Top-to-Bottom arrangement
For (Number i=1;i<=5;i++)
Radio3.DLGAddRadioItem("radio 3/"+i,10*i).DLGSide("Top")
TagGroup Radio4,RadioItems4
Radio4 = DLGCreateRadioList(RadioItems4,1)
Radio4.DLGExternalPadding(0,20)
DLGItems.DLGAddElement(Radio4)
// Bottom-to-Top arrangement
For (Number i=1;i<=5;i++)
Radio4.DLGAddRadioItem("radio 4/"+i,10*i).DLGSide("Bottom")
self.Init(DLG).Display("Test")
return self
}
}
Alloc(UITest).ShowTest()