以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  在复选组合框选择值后生成的图表问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=122900)

--  作者:ZJZK2018
--  发布时间:2018/8/3 20:59:00
--  在复选组合框选择值后生成的图表问题
在复选组合框选择值后生成的图表后,图表的滚动条代码无效了,如何处理?

1、在复选组合框TextChanged事件中写入:

Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim tb1 As Table = Tables("标录分析_Table1") \'定义一个变量t引用数据表
Dim chk As WinForm.CheckedComboBox = e.Form.Controls("CheckedComboBox1")
If chk.Text = "" Then
    MessageBox.Show("请选择球号后执行!")
Else
    Dim lst As new List(Of String)
    lst.AddRange(chk.Text.Split(","))
    Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
    \'Chart.ChartType = ChartTypeEnum.Bar
    Chart.AxisX.ClearValueLabel  \'清除所有通过SetValueLabel设置的数值字符标示
    Chart.SeriesList.Clear() \'清除图表原来的图系
    Dim gd As C1Chart.C1Chart = Chart.BaseControl  \'图表加滚动条
    For Each c As String In lst
        Series = Chart.SeriesList.Add() \'增加一个图系
        Series.Text = c \'设置图系的标题
        Series.Length = tb1.Rows.Count \'设置图系的长度
        Series.DataLabelText = "{#YVAL}%" \'所有线条显示数据标示
        For i As Integer = 0 To tb1.Rows.Count - 1
            Series.X(i) = i
            Series.Y(i) = Round2(tb1.Rows(i)(c)* 100,2)
            Chart.AxisX.SetValueLabel(i,Format(tb1.Rows(i)("开标日期"),"yy-MM-dd") & vblf & Format(tb1.Rows(i)("本期概算"),"0.00"))
        Next
        Series.FitType = FitTypeEnum.Spline  \'采用平滑线条
    Next
    Chart.AxisX.AnnoWithLabels = True \'启用字符标示
    Chart.LegendVisible = True \'显示图列
    Chart.LegendCompass= CompassEnum.South \'图列显示在南方(底端)
    Chart.AxisX.AnnoRotation = - 45 \'X轴标示逆时针旋转45度
    Dim fnt As New Font("黑体",10)
    Chart.AxisX.Font = fnt
    gd.ChartArea.AxisX.ScrollBar.min = 0
    gd.ChartArea.AxisX.ScrollBar.max = tb1.Rows.count
    gd.ChartArea.AxisX.ScrollBar.Scale = 60 / tb1.Rows.count   \'比例,自己算  \'图表加滚动条
    
End If

2、在在复选组合框Enter事件中写入:
e.Sender.ComboList = "中标比例|公司比例"

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




--  作者:有点蓝
--  发布时间:2018/8/3 21:05:00
--  
    gd.ChartArea.AxisX.ScrollBar.min = 0
    gd.ChartArea.AxisX.ScrollBar.max = tb1.Rows.count
    gd.ChartArea.AxisX.ScrollBar.Scale = 60 / tb1.Rows.count   \'比例,自己算  \'图表加滚动条
    gd.ChartArea.AxisX.ScrollBar.visible = True

--  作者:漂亮美眉vszh
--  发布时间:2023/8/9 9:29:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:甘特图2.png
图片点击可在新窗口打开查看

老师,滚动条出来了,谢谢您。
还有个问题,图表中有些进度条太短,字体溢出,没办法体现字信息
这个字体,颜色想改下
\'Chart.SeriesList.DataLabelForeColor = Color.black
\'Chart.Series.DataLabelForeColor = Color.black

--  作者:漂亮美眉vszh
--  发布时间:2023/8/9 9:30:00
--  
这两句话试了下都不行

Dim Chart As WinForm.Chart
Chart= Forms("窗口1").Controls("Chart1")
Chart.ChartType = ChartTypeEnum.Gantt
\'图表类型为甘特图
Chart.Inverted = True
\'对调X轴和Y轴位置
Chart.AxisY.DateType= True
\'Y轴为日期型
Chart.AxisY.AnnoFormatString = "MM-dd"
\'设置Y轴的标示格式
Chart.AxisY.MinDate = #01/01/2010#
\'设置Y轴的起始日期
Chart.AxisY.MaxDate = #04/30/2010#
\'设置Y轴的终止日期
Chart.AxisX.GridMajorVisible = False
\'隐藏X轴的网格线
With
Chart.SeriesList
    .AddGanttSeries("任务一", #1/1/2010#, #3/9/2010#)
    .AddGanttSeries("任务二", #1/23/2010#, #2/14/2010#)
    .AddGanttSeries("任务三", #1/21/2010#, #2/24/2010#)
    .AddGanttSeries("任务四", New DateTime() {#1/22/2010#, #2/28/2010#}, New DateTime() {#2/12/2010#, #3/24/2010#})
    .AddGanttSeries("任务五", New DateTime() {#2/13/2010#, #3/8/2010#}, New DateTime() {#3/5/2010#, #3/31/2010#})
    .AddGanttSeries("任务六", #3/15/2010#, #4/20/2010#)
    .AddGanttSeries("任务七", #4/6/2010#, #4/30/2010#)
    .AddGanttLabels("M月d日")

End
with


--  作者:漂亮美眉vszh
--  发布时间:2023/8/9 9:30:00
--  
Chart.SeriesList.DataLabelForeColor = Color.black
Chart.Series.DataLabelForeColor = Color.black