以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]是不是代码冲突?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90193)

--  作者:jyh7081
--  发布时间:2016/9/7 14:25:00
--  [求助]是不是代码冲突?
如果在当前表(或全局表事件)的PrepareEdit事件写入下列代码:
If e.RecordGrid IsNot Nothing AndAlso e.RecordGrid.Focused Then \'如果是在记录窗口输入数据
   e.Table.Select(e.Row.Index,e.Col.Index)
End If

那么,分别运行下列2组代码时,提示:“未将对象引用设置到对象的实例”。若再取消上述表事件,仍然提示。实际上代码运行了,也达到了效果,但不知道哪里出了错。
1-------
For Each dt As DataTable In DataTables
    For Each a As OBJECT In Tables(dt.name).grid.parent.controls
        For Each b As OBJECT In a.controls
            output.show(b.text)
            b.font = New Font("楷体",14)
        Next
    Next
Next
2------
For Each tb As Table In Tables    \'表窗口
  \'Dim tb As Table = Tables("样例")
   Dim rng As C1.Win.C1FlexGrid.CellRange = tb.Grid.GetCellRange(0, 1, 0, tb.cols.Count)
   Dim cs1 As C1.Win.C1FlexGrid.CellStyle = tb.Grid.Styles.Add("样式1")
   cs1.Font = new font("宋体", 9)
  rng.style = cs1
Next

--  作者:有点蓝
--  发布时间:2016/9/7 14:40:00
--  
我测试没有问题。下面2段代码放在什么地方执行?
--  作者:jyh7081
--  发布时间:2016/9/7 15:22:00
--  
“下面2段代码放在什么地方执行?”--不知什么意思

第一台电脑:好像我在U盘里、桌面上运行时,出错;放入硬盘里的文件夹内运行就正常了。
第二台电脑:好像都出错。
下面的两段代码都写在菜单里的按钮click中。

跟这有关系吗?

--  作者:有点蓝
--  发布时间:2016/9/7 15:35:00
--  
上例子测试。另外项目最好不要放在U盘使用。容易损坏
--  作者:jyh7081
--  发布时间:2016/9/7 19:00:00
--  
谢谢!

打开项目-记录窗口-工作导航(菜单)-大号字体-(大、中、标准),提示:“未将对象引用设置到对象的实例”。

项目属性afteropenobject有一句代码:“Forms("开机窗口").show()”,如果注释掉,就正常了。

请看附件:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:副本.rar


--  作者:有点蓝
--  发布时间:2016/9/7 20:31:00
--  
菜单代码改为

For Each dt As Table In Tables    \'记录窗口
    Dim rng As C1.Win.C1FlexGrid.CellRange = dt.Grid.GetCellRange(0, 1, 0, dt.cols.Count)
    Dim cs1 As C1.Win.C1FlexGrid.CellStyle = dt.Grid.Styles.Add("样式1")
    cs1.Font = new font("宋体", 9)
    rng.style = cs1
    If dt.grid.parent Is Nothing Then Continue For
    For Each a As OBJECT In dt.grid.parent.controls
        For Each b As OBJECT In a.controls
            \'output.show(b.text)
            b.font = New Font("楷体",14)
            
            If b.text = dt.name Then
                Dim d = b.controls(0).controls(0)
                rng = d.GetCellRange(0, 0, d.rows.count-1, 0)
                cs1 = d.Styles.Add("样式1")
                cs1.Font = new font("宋体", 9)
                rng.style = cs1
            End If
        Next
    Next
Next

--  作者:jyh7081
--  发布时间:2016/9/7 21:24:00
--  
谢谢版主!解决问题了。