Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共11 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:[求助]图表X轴字符获取

1楼
azlm100 发表于:2025/1/3 14:22:00
图片点击可在新窗口打开查看

各位大神,想请教一下。怎么获取鼠标点击上方图表的柱状的X轴的字符。{技术部,品质管理部,业务部,制造部}这4个字符。

If c1.CoordToDataIndex(e.x, e.y ,s ,p) Then '如果鼠标位置存在有效的图序和数据点
    Dim Seriess As WinForm.ChartSeries = c1.SeriesList(s) '获得鼠标位置的图序
    msg  = p
End If

这个只能获取点位,1,2,3,4这种。




[此贴子已经被作者于2025/1/3 14:22:55编辑过]
2楼
有点蓝 发表于:2025/1/3 14:42:00
按顺序取字符不就行了,1=技术部,2=品质管理部
3楼
azlm100 发表于:2025/1/3 14:56:00
这个部的少,我就是用的这种方式,但是制造部下面有差不多20个柱状。。。怎么弄。
4楼
有点蓝 发表于:2025/1/3 15:32:00
生成图表的代码发上来
5楼
azlm100 发表于:2025/1/4 8:05:00
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
If c1.CoordToDataIndex(e.x, e.y ,s ,p) Then '如果鼠标位置存在有效的图序和数据点
    Dim Seriess As WinForm.ChartSeries = c1.SeriesList(s) '获得鼠标位置的图序
    msg  = p
End If
Dim cus As String
Dim cs As String
Select Case msg
    Case 0
        cus = "技术部"
    Case 1
        cus = "品质管理部"
    Case 2
        cus = "业务部"
    Case 3
        cus = "制造部"
End Select
e.Form.Controls("Label6").text = cus        '获取鼠标点的部门

    Dim lst4 As List(Of String) = dtt.GetValues("deptname2", "topdeptnamexx = '" & cus & "' and deptname2 Is not null ") '获得课名称集合
    Chart = e.Form.Controls("Chart4")  ' 引用窗口中的图表
    Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
    Chart.ChartType = ChartTypeEnum.Bar '设置图表类型
    Chart.SeriesList.Clear() '清除图表原来的图系
    chart.AxisX.ClearValueLabel
    chart.AxisY.ClearValueLabel
    Series = Chart.SeriesList.Add() '增加一个图系
    Dim d As Integer = 0
    Series.Length = lst4.Count '图系的数据点数等于表的行数
    Series.Text = "计划加班总数"
    For k As Integer = 0 To lst4.Count - 1 '指定每个数据点的位置
        Dim Averageovertime As Integer = 0
        Dim dhi As Integer = 0
        Series.X(k) = k '指定水平坐标
        Dim drs As List(of DataRow)
        drs = dtt.Select("[deptname2] = '" & lst4(k) & "'and [bd] = '" & dt3 & "'")
        If drs.Count > 0 Then
            For Each  dttr As  DataRow In drs
                Averageovertime  = dttr("otsum") * dttr("people") +  Averageovertime   '统计出公司总计划加班总数
            Next
            If Averageovertime > 0 Then
                Series.Y(k) = CInt(Format(Averageovertime, "0"))
                If Averageovertime > d Then
                    d = Averageovertime
                End If
            Else
                Series.Y(k) = 0
            End If
        Else
            Series.Y(k) = 0
        End If
        Chart.AxisX.SetValueLabel(k, lst4(k)) '指定字符表示
    Next
    Series.TooltipText = "{#YVAL}"
    Series.DataLabelText = "{#YVAL}"
    series.DataLabelForeColor = Color.blue
    Series.DataLabelCompass =LabelCompassEnum.North



这里只有4个部,还能用这种转换方式来获取点击部门字符来统计人数信息。
后面到了课就有20几个了。。。
6楼
有点蓝 发表于:2025/1/4 9:51:00
5楼是点击1楼的图后生成的子图吧。我要的是1楼的图表生成的代码!
7楼
有点蓝 发表于:2025/1/4 10:22:00
如果技术部这些内容也是使用GetValues获取的,那么一样从GetValues里按索引取内容即可
8楼
azlm100 发表于:2025/1/4 10:59:00
这边都是使用GetValues来获取字符的,我现在是需要鼠标点击最下面第三个图表时继续出第四个图表,第三个图X轴太多点,而且点击第二个图时第三个图都会不同。所以无法继续使用定位来转换X轴的字符。如果可以通过鼠标几点柱状来直接获取到该柱状的X轴字符是最简单了。不过查了好久帮助好像没有类似的代码。

9楼
azlm100 发表于:2025/1/4 11:00:00
图片点击可在新窗口打开查看
10楼
有点蓝 发表于:2025/1/4 11:10:00
都是使用GetValues来获取字符】那全部一样从GetValues里按索引取值就行了
共11 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .04199 s, 2 queries.