Foxtable(狐表)用户栏目专家坐堂 → 锚定和停靠


  共有2147人关注过本帖树形打印复制链接

主题:锚定和停靠

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/9 16:10:00 [显示全部帖子]

1、如果你要四个panel平分,必须写代码设置宽高才行的,在sizechanged事件里面设置宽高。

 

2、一般布局不会平分,比如上方的高度固定,或者左边的宽度固定,然后下边/右边填充全部剩余空间。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/9 18:15:00 [显示全部帖子]

以下是引用cd_tdh在2018/9/9 17:11:00的发言:
好的,上班试试。
有点讨厌那种老板整多大个屏幕的那种,90%都兼顾到了,要去老考虑那不到10%的人,无语得很。

 

自适应,可以看看

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=67768&skin=0

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/10 9:24:00 [显示全部帖子]

停靠、锚定,都不设置,才能用【自适应】的。停靠设置成none,锚定设置成 left,top

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/10 11:35:00 [显示全部帖子]

以下是引用cd_tdh在2018/9/10 11:30:00的发言:

老师,偶尔会报错是什么原因呢?

错误所在事件:窗口,主窗口,SizeChanged
详细错误信息:
算术运算导致溢出。

 

sizechanged加上判断,如

 

If vars("width") > 0 andalso vars("height") > 0 Then

    '本来的代码

End If

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/10 11:37:00 [显示全部帖子]


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/11 15:08:00 [显示全部帖子]

加入如下判断,具体的数值,你可以改成50、100、500都可以,意思宽度高度大于某一值得时候,才自适应。

 

If vars("width") > 0 andalso vars("height") > 0 Then

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/11 15:16:00 [显示全部帖子]

以下是引用cd_tdh在2018/9/11 15:15:00的发言:

这个判断加了的,还是这种情况

If vars("width") > 500 AndAlso vars("height") > 500 Then
    For Each c As Winform.Control In e.Form.Controls
        c.Left = c.Left * (e.Form.Width / vars("width"))
        c.Top = c.Top * (e.Form.Height / vars("height"))
        c.Width = c.Width * (e.Form.Width / vars("width"))
        c.Height = c.Height * (e.Form.Height / vars("height"))
    Next
    'msgbox(e.Form.Height / vars("height"))
    vars("width") = e.Form.width
    vars("height") = e.Form.height
Else
End If

 

做个例子发上来测试一下。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/11 16:08:00 [显示全部帖子]

改代码

 

If vars("width") > 500 AndAlso vars("height") > 500 AndAlso basemainform.windowstate <> 1 Then
msgbox(vars("width"))
    For Each c As Winform.Control In e.Form.Controls
        c.Left = c.Left * (e.Form.Width / vars("width"))
        c.Top = c.Top * (e.Form.Height / vars("height"))
        c.Width = c.Width * (e.Form.Width / vars("width"))
        c.Height = c.Height * (e.Form.Height / vars("height"))
    Next
End If
vars("width") = e.Form.width
vars("height") = e.Form.height


 回到顶部