Foxtable(狐表)用户栏目专家坐堂 → 统计表单元格drawcell绘图不执行


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

主题:统计表单元格drawcell绘图不执行

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


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
统计表单元格drawcell绘图不执行  发帖心情 Post By:2022/10/21 10:16:00 [显示全部帖子]

老师我做了一个按钮,生成统计表如下,发布后单击按钮,生成统计表没问题,但没有执行绘图操作,为什么?
Dim dtb As New DataTableBuilder("捷径优化分析")
dtb.AddDef("kmitemid", Gettype(String), 32)
dtb.AddDef("结果", Gettype(String), 32)
dtb.AddDef("过程", GetType(String), 32)
dtb.AddDef("排序", GetType(Integer))
For Each v As String In DataTables("mframe").GetValues("lage")
    dtb.AddDef(v, Gettype(Double))
Next
dtb.AddDef("走势", GetType(String), 32)   ’这个是用来绘图的单元格
dtb.Build()
For Each v As String In DataTables("mframe").GetValues("kmitemid")
    Dim dr1 As DataRow = DataTables("捷径优化分析").AddNew()
    dr1("kmitemid") = v
    For Each dr2 As DataRow In DataTables("mframe").Select("kmitemid = '" & v & "'")
       dr1("结果") = dr2("fruit")
       dr1("过程") = dr2("work")
       dr1("排序") = dr2("orderno")
       dr1(dr2("lage")) = dr2("svalue") 
    Next
Next
Tables("捷径优化分析").Sort = "排序 DESC"
Tables("捷径优化分析").AutoSizeCols()
'Tables("捷径优化分析").SetColVisibleWidth("走势|290") 

MainTable = Tables("捷径优化分析")



全局表事件drawcell代码:
Select Case e.Table.Name 
    Case "捷径优化分析"
      If e.Col.Name = "走势" Then
      For Each v As String In DataTables("mframe").GetValues("lage")
       e.Chart.AddValues(e.Row(v))
      Next
    e.Chart.ChartType = 1 
    e.Chart.SeriesColor = Color.CadetBlue
    e.Chart.ShowHigh = True
    e.Chart.HighMarkerColor = Color.Orange
    e.DrawChart()
End If
End Select

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


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2022/10/21 11:13:00 [显示全部帖子]

老师这个报错为啥?全局表事件:doubleclick
代码:
Select Case e.Table.Name 
    Case "捷径优化分析"
If e.Col.Name = "走势" Then
    e.Cancel = True
    Dim cns() As String = DataTables("mframe").GetValues("lage")
    Dim idx As Integer = e.Table.MouseChartIndex '获取鼠标位置的图柱序号
    If idx >= 0 Then
        Dim cn As String = cns(idx)
        e.Table.Select(e.Table.RowSel, e.Table.Cols(cn).Index)
    End If
End If
End Select

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20221021110802.png
图片点击可在新窗口打开查看

我想隐藏其中一例,为啥生成的表只有“走势”列显示,其他都隐藏了。
Dim dtb As New DataTableBuilder("捷径优化分析")
dtb.AddDef("kmitemid", GetType(String), 32)
dtb.AddDef("结果", GetType(String), 32)
dtb.AddDef("过程", GetType(String), 32)
dtb.AddDef("排序", GetType(Integer))
For Each v As String In DataTables("mframe").GetValues("lage")
    dtb.AddDef(v, Gettype(Double))
Next
dtb.AddDef("走势", GetType(String), 32)
dtb.Build()
For Each v As String In DataTables("mframe").GetValues("kmitemid")
    Dim dr1 As DataRow = DataTables("捷径优化分析").AddNew()
    dr1("kmitemid") = v
    For Each dr2 As DataRow In DataTables("mframe").Select("kmitemid = '" & v & "'")
       dr1("结果") = dr2("fruit")
       dr1("过程") = dr2("work")
       dr1("排序") = dr2("orderno")
       dr1(dr2("lage")) = dr2("svalue") 
    Next
Next
Tables("捷径优化分析").Sort = "排序"
Tables("捷径优化分析").AutoSizeCols()
Tables("捷径优化分析").DefaultRowHeight = 36
Tables("捷径优化分析").SetColVisibleWidth("走势|290")
Tables("捷径优化分析").Cols("kmitemid").Visible = False          想隐藏kmitemid这个列
DataTables("捷径优化分析").DataCols("走势").AllowEdit = False
MainTable = Tables("捷径优化分析")
DataTables("捷径优化分析").GlobalHandler.DrawCell = True
DataTables("捷径优化分析").GlobalHandler.DoubleClick = True


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


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2022/10/21 14:54:00 [显示全部帖子]

