Foxtable(狐表)用户栏目专家坐堂 → 为什么状态栏没显示自动计算结果

总数 19 1 2 下一页

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

主题:为什么状态栏没显示自动计算结果

美女呀,离线,留言给我吧!
采菊东篱下
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1882 积分:10391 威望:0 精华:0 注册:2019/4/6 8:45:00
为什么状态栏没显示自动计算结果  发帖心情 Post By:2023/10/19 12:52:00 [只看该作者]

自定义菜单后无法执行系统自带的状态栏显示自动计算结果,我在全局表事件AfterSelRangeChange中写下一面代码:
Dim t As Table
RibbonMenu.StatusBar.Message3 = ""
If e.Table IsNot CurrentTable OrElse CurrentTable Is Nothing Then
    Return
Else
    t = CurrentTable
End If
With t
    If .TopRow = .BottomRow AndAlso .LeftCol = .RightCol Then
        Return
    End If
    For c As Integer = .LeftCol To .RightCol
        If .Cols(c).IsNumeric = False Then
            RibbonMenu.StatusBar.Message3 = "个数:" & .Aggregate(AggregateEnum.Count, .TopRow,.LeftCol,.BottomRow,.RightCol) & "  累计:" & 0 & "  平均:" & 0 & "  最大值:" & 0 & "  最小值:" & 0
        Else
            RibbonMenu.StatusBar.Message3 = "个数:" & .Aggregate(AggregateEnum.Count, .TopRow,.LeftCol,.BottomRow,.RightCol) & "  累计:" & .Aggregate(AggregateEnum.Sum,.TopRow,.LeftCol,.BottomRow,.RightCol) & "  平均:" & .Aggregate(AggregateEnum.Average,.TopRow,.LeftCol,.BottomRow,.RightCol) & "  最大值:" & .Aggregate(AggregateEnum.Max,.TopRow,.LeftCol,.BottomRow,.RightCol) & "  最小值:" & .Aggregate(AggregateEnum.Min,.TopRow,.LeftCol,.BottomRow,.RightCol)
        End If
    Next
End With


项目事件中也写下:
For Each dt As DataTable In DataTables
    dt.GlobalHandler.AfterSelRangeChange = True
Next

状态栏没显示自动计算?

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


加好友 发短信
等级:超级版主 帖子:114157 积分:581442 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/10/19 13:44:00 [只看该作者]

With e.Table
RibbonMenu.StatusBar.Message3 = ""
    If .TopRow = .BottomRow AndAlso .LeftCol = .RightCol Then
        Return
    End If
    RibbonMenu.StatusBar.Message3 = "个数:" & .Aggregate(AggregateEnum.Count, .TopRow,.LeftCol,.BottomRow,.RightCol) & "  累计:" & .Aggregate(AggregateEnum.Sum,.TopRow,.LeftCol,.BottomRow,.RightCol) & "  平均:" & .Aggregate(AggregateEnum.Average,.TopRow,.LeftCol,.BottomRow,.RightCol) & "  最大值:" & .Aggregate(AggregateEnum.Max,.TopRow,.LeftCol,.BottomRow,.RightCol) & "  最小值:" & .Aggregate(AggregateEnum.Min,.TopRow,.LeftCol,.BottomRow,.RightCol)
End With
RibbonMenu.StatusBar.Refresh

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1882 积分:10391 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2023/10/19 17:38:00 [只看该作者]

你的代码只统计数字列数据,如果想如exce那样如果是字符列或字符与数字列并存,只统计选择区域单元格内有效个数,我这样写一样不能统计,应如何写呢?这是一个很方便实用的功能,希望你们的软件同样有,如果软件自带此功能,我们就不用费劲自己编代码了。
'以下代码用于在状态栏显示自动计算结果:
With e.Table
    If .TopRow = .BottomRow AndAlso .LeftCol = .RightCol Then
        Return
    End If
    Dim bb As Boolean = True
    For c As Integer = .LeftCol To .RightCol
        If .Cols(c).IsNumeric = False Then
            bb = False
            Exit For
        End If
    Next
    If bb = False Then
        RibbonMenu.StatusBar.Message3 = "个数:" & .Aggregate(AggregateEnum.Count, .TopRow,.LeftCol,.BottomRow,.RightCol) & "  累计:" & 0 & "  平均:" & 0 & "  最大值:" & 0 & "  最小值:" & 0
    Else
        RibbonMenu.StatusBar.Message3 = "个数:" & .Aggregate(AggregateEnum.Count, .TopRow,.LeftCol,.BottomRow,.RightCol) & "  累计:" & .Aggregate(AggregateEnum.Sum,.TopRow,.LeftCol,.BottomRow,.RightCol) & "  平均:" & .Aggregate(AggregateEnum.Average,.TopRow,.LeftCol,.BottomRow,.RightCol) & "  最大值:" & .Aggregate(AggregateEnum.Max,.TopRow,.LeftCol,.BottomRow,.RightCol) & "  最小值:" & .Aggregate(AggregateEnum.Min,.TopRow,.LeftCol,.BottomRow,.RightCol)
    End If
