haitao:
【技术贴,Form Resize时控件位置、宽度的自动调整】控件简化为“Label:[Edit_____]”这样的情形
[阅读: 586] 2007-07-19 08:13:01
【技术贴,Form Resize时控件位置、宽度的自动调整】控件简化为“Label:[Edit_____]”这样的情形
同一行的Edit们都按比较调整宽度,Edit和Label的left都适当变化,如:
123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_
Label1:[Edit1_____________] Label2:[Edit2___________________________________________] Label3
宽度:20 宽度:50
窗体(parent)的宽度:100
如果窗体(parent)的宽度变为了:80
Label1的left和宽度都不变;
Edit1的left不变
Edit1的宽度应该变为:20*(20+50 + (80-100))/(20+50)=100/7==14;
Label2的left应该变为:原来的left+(14-20)
宽度不变;
Edit2的left应该变为:原来的left+(14-20)
Edit2的宽度应该变为:50*(20+50 + (80-100))/(20+50)=250/7==36;
Label3的left应该变为:原来的left+(14-20)+(36-50)
宽度不变
这样好像很合理,但是如果有2行,就可以看出不合理的地方了:
123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_
Label1:[Edit1_____________] Label2:[Edit2___________________________________________] Label3
宽度:20 宽度:50
123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_
Label5:[Edit5_____________] Label6:[Edit6_________________________________] Label7
宽度:20 宽度:40
如果窗体(parent)的宽度从100变为了:80
Label5的left和宽度都不变;
Edit5的left不变
Edit5的宽度应该变为:20*(20+40 + (80-100))/(20+40)=80/6==13; <--这里!原来上下对齐的Edit1和Edit5居然不对齐了!
。。。。。。
看来这种变化方式不行。。。。。。。