以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 饼图图系编号和数据点编号问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184519) |
-- 作者:onlinech -- 发布时间:2022/12/12 9:14:00 -- 饼图图系编号和数据点编号问题 1、如何实现鼠标移动某个图例时,动态实时显示此图例的内容,我现在使用的messagebox.show,每次移动都要“确认”一下,太麻烦了 2、不要显示是第几个图系,而是显示这个图系的名称,例:9号场地,1785620 3、图和图例所在位置的颜色可以修改 4、右侧图例可以多显示几行,不要分成2列 代码: Dim Chart As WinForm.Chart \'定义一个图表变量 Dim Series As WinForm.ChartSeries \'定义一个图系变量 Dim t As Table = Tables("统计表4") \'定义一个变量t引用数据表-------------- Dim sm As Integer = t.Compute("Sum(净重)") \'计算总数量 Chart = Forms("窗口2").Controls("Chart1") \' 引用窗口中的图表-------------- Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮 Chart.ChartType = ChartTypeEnum.Pie \'图表1类型改为Bar(条形) For Each r As Row In t.Rows Series = Chart.SeriesList.Add() \'增加一个图系 Series.Length = 1 \'一个系列只能包括一个值 \' Series.Text = r("发货单位") & "(" & r("净重") & ")" \'设置图系的标题 Series.Text = r("发货单位") \'设置图系的标题 Series.Y(0) = r("净重") \'指定值 Series.DataLabelText = Math.Round(r("净重") * 100 / sm, 2) & "%" \'计算百分比 Next Chart.LegendVisible = True \'显示图列 Chart.LegendCompass = CompassEnum.East \'图列显示在东方(右方) 事件MouseMove: Dim s As Integer \'定义存储图系编号的变量 Dim p As Integer \'定义存储数据点编号的变量 Dim Chart As WinForm.Chart = Forms("窗口2").Controls("Chart1") \'获得Chart对象的引用------------ If Chart.CoordToDataIndex(e.x, e.y , s , p) Then \'如果鼠标位置存在有效的图序和数据点 Dim Series As WinForm.ChartSeries = Chart.SeriesList(s) \'获得鼠标位置的图序 Dim msg As String msg = "单击的是第" & (s + 1) & "个图系,该点的值为 " & Series.Y(p) Messagebox.Show(msg, "提示") End If
|
-- 作者:有点蓝 -- 发布时间:2022/12/12 9:19:00 -- 1、把messagebox的代码改为自己需要显示的其它功能 2、根据第几个到表格里取对应的行即可,比如第4个图系,就是第4行的数据 4、无法控制
|
-- 作者:onlinech -- 发布时间:2022/12/20 10:34:00 -- 可能没表述清楚,我是想鼠标移动到某个图例时就显示这个图例的相关信息,而不是用鼠标点击的方式 |
-- 作者:有点蓝 -- 发布时间:2022/12/20 10:51:00 -- 一样的用法,代码放到鼠标移动事件即可 |
-- 作者:onlinech -- 发布时间:2022/12/20 11:32:00 -- 放在MouseMove事件中,还是要点击“确认”按钮后,才能再显示其它图例的信息 我是想鼠标移动到哪个图例就显示哪个图例的(动态),如果超过这个饼形图表,就不显示,不再手动去点击“确认”按钮
|
-- 作者:有点蓝 -- 发布时间:2022/12/20 11:36:00 -- 这种直接使用TooltipText就行了:http://www.foxtable.com/webhelp/topics/0982.htm |
-- 作者:onlinech -- 发布时间:2022/12/21 12:28:00 -- 在没有图例的情况下,鼠标移动到图表的范围会报错,如何不显示报错信息,或是显示一段自定义文字呢? MouseMove代码:
Dim s As Integer \'定义存储图系编号的变量 Dim p As Integer \'定义存储数据点编号的变量 Dim Chart As WinForm.Chart = Forms("当日实时").Controls("Chart2") \'获得Chart对象的引用------------ If Chart.CoordToDataIndex(e.x, e.y , s , p) Then \'如果鼠标位置存在有效的图序和数据点 Dim Series As WinForm.ChartSeries = Chart.SeriesList(s) \'获得鼠标位置的图序 Series.TooltipText = "发货单位:" & DataTables("发货单位统计").DataRows(s)("发货单位") & vbcrlf & "重量:" & Series.Y(p) / 1000 & "吨" Else Series.TooltipText = "今日无数据" End If
[此贴子已经被作者于2022/12/21 13:03:51编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/12/21 13:33:00 -- If Chart.CoordToDataIndex(e.x, e.y , s , p) andalso Tables("发货单位统计").Rows.count > 0 |
-- 作者:onlinech -- 发布时间:2022/12/21 17:59:00 -- 代码修改如下: Dim s As Integer Dim p As Integer Dim Chart As WinForm.Chart = Forms("当日实时").Controls("Chart2") MessageBox.Show("1") If Chart.CoordToDataIndex(e.x, e.y , s , p) AndAlso DataTables("发货单位统计").dataRows.count > 0 Then \'如果鼠标位置存在有效的图序和数据点,且表不为空 MessageBox.Show("2") Dim Series As WinForm.ChartSeries = Chart.SeriesList(s) Series.TooltipText = "发货单位:" & DataTables("发货单位统计").DataRows(s)("发货单位") & vbcrlf & "重量:" & Series.Y(p) / 1000 & "吨" Else MessageBox.Show("3") End If 还是报一样的错,只能看断点1,断点2和3都没执行
|
-- 作者:onlinech -- 发布时间:2022/12/22 8:21:00 -- 已解决 If Tables("发货单位统计").Rows.count > 0 AndAlso Chart.CoordToDataIndex(e.x, e.y , s , p) Then 谢谢
|