Foxtable(狐表)用户栏目专家坐堂 → 如何实现窗口按键事件?


  共有3787人关注过本帖树形打印复制链接

主题:如何实现窗口按键事件?

帅哥哟,离线,有人找我吗?
lgz518
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
如何实现窗口按键事件?  发帖心情 Post By:2020/2/21 9:49:00 [只看该作者]


老师,如何把下面代码放在窗口的按键单击事件,还是这些代码是放在新增,保存代码之前还是其位置之后?谢谢
有试一下,报错
Dim dr As DataRow = e.DataRow
Dim pf As String
If dr.RowState <> DataRowState.Added Then 
    Return 
ElseIf dr.IsNull("制单日期") Then 
    e.Cancel = True 
    MessageBox.Show("必须输入日期!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) 
    Return
Else
    pf = "SHDH" & "" & Format(dr("制单日期"),"yyyyMM") 
End If

e.DataRow("送货单号") = pf & "-" & Format(Key,"0000")   '流水号的设计)

e.DataRow("制单日期") = Date.Today()   
e.DataRow("制单人") = User.name       
Static Index As Integer = 99999
e.DataRow("送货单号") = Format(Date.Today(),"yyMM") & "-" & Index
Index = Index - 1

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/21 9:59:00 [只看该作者]

这种应该在表格datacolchanged事件处理:http://www.foxtable.com/webhelp/topics/2403.htm

 回到顶部
帅哥哟,离线,有人找我吗?
lgz518
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2020/2/21 11:14:00 [只看该作者]

老师,我知道,但不灵活,以窗口开发,窗口上的表属性(副)及字段没有正表的表属性,因一张表或关联表,在实际开发中不是只在一处被引用,在很多引用时,就是出现局限,建议官方改进,可以没那容易,所以只有改按键事件,所以想改用按键事件发生报错,请老师帮助,谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/21 11:53:00 [只看该作者]

表格事件才是最灵活的。副本一样可以使用主表的事件。窗口按钮不是更多限制吗,按钮只能这个窗口使用,在很多窗口引用时不是要每个窗口都写代码?而不管有多少个副本,一样可以使用datacolchanged事件处理这个编号呀!如果窗口表使用了fill或者DataSource加载,把代码放到全局表事件即可。

窗口按钮用法,比如新增按钮
dim r as row = tables("表A").addnew
r("制单日期") = Date.Today()   
r("制单人") = User.name  
dim Key as string = datatables("表A").compute("max(送货单号)","制单日期='" & Date.Today & "'")
dim idx as integer = 1
if key > "" then
idx = val(key.substring(11) )+ 1
end if
r("送货单号") = "SHDH" & Format(Date.Today(),"yyyyMM") & "-"  & Format(idx,"0000")

 回到顶部
帅哥哟,离线,有人找我吗?
lgz518
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2020/2/21 16:12:00 [只看该作者]

老师,1.根据您的代码,试一下,第一个编号0001,之后都是0000?
2.下面代码红色可能有错,不知道怎么改,是保存
Dim dr As DataRow = e.DataRow
Dim pf As String
If dr.RowState <> DataRowState.Added Then 
    Return 
ElseIf dr.IsNull("制单日期") Then 
    e.Cancel = True 
    MessageBox.Show("必须输入日期!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) 
    Return
Else
    pf = "SHDH" & "" & Format(dr("制单日期"),"yyyyMM") 
End If

e.DataRow("送货单号") = pf & "-" & Format(Key,"0000")   '流水号的设计)
3.表格事件才是最灵活的。副本一样可以使用主表的事件。窗口按钮不是更多限制吗?
3.1 是这样比如送货单登记,我们如果只做登记,可表事件,但在做冲帐,引用同一套表(主表和明细),登记取登记单号,冲帐取冲帐单号,表事件就不能用?
因为狐表在窗口上没有把副表没正表的表事件,做不了,如果重新做套表,可能增加系统负担,表太多。
3.2 狐表的表事件大部分是针对正表,在单表使用时,可能看不出影响,但在关联表使用就会有影响,因为它们要求都是正表,但窗口开发,被引用时,就是出现影响。
     一个在查询,另一个登记,就会出影响


 回到顶部
帅哥哟,离线,有人找我吗?
lgz518
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2020/2/21 16:21:00 [只看该作者]

如果,窗口的副表都有正表所有表事件,您说方法是可行。狐表是注重表开发,轻窗口开发,其实实际不是窗口和页面开发为主,希望可以加以重视窗口和页面开发为主,因为BS和移动端开发还是窗口和页面。

目前来看窗口开发的工作量相当大。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/21 16:50:00 [只看该作者]

如果是开发web服务端,确实无法使用表事件,也不建议使用。我主要指的是cs客户端的开发,窗口表完全可以使用表事件。

请上传具体实例说明问题
[此贴子已经被作者于2020/2/21 16:51:32编辑过]

 回到顶部