以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]代码错误 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=105398) |
-- 作者:blsu33 -- 发布时间:2017/8/18 13:46:00 -- [求助]代码错误 老师, 下面标颜色的代码有误,劳烦您给看下 Dim tbl As WinForm.TabControl = e.Form.CreateControl("tbl_01", ControlTypeEnum.TabControl) e.Form.AddControl(tbl) Dim panl As WinForm.Panel=e.Form.CreateControl("pl_01", ControlTypeEnum.Panel) Dim spl As WinForm.SplitContainer=e.Form.CreateControl("spl_01", ControlTypeEnum.SplitContainer) spl.Dock=5 panl.AddControl(spl) MessageBox.Show(5) tbl.TabPages(0).AddControl(panl) MessageBox.Show(6) Dim w As Integer=tbl.TabPages("1").Width Dim h As Integer=tbl.TabPages("1").Height If w-350<=0 Then spl.SplitterDistance =w*0.2\'必须是添加控件后添加的属性 Else spl.SplitterDistance =350\'必须是添加控件后添加的属性 End If |
-- 作者:有点蓝 -- 发布时间:2017/8/18 14:28:00 -- 代码增加的tab是没有页面的 Dim p As WinForm.TabPage = tbl.TabPages.Add("page1","page1") p.AddControl(panl)
|
-- 作者:blsu33 -- 发布时间:2017/8/18 15:54:00 -- 老师, Dim tab As WinForm.TabControl = args(0) Dim dr As DataRow = args(1) Dim e As object=args(2) 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 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) \'tab.TabPages(dr("编码规则")).Visible=False MessageBox.Show(tab.TabPages(dr("编码规则")).name & "," &tab.TabPages(dr("编码规则")).Width)‘这块长度还是有问题,不知道为什么第一页的页面大小不正确,导致后面出错。 [此贴子已经被作者于2017/8/21 9:21:47编辑过]
|
-- 作者:blsu33 -- 发布时间:2017/8/18 15:55:00 -- Dim pg As WinForm.TabPage=tab.TabPages(dr("编码规则")) \'e.Form.StopRedraw Dim s1 As WinForm.SplitContainer=e.ForM.CreateControl("SPL_" & dr("编码规则") & "_01",ControlTypeEnum.SplitContainer) S1.Dock=5 Dim s2 As WinForm.SplitContainer=e.ForM.CreateControl("SPL_" & dr("编码规则") & "_02",ControlTypeEnum.SplitContainer) S2.Dock=5 Dim s3 As WinForm.SplitContainer=e.ForM.CreateControl("SPL_" & dr("编码规则") & "_03",ControlTypeEnum.SplitContainer) S3.Dock=5 S3.Orientation=0 Dim s4 As WinForm.SplitContainer=e.ForM.CreateControl("SPL_" & dr("编码规则") & "_04",ControlTypeEnum.SplitContainer) S4.Dock=5 S4.Orientation=0 S1.Panel2.AddControl(S2) S1.Panel1.Collapsed=True S2.Panel1.AddControl(S3) S2.Panel2.Collapsed=True S3.Panel2.AddControl(S4) S3.Panel1.Collapsed=True S1.FixedPanel=1 S2.FixedPanel=2 S3.FixedPanel=1 S4.FixedPanel=2 pg.AddControl(S1) s1.Dock=5\'这块是页面添加 Dim zd As New Dictionary(Of String, object) zd.Add("01",S1.Panel1) zd.Add("02",S2.Panel2) zd.Add("03",S3.Panel1) zd.Add("04",S4.Panel2) zd.Add("05",S4.Panel1) For Each k As String In zd.Keys \'显示所有键及其对应的值 Dim dr2 As DataRow=DataTables("AS002控件").find("编码规则=\'"& K &"\' And 权限编码=\'"& dr("编码规则") &"\'") If dr2 IsNot Nothing Then Functions.Execute("addc",e,zd(k), dr2) zd(k).Collapsed=False Else zd(k).Collapsed=True End If Next Dim w As Integer=e.Form.Width Dim h As Integer=e.Form.Height ‘以上代码没有问题,现在就卡在首页的高度不正确? S1.SplitterDistance =200\'必须是添加控件后添加的属性 S2.SplitterDistance =w-200-80\'必须是添加控件后添加的属性 S3.SplitterDistance =50\'必须是添加控件后添加的属性 S4.SplitterDistance = h-300-50-50\'必须是添加控件后添加的属性 S1.IsSplitterFixed=True S2.IsSplitterFixed=True S3.IsSplitterFixed=True S4.IsSplitterFixed=True e.Form.ResumeRedraw [此贴子已经被作者于2017/8/18 16:04:05编辑过]
|
-- 作者:blsu33 -- 发布时间:2017/8/18 15:56:00 -- .NET Framework 版本:2.0.50727.3053 Foxtable 版本:2017.8.11.1 错误所在事件:自定义函数loop2 详细错误信息: 调用的目标发生了异常。 SplitterDistance 必须在 Panel1MinSize 和 Width - Panel2MinSize 之间。 |
-- 作者:blsu33 -- 发布时间:2017/8/18 16:00:00 -- 3楼的提示,为啥首页的宽度是198与其他的页宽不一致,批量添加的,为啥不一样?神奇 [此贴子已经被作者于2017/8/18 16:06:22编辑过]
|
-- 作者:blsu33 -- 发布时间:2017/8/18 16:01:00 -- 4楼的窗口的高和宽没有调整正确。应该怎么调整呢? |
-- 作者:有点蓝 -- 发布时间:2017/8/18 16:14:00 -- 做个内部表的实例上传看看 |
-- 作者:blsu33 -- 发布时间:2017/8/21 8:43:00 -- 老师, 用上例子吗? |
-- 作者:有点甜 -- 发布时间:2017/8/21 9:10:00 -- 回复5楼。
msgbox(w-200-80) S2.SplitterDistance = iif(w-200-80>=10, w-200-80, 10)\'必须是添加控件后添加的属性
必须判断设置的值是否大于10 |