以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 导航快速切换时偶尔会报错 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=126578) |
-- 作者:qaz17909 -- 发布时间:2018/10/24 17:01:00 -- 导航快速切换时偶尔会报错 用目录树做成导航主窗口,点击目录树节点,打开不同的窗口。正常速度切换是没有问题,但是如果几个节点之间点击的速度比较快就是切换的比较快的时候,偶尔会出现“不存在名称为“窗口_Table1”的Table!”提示错误,请问是为什么?后面的提示问题出现位置有时是窗口的AfterLoad有是目录树的NodeMouseClick。 |
-- 作者:有点甜 -- 发布时间:2018/10/24 17:30:00 -- 你代码有问题,请贴出你所写代码,或者做个实例发上来测试。 |
-- 作者:qaz17909 -- 发布时间:2018/10/25 11:17:00 -- 目录树点击节点的代码 Select Case e.Node.Text Case "报告发送" If DataTables.Contains("报告信息") = False Then DataTables.Load("报告信息") End If MainTable = Tables("报告信息") Forms("报告发送").open() If Forms("报告发送").Opened Then Dim Filter As String = "[报告进度] = \'报告已批准\' AND [已打印] = 1 AND [已发送] = 0" With DataTables("报告发送_Table1") .LoadFilter = "" .LoadFilter = Filter .LoadTop = 50 .LoadPage = 0 .Loadover = "报告编号" .Load Forms("报告发送").Controls("TextBox页数页码").text = "1/" & DataTables("报告发送_Table1").Totalpages End With Tables("报告发送_Table1").AutoSizeCols() End If End select
|
-- 作者:有点蓝 -- 发布时间:2018/10/25 11:23:00 -- 试试 Select Case e.Node.Text Case "报告发送" If DataTables.Contains("报告信息") = False Then DataTables.Load("报告信息") Application.DoEvents() End If MainTable = Tables("报告信息") If Forms("报告发送").Opened = False Then Forms("报告发送").open() Application.DoEvents() End If If Forms("报告发送").Opened Then Dim Filter As String = "[报告进度] = \'报告已批准\' AND [已打印] = 1 AND [已发送] = 0" With DataTables("报告发送_Table1") .LoadFilter = "" .LoadFilter = Filter .LoadTop = 50 .LoadPage = 0 .Loadover = "报告编号" .Load Forms("报告发送").Controls("TextBox页数页码").text = "1/" & DataTables("报告发送_Table1").Totalpages End With Tables("报告发送_Table1").AutoSizeCols() End If End Select |
-- 作者:qaz17909 -- 发布时间:2018/10/25 14:08:00 -- 现在错误提示是在窗口的AfterLoad,未将对象引用设置到对象的实例。 |
-- 作者:有点蓝 -- 发布时间:2018/10/25 14:22:00 -- 窗口的AfterLoad代码呢 |
-- 作者:qaz17909 -- 发布时间:2018/10/25 15:40:00 -- Dim t As Table = Tables("报告发送_Table1") t.DataTable.GlobalHandler.BeforeShowContextMenu = True t.ExtendLastCol = True t.Cols.Frozen = 1 t.Sort = "报告编号" Dim tb1 As WinForm.Table = e.Form.Controls("Table1") For Each c As Col In tb1.Table.Cols c.TextAlign = TextAlignEnum.Center Next t.Cols("报告编号").AllowEdit = False t.Cols("样品类别").AllowEdit = False t.Cols("检测类别").AllowEdit = False t.Cols("送样方式").AllowEdit = False t.Cols("委托方").AllowEdit = False Dim rgd1 As WinForm.RecordGrid = e.Form.Controls("RecordGrid1") rgd1.Table = t\'指定绑定表 rgd1.Columns = "报告编号|样品类别|检测类别|归档类别|送样方式|委托方|委托方地址|联系人|联系人电话|报告发送方式|收件人单位|收件地址|收件人|收件人电话|受理备注|接样人|受理完成日期|编制人|编制日期|审核人|审核日期|批准人|批准日期" rgd1.Build() \'重新生成记录窗口 Dim g1 = Forms("报告发送").Controls("RecordGrid1").BaseControl g1.AutoSizeRows Dim rgd2 As WinForm.RecordGrid = e.Form.Controls("RecordGrid2") rgd2.Table = t\'指定绑定表 rgd2.Columns = "收件人|收件人电话|收件地址|快递公司及单号|协议客户|合同编号|应付费用|已付款|已开票|付款情况" rgd2.Build() \'重新生成记录窗口 Dim g2 = Forms("报告发送").Controls("RecordGrid2").BaseControl g2.AutoSizeRows Dim rgd3 As WinForm.RecordGrid = e.Form.Controls("RecordGrid3") rgd3.Table = t\'指定绑定表 rgd3.Columns = "结果已通知|客户通知反馈报告发送方式|客户通知反馈具体要求|客户通知反馈其他" rgd3.Build() \'重新生成记录窗口 Dim g3 = Forms("报告发送").Controls("RecordGrid3").BaseControl g3.AutoSizeRows If User.Group = "质控综合部" Or user.Group = "管理层" Or User.Group = "行政部" Then Return Else Tables("报告发送_Table1").AllowEdit = False For Each c As WinForm.Control In e.Form.Controls If Typeof c Is WinForm.Button Then c.Enabled = False End If Next End If
|
-- 作者:有点蓝 -- 发布时间:2018/10/25 15:51:00 -- 调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm 看看运行到哪一句代码出错
|
-- 作者:qaz17909 -- 发布时间:2018/11/3 19:15:00 -- 提示:“报告发送已关闭,无法调用其中的空间“Table1”” 是不是因为切换的太快,窗口已经切换到下一个窗口,但上一个程序中窗口的形成还未完成。
|
-- 作者:有点甜 -- 发布时间:2018/11/4 21:31:00 -- 实例发上来测试。 |