以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  调整主窗口、独立窗口控件的边距  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=105510)

--  作者:blsu33
--  发布时间:2017/8/21 12:57:00
--  调整主窗口、独立窗口控件的边距
老师,
    调整页面窗口中的SplitContainer的分区边距始终不对,劳烦您指导如何用代码调整;
如果是主窗口怎么做,其他窗口如何调整?例子如下,问题标注到了,窗口1的AfterLoad代码



 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:spl宽高.foxdb



--  作者:有点甜
--  发布时间:2017/8/21 15:14:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:spl宽高.foxdb


--  作者:blsu33
--  发布时间:2017/8/21 16:28:00
--  
老师,

\'If e.Form.panel.Visible = True Then  这个去掉可以吗,这句是什么意思呢

我这边放放到自定义函数中,黄色的部分 和例子一样
Dim tab As WinForm.TabControl = args(0)
Dim dr As DataRow = args(1)
Dim e As object=args(2)
e.Form.StopRedraw

Dim dt As DataTable = dr.DataTable
Dim drs As List(of DataRow) = dt.Select("编码规则 like \'" & dr("编码规则") & "%\' and 编码级次 = \'" & dr("编码级次")+1 & "\'")
If drs.count > 0 Then
    Dim ctab As WinForm.TabControl
    ctab = tab.Form.CreateControl("tab_" & dr("编码规则"), ControlTypeEnum.tabcontrol)
    ctab.Dock = 5
    \'ctab.ShowTabs=False
    Dim panel As WinForm.panel
    panel = tab.Form.CreateControl("pal_" & dr("编码规则"), ControlTypeEnum.panel)
    panel.Dock = 5
    panel.AddControl(ctab)
    For Each cdr As DataRow In drs
        ctab.TabPages.Add(cdr("编码规则"), cdr("编码名称")).Dock = 5
        Functions.Execute("loop2", ctab, cdr,e)
        ctab.TabPages(cdr("编码规则")).Dock = 5
    Next
    tab.TabPages(dr("编码规则")).AddControl(panel)
Else
    \'If e.Form.panel.Visible = True Then
    e.Form.TimerEnabled = False

[此贴子已经被作者于2017/8/21 16:31:08编辑过]

--  作者:有点甜
--  发布时间:2017/8/21 16:31:00
--  
以下是引用blsu33在2017/8/21 16:28:00的发言:
老师,

\'If e.Form.panel.Visible = True Then  这个去掉可以吗,这句是什么意思呢

 

可以去掉。目的是为了判断窗口是否已经显示出来。


--  作者:blsu33
--  发布时间:2017/8/21 16:33:00
--  
3楼代码执行后,位置还是不对呢
--  作者:有点甜
--  发布时间:2017/8/21 16:51:00
--  
以下是引用blsu33在2017/8/21 16:33:00的发言:
3楼代码执行后,位置还是不对呢

 

位置对不对你自己写代码控制。窗口显示后,width、height等信息,是肯定正确的。


--  作者:blsu33
--  发布时间:2017/8/21 17:01:00
--  
老师,
  您给的的确可以实现,宽高都能能调整正确,但是,放到我这边的系统中,就不行了,这可怎么办呢

--  作者:blsu33
--  发布时间:2017/8/21 17:02:00
--  
这个我弄了好多天了,位置怎么也调整不对啊,能给远程下吗?
--  作者:有点甜
--  发布时间:2017/8/21 17:08:00
--  
以下是引用blsu33在2017/8/21 17:02:00的发言:
这个我弄了好多天了,位置怎么也调整不对啊,能给远程下吗?

 

1、你直接指定数值测试行不行?相乘的比例不是你需要的?

 

2、靠右、靠下,你直接用父容器的宽度或者高度相减得到。

 


--  作者:blsu33
--  发布时间:2017/8/21 17:19:00
--  
老师,
MessageBox.Show(S1.Width)
宽度是198

在窗口中宽度就变为1770

而 S1.SplitterDistance 应该是按照1770的宽度计算,却使用198计算

假如直接用固定值,S1.SplitterDistance=400,就直接报错,因为宽度最大为198,

这是何故。