老师咱们软件能不能实现这个,就是有两列数据,一列做为x轴,一列做y轴。共10行。每行数据做个点。总共在图上是10个点

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


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2022/10/21 15:05:00 [显示全部帖子]

不要中间连线,仅显示点?能不能在单元格绘制

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


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2022/10/22 9:37:00 [显示全部帖子]

Dim Chart As WinForm.Chart '定义一个图表变量
Dim
Series As WinForm.ChartSeries '定义一个图系变量
Chart= Forms(
"窗口1").Controls("Chart1") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bubble
Chart.SeriesList.Clear()
'清除图表原来的图系
Series = Chart.SeriesList.Add()
'增加一个图系
Series.Length =
10 '图系包括10个数据点
Series.MarkShape= MarkShapeEnum.Dot
'指定数据标记为圆点。
Series.MarkColor = Color.Red
'指定数据标记的颜色
Series.LinePattern = LinePatternEnum.None
'不显示数据点之间的联线
For
i As integer = 0 to 9 '指定每个数据点的位置
    Series.X(i) = i
'指定水平坐标
    Series.Y(i) = i + Rand.
Next(5) '垂直坐标用随机数生成
    Series.Y1(i) = Rand.
Next(5) '老师这个我想修改成:跟进做个坐标点相同的个数来绘制泡泡的大小。如这个(x,y)相同的坐标有三个,泡泡大小就是3,;有一个,泡泡大小就是1

                   这个逻辑如何实现


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


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2022/10/22 10:52:00 [显示全部帖子]

老这个泡泡图支持双击某个泡泡弹出一个窗口,就是定位泡泡生成的数据行吗?

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


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2022/10/22 12:23:00 [显示全部帖子]

Series2.TooltipText = "X = {#XVAL}, Y = {#YVAL}"                        显示的数据跟进数据点编号定位r("pname") & r("qdate")的具体值,然后显示出来。
Dim i2 As Integer = 0
For Each dr As DataRow In DataTables("mcheck").SQLSelect("fruit = '" & ft & "' And work is null")
Dim r As DataRow = DataTables("mcheck").SQLFind("work = '" & wk & "' And pers And qdate = '" & dr("qdate") & "'")
    If r IsNot Nothing Then
    i2 = i2 + 1
    Series2.X(i2) = dr("averagevalue") '指定水平坐标
    Series2.Y(i2) = r("averagevalue") '垂直坐标用随机数生成
    Series2.Y1(i2) = 0.1 '泡的大小用随机数生成 
                           在这个地方添加代码储存r("pname") & r("qdate")的集合,同时储存生成的图的数据点编号
    End If 
Next
Chart2.AxisX.Text = ft
Chart2.AxisY.Text = wk
End If


Dim wid As New List(Of String) 
Dim bh As New List(Of String)
wid.Add(r("pname") & r("qdate"))
bh.Add({#IPOINT})
Dim hi As Integer = Indexof()                        老师我想在TooltipText对应的图号中显示出来这个值:    r("pname") & r("qdate");    我的想法是把图号和这个值

老师咱们修改上面代码啊?我改了一上午没实现,求助

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


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2022/10/22 14:13:00 [显示全部帖子]

老师下面蓝色的是我想实现的逻辑,就是把显示的值和数据编号都存成集合。然后再查找对应编号的值;但是报错。

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20221022141248.png
图片点击可在新窗口打开查看


Series2.LinePattern = LinePatternEnum.None '不显示数据点之间的联线
Dim wid As New List(Of String) 
Dim bh As New List(Of String)
Dim i2 As Integer = 0
For Each dr As DataRow In DataTables("mcheck").SQLSelect("fruit = '" & ft & "' And work is null")
Dim r As DataRow = DataTables("mcheck").SQLFind("work = '" & wk & "' And pers And qdate = '" & dr("qdate") & "'")
    If r IsNot Nothing Then
    i2 = i2 + 1
    Series2.X(i2) = dr("averagevalue") '指定水平坐标
    Series2.Y(i2) = r("averagevalue") '垂直坐标用随机数生成
    Series2.Y1(i2) = 0.1 '泡的大小用随机数生成 
    wid.Add(r("pname") & r("qdate"))
    bh.Add({#IPOINT})
    End If 
Next
Chart2.AxisX.Text = ft
Chart2.AxisY.Text = wk
Dim hi As Integer = Indexof({#IPOINT})
Series2.TooltipText = "X = {#XVAL}, Y = {#YVAL},wid(hi)"
End If

 回到顶部