以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  记录窗口的显示与隐藏  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=188644)

--  作者:1234567
--  发布时间:2023/10/8 20:20:00
--  记录窗口的显示与隐藏
Table上有很多列,设计了多个记录窗口,根据某列的内容不同而显示对应的记录窗口.代码如下:

在表事件中CurrentChanged

Dim rgd2 As WinForm.RecordGrid = e.Form.Controls("RecordGrid1")
rgd2.Table = Tables("报价系统_Table4") \'指定绑定表
If Tables("报价系统_Table4").current("工步") = "车床"Then
    e.Form.Controls("RecordGrid2").Visible = False   隐藏所有记录窗口,代码怎么写?
    e.Form.Controls("RecordGrid3").Visible = False
e.Form.Controls("RecordGrid1").Visible = True\'打开RecordGrid1

ElseIf Tables("报价系统_Table4").current("工步") = "磨床"Then
    e.Form.Controls("RecordGrid1").Visible = False
    e.Form.Controls("RecordGrid2").Visible = False
e.Form.Controls("RecordGrid3").Visible = True\'打开RecordGrid1
End If
rgd2.Build() \'重新生成记录窗口

第一个问题:选择不同数据行后,先要把所有记录窗口隐藏,隐藏所有记录窗口,代码怎么写?
第二个问题:当TABLE中没有数据时,提示运行错误:未将对象引用设置到对象的实例。怎么解决?

--  作者:有点蓝
--  发布时间:2023/10/8 20:32:00
--  
1、就是1楼的代码,逐个设置控件的Visible = False

2、http://www.foxtable.com/webhelp/topics/0445.htm,理解一下什么是“完美”代码

--  作者:1234567
--  发布时间:2023/10/8 21:33:00
--  
Dim rgd2 As WinForm.RecordGrid = e.Form.Controls("RecordGrid1")
rgd2.Table = Tables("生产调度_Table4") \'指定绑定表
If Tables("生产调度_Table4").Current IsNot Nothing And Tables("生产调度_Table4").current("工步") = "车床"Then
    e.Form.Controls("RecordGrid2").Visible = False 
    e.Form.Controls("RecordGrid3").Visible = False
e.Form.Controls("RecordGrid1").Visible = True\'打开RecordGrid1

Else If Tables("生产调度_Table4").Current IsNot Nothing And Tables("生产调度_Table4").current("工步") = "磨床"Then
    e.Form.Controls("RecordGrid1").Visible = False
    e.Form.Controls("RecordGrid2").Visible = False
e.Form.Controls("RecordGrid3").Visible = True\'打开RecordGrid1
End If
rgd2.Build() \'重新生成记录窗口

加上红色代码,还是提示运行错误:未将对象引用设置到对象的实例?当在Tables("生产调度_Table4")上新增一行后,可正常运行.

--  作者:有点蓝
--  发布时间:2023/10/8 21:46:00
--  
方法1、先判断Current IsNot Nothing,不要和其它条件放到一起
2、http://www.foxtable.com/webhelp/topics/0220.htm,分清楚And和AndAlso的区别