Foxtable(狐表)用户栏目专家坐堂 → [求助]分区面板内控件布局问题


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

主题:[求助]分区面板内控件布局问题

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


加好友 发短信
等级:童狐 帖子:215 积分:1306 威望:0 精华:0 注册:2013/4/7 22:24:00
[求助]分区面板内控件布局问题  发帖心情 Post By:2013/6/5 13:32:00 [只看该作者]

大家好,请教个分区面板内控件布局的问题:

 

我想将附件中分区面板左侧的上下二部分做成相等高度,且控件在各自分区内居中。

自己弄了很久都没弄好,请各位帮下忙,谢谢。

 

背景色只是为了区分各分区而设。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:分区面板测试.table


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/5 14:08:00 [只看该作者]

.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:分区面板测试.table


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/6/5 14:42:00 [只看该作者]

两个SplitContainer的停靠都设为Fill

AfterLoad

 

Dim spl As WinForm.SplitContainer = e.Form.Controls("SplitContainer2")
Dim b As WinForm.Button = e.Form.Controls("Button1")
Dim t As WinForm.TextBox = e.Form.Controls("TextBox1")
spl.SplitterDistance = e.Form.Height/ 2
b.Top = (spl.Height/2 - b.Height)/2
t.Top = (spl.Height/2 - t.Height)/2
b.Left =  (spl.Width - b.Width)/2
t.Left =  (spl.Width - t.Width)/2

[此贴子已经被作者于2013-6-5 15:01:51编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/6/5 15:08:00 [只看该作者]

3楼的代码应该不能达到楼主目的:因e.Form.Height应该是窗口的初始设计高度,不是主窗口打开后的高度
[此贴子已经被作者于2013-6-5 15:16:43编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/6/5 15:19:00 [只看该作者]

两个SplitContainer的停靠都设为Fill


主窗口AfterLoad
MyTimers("计划1").Enabled = 1


' 计划1
With  forms("窗口1")
    If .Opened  Then       
        Dim h1,h2,w1,w2 As Integer
        h1 =.height/2
        w1 =.Controls("SplitContainer2").width
        .Controls("SplitContainer2").SplitterDistance = h1
        Dim kjms As String() = {"Button1","TextBox1"}
        
        For Each kjm As String In kjms
            h2 =.Controls(kjm).height
            w2 =.Controls(kjm).width
            .Controls(kjm).Left = (w1 - w2)/2
            .Controls(kjm).Top = (h1 - h2)/2           
        Next
        
        MyTimers("计划1").Enabled = 0
    End If
End With
[此贴子已经被作者于2013-6-5 15:19:45编辑过]

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


加好友 发短信
等级:童狐 帖子:215 积分:1306 威望:0 精华:0 注册:2013/4/7 22:24:00
  发帖心情 Post By:2013/6/5 15:48:00 [只看该作者]

谢谢各位。

 

2楼的附件与我上传的附件一样的,不知是不是传错了?

3楼的代码左上按钮水平、垂直均居中,达到了我想要的效果,但左下的文本框水平居中,垂直没能居中。

5楼的效果与3楼基本相同,但我不清楚为什么要做成计划?!

 

再次谢谢各位!

[此贴子已经被作者于2013-6-5 15:52:45编辑过]

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/6/5 15:56:00 [只看该作者]

Dim spl As WinForm.SplitContainer = e.Form.Controls("SplitContainer2")
Dim b As WinForm.Button = e.Form.Controls("Button1")
Dim t As WinForm.TextBox = e.Form.Controls("TextBox1")
spl.SplitterDistance = e.Form.Height/ 2
b.Top = (spl.SplitterDistance - b.Height)/2
t.Top = (spl.SplitterDistance - t.Height)/2
b.Left =  (spl.Width - b.Width)/2
t.Left =  (spl.Width - t.Width)/2

 

如果窗口是主窗口一类,设计大小与打开时的大小有区别,代码如下:

 

Dim spl As WinForm.SplitContainer = e.Form.Controls("SplitContainer2")
Dim b As WinForm.Button = e.Form.Controls("Button1")
Dim t As WinForm.TextBox = e.Form.Controls("TextBox1")
spl.SplitterDistance = WorkingAreaHeight*0.75/2
b.Top = (spl.SplitterDistance - b.Height)/2
t.Top = (spl.SplitterDistance - t.Height)/2
b.Left =  (spl.Width - b.Width)/2
t.Left =  (spl.Width - t.Width)/2

[此贴子已经被作者于2013-6-5 16:07:47编辑过]

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


加好友 发短信
等级:童狐 帖子:215 积分:1306 威望:0 精华:0 注册:2013/4/7 22:24:00
  发帖心情 Post By:2013/6/5 16:00:00 [只看该作者]

e.Form.Height 这个属性在代码编辑窗口怎么按Tab键后找不到呢?我还以为Form没有这个属性呢图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
傻马难骑
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:215 积分:1306 威望:0 精华:0 注册:2013/4/7 22:24:00
  发帖心情 Post By:2013/6/5 16:18:00 [只看该作者]

以下是引用lsy在2013-6-5 15:56:00的发言:

Dim spl As WinForm.SplitContainer = e.Form.Controls("SplitContainer2")
Dim b As WinForm.Button = e.Form.Controls("Button1")
Dim t As WinForm.TextBox = e.Form.Controls("TextBox1")
spl.SplitterDistance = e.Form.Height/ 2
b.Top = (spl.SplitterDistance - b.Height)/2
t.Top = (spl.SplitterDistance - t.Height)/2
b.Left =  (spl.Width - b.Width)/2
t.Left =  (spl.Width - t.Width)/2

 

如果窗口是主窗口一类,设计大小与打开时的大小有区别,代码如下:

 

Dim spl As WinForm.SplitContainer = e.Form.Controls("SplitContainer2")
Dim b As WinForm.Button = e.Form.Controls("Button1")
Dim t As WinForm.TextBox = e.Form.Controls("TextBox1")
spl.SplitterDistance = WorkingAreaHeight*0.75/2
b.Top = (spl.SplitterDistance - b.Height)/2
t.Top = (spl.SplitterDistance - t.Height)/2
b.Left =  (spl.Width - b.Width)/2
t.Left =  (spl.Width - t.Width)/2

[此贴子已经被作者于2013-6-5 16:07:47编辑过]

 

   越弄越复杂了,WorkingAreaHeight*0.75 这里为什么要 *0.75?

   SplitContainer2上下二半没能相同高度。


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/6/5 16:22:00 [只看该作者]

以下是引用傻马难骑在2013-6-5 16:18:00的发言:

 

   越弄越复杂了,WorkingAreaHeight*0.75 这里为什么要 *0.75?

   SplitContainer2上下二半没能相同高度。

直接除以2,当然是一半,但是看起来不像各一半,*0.75以后,看起来像各一半,视觉差别,你要觉得/2感觉不错,那也行。

 


 回到顶部