以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  探讨:控件锚定的想法  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2806)

--  作者:yangming
--  发布时间:2009/5/16 14:30:00
--  探讨:控件锚定的想法
控件锚定的问题,我看了一下这个问题,我感觉,只有锚定了四边,"那么窗口大小改变时,控件将同时调整高度和宽度,以便和窗口四个边界的距离保持不变"
但是默认的是"锚定于其容器的左上角,这意味着窗口大小改变时,控件并不会随之移动或改变大小"
我的想法:
1.如果只有要锚定四边,才能保持不变,那为何不能将默认改成:锚定四边呢?
2.控件的锚定是在一个一个的设置锚定,为何不能批量设置呢?
请贺老师考虑一下,是否可以改改?

--  作者:八婺
--  发布时间:2009/5/16 15:09:00
--  
默认锚定四边肯定不行的,因为要锚定四边的控件在实际使用中毕竟是少数。
--  作者:yangming
--  发布时间:2009/5/16 15:16:00
--  

我认为锚定四边的不在少数啊,呵呵
第二个问题能批量锚定如能实现也不错啊

[此贴子已经被作者于2009-5-16 15:47:15编辑过]

--  作者:cpayinyuan
--  发布时间:2009/5/16 17:37:00
--  
以下是引用yangming在2009-5-16 15:16:00的发言:

我认为锚定四边的不在少数啊,呵呵
第二个问题能批量锚定如能实现也不错啊

[此贴子已经被作者于2009-5-16 15:47:15编辑过]

    第一个问题不同意您的看法.窗口中需要锚定四边的控件主要包括Table,DataList,页面集合等,一般是容器类或者列表类的控件,这类控件在窗口中的数目很少.但大部分的控件,例如标签类/输入框类/按钮类等,数目众多,这些都是不需要锚定四边的,要不然,把按钮和输入框都锚定四边,就麻烦了.
   至于能批量锚定,这是个好的建议.以前我建议过,不仅仅是锚定,窗口控件的很多属性都不能批量设定,也再次向贺老师建议能够对控件的更多属性提供批量设置功能!


--  作者:yangming
--  发布时间:2009/5/16 18:50:00
--  
以下是引用cpayinyuan在2009-5-16 17:37:00的发言:

    第一个问题不同意您的看法.窗口中需要锚定四边的控件主要包括Table,DataList,页面集合等,一般是容器类或者列表类的控件,这类控件在窗口中的数目很少.但大部分的控件,例如标签类/输入框类/按钮类等,数目众多,这些都是不需要锚定四边的,要不然,把按钮和输入框都锚定四边,就麻烦了.
   至于能批量锚定,这是个好的建议.以前我建议过,不仅仅是锚定,窗口控件的很多属性都不能批量设定,也再次向贺老师建议能够对控件的更多属性提供批量设置功能!

那我是理解错了?我以为所有的按件都要锚定四边呢,呵呵
另外,动态生成的Table如何锚定?

我一个主窗口,一个窗口上下放二个动态生成的Table,这种动态生成的Table又如何锚定呢?

[此贴子已经被作者于2009-5-16 18:52:08编辑过]

--  作者:shxiaoya
--  发布时间:2009/5/16 21:15:00
--  
以下是引用yangming在2009-5-16 18:50:00的发言:

那我是理解错了?我以为所有的按件都要锚定四边呢,呵呵
另外,动态生成的Table如何锚定?

我一个主窗口,一个窗口上下放二个动态生成的Table,这种动态生成的Table又如何锚定呢?

[此贴子已经被作者于2009-5-16 18:52:08编辑过]

将table控件锚定就行了


--  作者:yangming
--  发布时间:2009/5/16 22:18:00
--  
动态生成的Table,请问如何锚定?
--  作者:八婺
--  发布时间:2009/5/17 0:29:00
--  
现在估计只能用SetBounds固定位置,没办法锚定自适应窗口的。
--  作者:狐狸爸爸
--  发布时间:2009/5/18 8:01:00
--  
以下是引用八婺在2009-5-17 0:29:00的发言:
现在估计只能用SetBounds固定位置,没办法锚定自适应窗口的。


可以的,例如锚定右下角:

 

Dim t As WinForm.Table
t = e.Form.CreateControl(
"表A", ControlTypeEnum.Table)
t.Anchor = Windows.Forms.AnchorStyles.Right
Or Windows.Forms.AnchorStyles.Bottom
e.Form.AddControl(t)


说明:

 Bottom 该控件锚定到其容器的下边缘。 
 Left 该控件锚定到其容器的左边缘。 
 None 该控件未锚定到其容器的任何边缘。 
 Right 该控件锚定到其容器的右边缘。 
 Top 该控件锚定到其容器的上边缘。


帮助没有介绍,因为很少有人需要修改锚定属性的。

[此贴子已经被作者于2009-5-18 8:01:55编辑过]

--  作者:yangming
--  发布时间:2009/5/18 9:04:00
--  
因为我是一个窗口上下动态生成二个Table,所以我想,用你说的方法固定不好办,
我的做法是下面的代码:试了一下,各种分辨率都还可以.
Dim t As WinForm.Table
t = Forms("导航1").CreateControl("员工档案", ControlTypeEnum.Table)
t.SetBounds(215,50,e.Form.Width-230,e.Form.Height*0.45)
Forms("导航1").AddControl(t)
Dim t1 As WinForm.Table
t1 = Forms("导航1").CreateControl("调出人员表", ControlTypeEnum.Table)
t1.SetBounds(215,e.Form.Height*0.45+90,e.Form.Width-230,e.Form.Height*0.35)
Forms("导航1").AddControl(t1)
[此贴子已经被作者于2009-5-18 9:05:08编辑过]