1. 容器根据内部控件数和columns数计算出行数

2. 从上到下,从左到右添加控件

 

如果columns为1并且width mode设置为column width,则该控件缩放时占据整个容器宽度

如果columns大于1,则最后一个列的控件占据剩余宽度,其他列仅相当于auto,不会变,这是我们要写代码避免的,比方说我们需要均匀分割各列

 

 

细节上还有几点要注意的

1. 将自己的resize代码写一个过程,比方说myResize

2. 在formrun的run方法中首次进行调用

3. 然后覆盖formrun的resize事件中添加myresize调用

4. 在计算宽度时要减去容器的verticalSpacingValue,根据列数-1(默认是控件按vertical排列的)

 currencyGrid.width((currencyWireGroup.widthValue()-currencyWireGroup.verticalSpacingValue())/2);

有空的时候再仔细想想这些过程是否可以更智能些,目前,这个函数可以减少我们的工作

//class ControlHelper

static void resizeHelper(FormGroupControl gc)
{
int i;
;

     for(i=1;i<=gc.controlCount();i++){

        gc.controlNum(i).width((gc.widthValue()-gc.verticalSpacingValue()*gc.columns()-1)/gc.columns());

    }
}

 

 

调用

只需要传入要均匀分隔的组变量即可

void myResize()
{
;
    ControlHelper::resizeHelper(currencyWireGroup);
    ControlHelper::resizeHelper(adjustSEttingGroup);


}

效果

 

更细节的讨论在这里

http://www.qiuhao.com/dispbbs.asp?boardid=2&id=9054&star=1#38752

 

良好实践

1.按默认的控件排列规则

2. 总是设定width 为column width

3. 在复杂布局时,大量使用group

 

posted on 2008-07-20 10:49  jjxstudio  阅读(357)  评论(0编辑  收藏  举报