有关align属性的问题(50分)

W

wangts

Unregistered / Unconfirmed
GUEST, unregistred user!
在一个form中有三个component,panel1,splitter1,panel2,
panel1.align=client,splitter1.align=right,panel2.align=right,
sllitter1位置在中间。
当执行panel2.visible := not panel2.visible时,
有时(如form resized)会发生splitter1 跑到最右边了,各位大虾,
这该如何是好。
 
这好像是必然的嘛。Panel2.align=right,当他隐藏了,splitter1的右边就没有东西了,splitter1.align=right,他当然要跑到最右边了。
 
试一下:

panel2.visible := not panel2.visible;
splitter1.Left := 0;
 
yysun这招好像没用呀,Align属性定下来后,left就不管用了
 
你可以再加一个panel,将panel2 和splitter1放到里面,panel2 的align=left,
splitter1的align=right,新的panle的align=right,新的panel做为容器用.
 
yysun的方法我试了以下,没有出现问题,很好用。tqz发现了不好用的情况了
吗?
在TControl的源代码实现中,他的visible property的write方法setvisible
实现时,调用AlignControl方法,AlignControl调用AlignControls方法,
AlignControls调用insertbefore比较两个Component的Align时,
好象就是比较left和top属性来决定各component的align顺序。
TControl的Align上怎样具体实现的呢?
 

Similar threads

顶部