End With
RibbonMenu.StatusBar.Refresh
[此贴子已经被作者于2023/10/19 17:53:49编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1882 积分:10391 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2023/10/19 18:30:00 [只看该作者]

我刚才试时以为你的代码在窗口中能显示了,谁知还是不行,那只是在表A中测试,是系统自带的功能,系统不能统字符列计个数。我上传实例你试试吧,这是我们家新楼准备装修的预算数据。
 下载信息  [文件大小:544.0 KB  下载次数:1]
图片点击可在新窗口打开查看点击浏览该文件:装修预算.foxdb



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


加好友 发短信
等级:超级版主 帖子:114157 积分:581442 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/10/19 20:14:00 [只看该作者]

系统不是不能统计字符列计个数,而是在菜单事件里屏蔽了,因为参加计算是会让人迷惑的,比如下图,计数6个,实际参与合计的只有2个,平均也是按2个平均的。没看懂代码的还是不要随便说
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


统计字符列计个数其实只需要把菜单AfterSelRangeChange事件里下面代码注释即可

'For c As Integer = t.LeftCol To t.RightCol 
'    If t.Cols(c).IsNumeric = False Then
'        Return
'    End If
'Next
 下载信息  [文件大小:180.2 KB  下载次数:1]
图片点击可在新窗口打开查看点击浏览该文件:装修预算.zip




 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1882 积分:10391 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2023/10/20 10:24:00 [只看该作者]

    你上传的效果是利用系统菜单实现的,我现在是自定义菜单,在自定义菜单下无法在状态栏显示统计数据,还有我的代码意思是如果有数据列、字符列,只统计单元格内有效内容个数,其他统计来没意义,也就是其他都为0,只计数个数。我昨晚安你指引的思路回到自定义菜单中写代码,发现在窗口选区域,状态栏还是没显示统计。

 下载信息  [文件大小:544.0 KB  下载次数:1]
图片点击可在新窗口打开查看点击浏览该文件:装修预算20231020.foxdb


[此贴子已经被作者于2023/10/20 10:25:10编辑过]

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


加好友 发短信
等级:超级版主 帖子:114157 积分:581442 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/10/20 10:37:00 [只看该作者]

自定义菜单一样可以使用主菜单的事件,默认的功能有什么问题,能用为什么不用?

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


加好友 发短信
等级:超级版主 帖子:114157 积分:581442 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/10/20 10:38:00 [只看该作者]

如果要使用自己的事件处理,就要把主菜单原有系统事件的代码都去掉,否则会有冲突

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1882 积分:10391 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2023/10/20 11:09:00 [只看该作者]

    如果把FoxTable作为使用工具系统菜单方便,但如果把Foxtable作为开发软件,系统菜单上很多功能不适用,我 一直在学习,通过在论坛上不断发贴问我遇到的问题,无非想掌握编程、开发的方法、技巧,我已经很久没在论坛发贴问了,一直都在自己默默努力,尽可能自己想办法,多看帮助,自已解决,反复看帮助后终于弄懂什么情况下用什么方法解决,代码写在哪合适,我知道这些都是基本要求,但这些我只作兴趣学习,没大学生们专业学习的精深、应手,我已退休几年,记忆力减退,很多东西记不住了,正如你说同一问题有时会反复问。星期一象棋协会有象棋比赛,我代表我们市参赛,等星期二再细细想这问题怎解决,这是菜单上的代码注识了,在全局表事件上写代码,状态栏依然没自动统计的情况。
 下载信息  [文件大小:544.0 KB  下载次数:0]
图片点击可在新窗口打开查看点击浏览该文件:预算.foxdb


[此贴子已经被作者于2023/10/20 11:20:43编辑过]

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


加好友 发短信
等级:超级版主 帖子:114157 积分:581442 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/10/20 11:13:00 [只看该作者]

1、把主菜单原有系统事件的代码都去掉
2、全局表事件使用2楼的代码
3、测试的时候切换到自定义菜单模式

 回到顶部
总数 19 1 2 下一页