以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助状态栏  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=158014)

--  作者:piratesytu
--  发布时间:2020/11/5 9:48:00
--  求助状态栏

图片点击可在新窗口打开查看此主题相关图片如下:2121212121212.png
图片点击可在新窗口打开查看
某列被选中后,自动统计此列中各个单元格内容的数量及占比,比如:学历列,高中、大专、本科数量、及占比,在状态栏显示。请版主指导
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:求助.table



--  作者:有点蓝
--  发布时间:2020/11/5 10:02:00
--  
参考:http://www.foxtable.com/webhelp/topics/0647.htm占比留作业,自行补上

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:求助.zip


--  作者:piratesytu
--  发布时间:2020/11/5 11:47:00
--  
谢谢超版,另有两个问题,如何设置选定特定列才会在状态栏统计显示,比如选定学历、建制列才统计显示,其他列不统计显示,省得大量数据运算出现的类似死机问题。第二状态栏本有显示行数的状态栏,如何选定行的时候不统计列的情况呢?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:求助1.table

[此贴子已经被作者于2020/11/5 11:47:49编辑过]

--  作者:有点蓝
--  发布时间:2020/11/5 11:54:00
--  
1、判断列参考:http://www.foxtable.com/webhelp/topics/0646.htm

2、没有办法判断。选中行肯定也就选中了列,反之亦然。
或者考虑显示到Message1或Message3

--  作者:piratesytu
--  发布时间:2020/11/5 14:33:00
--  
这个方法只是让列无法选中,不利于操作啊,比较有很多时候是要选中这些列的,能不能选中不统计呢
--  作者:有点蓝
--  发布时间:2020/11/5 14:50:00
--  
不用那么死板咯,帮助是让列无法选中,那不就是可以判断是哪一个列了吗?不是让您照抄代码,学会帮助怎么判断是某一列的!
--  作者:piratesytu
--  发布时间:2020/11/5 14:52:00
--  
新手不太会,代码请蓝版帮忙指导一下啊
--  作者:有点蓝
--  发布时间:2020/11/5 14:56:00
--  
\'获得机密列的位置,保存到变量c中
Dim
 c As integer = e.Table.Cols("学历").Index 
\'判断即将选定的区域是否包括机密列

If
 e.NewRange.LeftCol <= c And e.NewRange.RightCol >= c Then 
   说明包含
学历列,把计算代码放到这里
End
 If
--  作者:piratesytu
--  发布时间:2020/11/5 17:25:00
--  
Dim c As Col = e.Table.Cols(e.NewRange.LeftCol)
Dim dict As new Dictionary(of String,Integer)
Dim r As Row
For i As Integer = e.NewRange.TopRow To e.NewRange.BottomRow
    r = e.Table.Rows(i)
    If dict.ContainsKey(r(c.Name)) Then
        dict(r(c.Name)) += 1
    Else
        dict.Add(r(c.Name),1)
    End If
Next
Dim f As Integer = e.Table.Cols("学历").Index 
If e.NewRange.LeftCol <= f And e.NewRange.RightCol >= f Then
Dim s As String = ""
For Each key As String In dict.Keys
    s = s & ";" & key & ":" & dict(key)
StatusBar.Message2 = s
Next
End If


汗啊,这下不选中列状态栏也显示”学历“列的各种类型学历的比例,怎么解决呢

--  作者:有点蓝
--  发布时间:2020/11/5 17:30:00
--  
要单独选中”学历“列才处理?

If e.NewRange.LeftCol = f And e.NewRange.RightCol = f Then