以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]代码生成TabControl及其page 并嵌套下一层TabControl (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102231) |
||||
-- 作者:blsu33 -- 发布时间:2017/6/15 16:37:00 -- [求助]代码生成TabControl及其page 并嵌套下一层TabControl 老师, 如何代买生成TabControl及其page 并嵌套下一层TabControl,没写过,向您学习一下。 下面的分区面板1是用控件添加的例子,希望能代码生分区面板2中一个和分区面板1相同的控件,结构来自表,不知怎么写? [此贴子已经被作者于2017/6/15 16:53:25编辑过]
|
||||
-- 作者:有点色 -- 发布时间:2017/6/15 17:51:00 -- Dim spl As WinForm.SplitContainer = e.Form.Controls("SplitContainer1") Dim sp As WinForm.SplitContainer = e.Form.Controls("SplitContainer1") For Each level As String In dt.GetValues("上层", "", "_sortkey")
你的表结构尽量改一下。 |
||||
-- 作者:blsu33 -- 发布时间:2017/6/16 13:31:00 -- 老师, 领会了您的代码要点,根据需要,写了一上午还是没有写出来,完全晕菜了,能在给看看嘛。 附件窗口左面区面板是样子,右面是需要在已有的页面中增加一个不包括一级的部分,代码怎么写呢?
|
||||
-- 作者:有点色 -- 发布时间:2017/6/16 14:44:00 --
|
||||
-- 作者:blsu33 -- 发布时间:2017/6/16 15:48: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("mytab_" & dr("编码规则"), ControlTypeEnum.tabcontrol) ctab.Dock = 5 Dim panel As WinForm.panel panel = tab.Form.CreateControl("mypnl_" & dr("编码规则"), ControlTypeEnum.panel) panel.Dock = 5 panel.AddControl(ctab) For Each cdr As DataRow In drs Dim p As Winform.TabPage=ctab.TabPages.Add(cdr("编码规则"), cdr("编码名称")) Functions.Execute("loop", ctab, cdr) If cdr("是否末级")=True Then Dim tbl As WinForm.Table tbl = e.Form.CreateSQLQuery(cdr("编码规则") & cdr("编码名称"), "Select * F rom {cdr("编码规则") & cdr("编码名称")} where "1=1","")‘这块表达式不让保存,不知为何? tbl.SetBounds(10, 50, 600, 400) p.AddControl(tbl) End If Next tab.TabPages(dr("编码规则")).AddControl(panel) End If |
||||
-- 作者:blsu33 -- 发布时间:2017/6/16 15:51:00 -- 这样写?也不对 "Select * F rom "{" & cdr("编码规则") & cdr("编码名称") & "}" where "1=1","" tbl.SetBounds(10, 50, 600, 400) 这块怎么写是在page填满显示 |
||||
-- 作者:有点色 -- 发布时间:2017/6/16 16:55:00 -- Dim tab As WinForm.TabControl = args(0) Dim dr As DataRow = args(1) 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("mytab_" & dr("编码规则"), ControlTypeEnum.tabcontrol) ctab.Dock = 5 Dim panel As WinForm.panel panel = tab.Form.CreateControl("mypnl_" & dr("编码规则"), ControlTypeEnum.panel) panel.Dock = 5 panel.AddControl(ctab) For Each cdr As DataRow In drs ctab.TabPages.Add(cdr("编码规则"), cdr("编码名称")) Functions.Execute("loop", ctab, cdr) Next tab.TabPages(dr("编码规则")).AddControl(panel) Else Dim tbl As WinForm.Table tbl = tab.Form.CreateSQLQuery("myTable" & dr("编码规则"), "Select * From {AS001权限编码} where 1=1", "") \'这块表达式不让保存,不知为何? tbl.Dock = 5 tab.TabPages(dr("编码规则")).AddControl(tbl) End If |
||||
-- 作者:blsu33 -- 发布时间:2017/6/19 10:49:00 -- 老师, 测试中还存在一个问题 _Locked _Identify _SortKey 这些列在数据库中存在(更改为了外部数据源),上面的例子在调整窗口宽度时,会提示错误 错误提示如下 有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾。 ************** 异常文本 ************** System.NullReferenceException: 未将对象引用设置到对象的实例。 在 Foxtable.o_O0_oO0.oOo_O_oO(Object A_0, OwnerDrawCellEventArgs A_1, Boolean A_2, Boolean A_3, Boolean& A_4) 在 Foxtable.o_O0_oO0.oOo_O_oO(Object A_0, OwnerDrawCellEventArgs A_1) 在 C1.Win.C1FlexGrid.C1FlexGridBase.OnOwnerDrawCell(OwnerDrawCellEventArgs e) 在 C1.Win.C1FlexGrid.C1FlexGridBase.#gdb(OwnerDrawCellEventArgs #tQ) 在 C1.Win.C1FlexGrid.C1FlexGridBase.#fdb(Graphics #AA, Int32 #j, Int32 #l, Style #aE, Rectangle #o5, String #gM, Image #Ak) 在 C1.Win.C1FlexGrid.C1FlexGridBase.DrawCell(Graphics #AA, Int32 #j, Int32 #l, Style #aE, Rectangle #o5, String #gM, Image #Ak, CheckEnum #bdb) 在 C1.Win.C1FlexGrid.C1FlexGridBase.DrawCell(PaintEventArgs e, Int32 row, Int32 col) 在 C1.Win.C1FlexGrid.C1FlexGrid.DrawCell(PaintEventArgs e, Int32 row, Int32 col) 在 C1.Win.C1FlexGrid.C1FlexGrid.DrawRow(PaintEventArgs e, Int32 row) 在 C1.Win.C1FlexGrid.C1FlexGridBase.#adb(PaintEventArgs #tQ) 在 C1.Win.C1FlexGrid.C1FlexGridBase.OnPaint(PaintEventArgs e) 在 System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs) 在 System.Windows.Forms.Control.WmPaint(Message& m) 在 System.Windows.Forms.Control.WndProc(Message& m) 在 C1.Win.C1FlexGrid.Util.BaseControls.ScrollableControl.WndProc(Message& m) 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) ************** 已加载的程序集 ************** .... ---------------------------------------- ************** JIT 调试 ************** 要启用实时(JIT)调试, 该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置 jitDebugging 值。 编译应用程序时还必须启用 调试。 例如: <configuration> <system.windows.forms jitDebugging="true" /> </configuration> 启用 JIT 调试后,任何无法处理的异常 都将被发送到在此计算机上注册的 JIT 调试器, 而不是由此对话框处理。 |
||||
-- 作者:blsu33 -- 发布时间:2017/6/19 10:49:00 -- 找了一下论坛 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=62080&skin=0 好像是有类似的问题,但是没看出来有什么问题,劳烦老师在给看下。
|
||||
-- 作者:有点色 -- 发布时间:2017/6/19 11:46:00 -- Dim tab As WinForm.TabControl = args(0) End If |