您的位置:首页 > 其它

ax 默认控件排列规则

2008-07-20 10:49 141 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: