以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]怎么判断表事件在哪个窗口中发生的。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=34024)

--  作者:狐生
--  发布时间:2013/5/29 9:59:00
--  [求助]怎么判断表事件在哪个窗口中发生的。
我在表事件positonChanged中写了代码,希望选中某行时,将值填充相应窗口的控件中,而不想用绑定的方法实现,但是表在不同的位置时会出错,比如在窗口中又不会出错,搞不懂了!怎么判断表事件在哪个窗口中发生的?
positonChanged中:
Dim dl As WinForm.TextBox = Forms("物资类别管理窗口").Controls("TextBox1")
Dim dlm As WinForm.TextBox = Forms("物资类别管理窗口").Controls("TextBox2")
dl.Text=e.Table.Current("大类ID")
dlm.Text=e.Table.Current("大类名称")

If e.Table.Current Is Nothing Then \'如果Current为Nothing
    dl.Text=""
    dlm.Text=""\'没有选定行时执行的代码
Else
    dl.Text=e.Table.Current("大类ID")
    dlm.Text=e.Table.Current("大类名称")
End If

[此贴子已经被作者于2013-5-29 10:06:06编辑过]

--  作者:狐生
--  发布时间:2013/5/29 10:07:00
--  
这是附件
[此贴子已经被作者于2013-5-29 10:07:25编辑过]

--  作者:jspta
--  发布时间:2013/5/29 10:08:00
--  
以下是引用狐生在2013-5-29 9:59:00的发言:
我在表事件positonChanged中写了代码,希望选中某行时,将值填充相应窗口的控件中,而不想用绑定的方法实现,但是表在不同的位置时会出错,比如在窗口中又不会出错,搞不懂了!怎么判断表事件在哪个窗口中发生的?
positonChanged中:
Dim dl As WinForm.TextBox = Forms("物资类别管理窗口").Controls("TextBox1")
Dim dlm As WinForm.TextBox = Forms("物资类别管理窗口").Controls("TextBox2")
dl.Text=e.Table.Current("大类ID")
dlm.Text=e.Table.Current("大类名称")

If e.Table.Current Is Nothing Then \'如果Current为Nothing
    dl.Text=""
    dlm.Text=""\'没有选定行时执行的代码
Else
    dl.Text=e.Table.Current("大类ID")
    dlm.Text=e.Table.Current("大类名称")
End If

你第一第二行限定了你这个表只能在这个窗口打开的时候才能正常工作

[此贴子已经被作者于2013-5-29 10:09:12编辑过]

--  作者:狐生
--  发布时间:2013/5/29 10:09:00
--  
怎么发不上来呢??
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:我的练习.rar


--  作者:狐生
--  发布时间:2013/5/29 10:11:00
--  
可是在自己设计的窗口表中没有这个事件啊
--  作者:jspta
--  发布时间:2013/5/29 10:19:00
--  
你这张表在哪里?你这张表最好是设计在这个窗口中,才能保证该事件正常工作
--  作者:XYT
--  发布时间:2013/5/29 10:20:00
--  
窗口表继承所有表者的事件,在所以表者设置了就可以了
--  作者:XYT
--  发布时间:2013/5/29 10:22:00
--  
你打开窗口选择行不是正常吗,你在表了选择会报错,因为你没有打开窗口
--  作者:狐狸爸爸
--  发布时间:2013/5/29 10:23:00
--  

If Forms("物资类别管理窗口").Opened
    Dim dl As WinForm.TextBox = Forms("物资类别管理窗口").Controls("TextBox1")
    Dim dlm As WinForm.TextBox = Forms("物资类别管理窗口").Controls("TextBox2")
    dl.Text=e.Table.Current("大类ID")
    dlm.Text=e.Table.Current("大类名称")
   
    If e.Table.Current Is Nothing Then \'如果Current为Nothing
        dl.Text=""
        dlm.Text=""\'没有选定行时执行的代码
    Else
        dl.Text=e.Table.Current("大类ID")
        dlm.Text=e.Table.Current("大类名称")
    End If
End If

 

建议:做例子提问的时候,不需要附加这么大的一个数据库,用内部表做个简单的例子就行,因为别人下载需要时间,也浪费服务器资源。

[此贴子已经被作者于2013-5-29 10:22:50编辑过]

--  作者:学会了就买开发版
--  发布时间:2013/5/29 10:41:00
--  
我也是刚刚在帮助中找到答案

5、关闭窗口设计器,回到产品表,打开表属性设置窗口,将其CurrentChanged事件代码设为:

If Forms("窗口1").Opened() \'一定要判断用于模拟关联表的窗口是否已经打开
    Dim
 t As Table = Tables("窗口1_Table1"
)
    With
 Tables("产品"
)
        If
 .Current Is Nothing 
Then
            t.Filter = 
"False"
        
Else
            t.Filter = 
"产品编号 = " & .Current("产品编号")
        End
 
IF
    
End With
End
 If