Foxtable(狐表)用户栏目专家坐堂 → foxtable同时生成多张图改如何做


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

主题:foxtable同时生成多张图改如何做

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


加好友 发短信
等级:狐精 帖子:3358 积分:24758 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2015/4/9 19:07:00 [只看该作者]

还有 如果你用的是外部数据源 cmd记得指定数据源名

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


加好友 发短信
等级:五尾狐 帖子:1016 积分:6596 威望:0 精华:0 注册:2015/2/25 23:14:00
  发帖心情 Post By:2015/4/9 19:09:00 [只看该作者]

再请问您一个问题,为什么程序运行后产生5个tab,第一个没有名字?谢谢。

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


加好友 发短信
等级:狐精 帖子:3358 积分:24758 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2015/4/9 19:34:00 [只看该作者]

原因找到了 你这个表里有空值  所以要加判断

str默认值是空值 为了稳妥起见 最好把na值的有效性先判断下  我只做了个简单判断 你可以把na值在表中查一遍 确认有效再进行下一步

For Each na As String In DataTables("statis").GetValues("第一列")
    If na<>"" Then
        str=na
        tab1.TabPages.Add(str,str)
        pan = e.Form.CreateControl("pan" & na,ControlTypeEnum.panel)
        pan.Dock = System.Windows.Forms.DockStyle.fill
        pan.AutoScroll=True
        pan.BackColor=color.DodgerBlue
                e.Form.Controls("tab1").basecontrol.tabpages(str).addcontrol(pan)

.....

.....

end if

next

[此贴子已经被作者于2015/4/9 19:36:18编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1016 积分:6596 威望:0 精华:0 注册:2015/2/25 23:14:00
  发帖心情 Post By:2015/4/9 19:41:00 [只看该作者]

谢谢老师,真高。

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


加好友 发短信
等级:五尾狐 帖子:1016 积分:6596 威望:0 精华:0 注册:2015/2/25 23:14:00
  发帖心情 Post By:2015/4/9 19:48:00 [只看该作者]

请问您是怎么调试找到此原因的?我觉得foxtable调试不方便,好像只能用output.show().还有其他更好的方式吗?
另外foxtable的对象的层级关系,我搞不清楚,帮助文件里好像也不十分详细,怎样找到这些详细的信息?请老师指点!
多谢,多谢。

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


加好友 发短信
等级:狐精 帖子:3358 积分:24758 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2015/4/10 9:35:00 [只看该作者]

只能用笨的方法 先凭经验判断是哪句的问题 然后在注释掉 在这句前把涉及的变量都messagebox.show()出来

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


加好友 发短信
等级:五尾狐 帖子:1016 积分:6596 威望:0 精华:0 注册:2015/2/25 23:14:00
  发帖心情 Post By:2015/4/10 20:15:00 [只看该作者]

谢谢老师

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


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2015/4/10 21:07:00 [只看该作者]

其实楼主根本没研究20楼的代码,只是抄写罢了

改为这样合理点:

Dim tab1 As WinForm.TabControl
Dim str As String
Dim pan As WinForm.Panel
Dim fnt As new Font("微软雅黑",10,FontStyle.Regular)
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim drs As List(of DataRow)

tab1 = e.Form.CreateControl("tab1", ControlTypeEnum.TabControl)
tab1.Dock = System.Windows.Forms.DockStyle.fill
tab1.Multiline=True
tab1.Font=fnt

e.Form.Controls("Panel1").addcontrol(tab1)
e.Form.Controls("tab1").basecontrol.ItemSize=new Size(60,25)

For Each str  In  DataTables("汽车销售").GetValues("品牌","品牌 Is Not Null")
    tab1.TabPages.Add(str,str)
    pan = e.Form.CreateControl("pan" & str, ControlTypeEnum.panel)
    pan.Dock = System.Windows.Forms.DockStyle.fill
    pan.AutoScroll=True
    pan.BackColor = color.Silver
    e.Form.Controls("tab1").basecontrol.tabpages(str).addcontrol(pan)
    chart=e.Form.CreateControl("chart" & str, ControlTypeEnum.Chart)
    e.Form.Controls("pan" & str).AddControl(Chart)
    
    Chart= e.Form.Controls("Chart" & str) ' 引用窗口中的图表
    Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
    Chart.ChartType = ChartTypeEnum.Pie '图表1类型改为Bar(条形)
    drs =DataTables("汽车销售").Select("品牌 = '" & str & "'")
    
    For Each dr As DataRow In drs
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Length = 1 '一个系列只能包括一个值
        Series.Text = dr("月份") & "(" & dr("车型") & ")" '设置图系的标题
        Series.Y(0) = dr("销量") '指定值
        Series.DataLabelText = str & dr("车型") & " " & dr("月份") & "月销量为:" & dr("销量")
    Next
    Chart.LegendVisible = True '显示图列
    Chart.LegendCompass= CompassEnum.East
    Chart.Dock = System.Windows.Forms.DockStyle.fill
Next
e.Form.baseform.WindowState=2

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


加好友 发短信
等级:五尾狐 帖子:1016 积分:6596 威望:0 精华:0 注册:2015/2/25 23:14:00
  发帖心情 Post By:2015/4/10 22:22:00 [只看该作者]


尊敬的老师好。按照您的指点,我可以实现了自动绘制4个array的4个chart,但是给每个chart绘图遇到问题。附件是数据,我希望第二列作为每个chart的横坐标,第三,四,五,六列为纵坐标,可以用图示多列的方法,参考了帮助,但总出错,红色部分代码有问题,请问如何改写代码。谢谢!


Dim t As Table = Tables("statis") 


For Each c As DataCol In dt.DataCols


    If c.Name <> "第二列" Then

       Series = Chart.SeriesList.Add() '增加一个图系

       Series.Text = c.Name '设置图系的标题

       Series.Length = t.Rows.Count '设置图系的长度

      

For r As Integer =0 To t.Rows.Count-1 '指定每个数据点的位置


                     Series.X(r) =val(t.Cols(ri))

                     Series.Y(r) = val(t.Rows(r)(c.Name))

     

    Next

     End If

    Next

    Chart.LegendVisible = True '显示图列

    Chart.LegendCompass= CompassEnum.East

    Chart.Dock = System.Windows.Forms.DockStyle.fill

Next



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


加好友 发短信
等级:五尾狐 帖子:1016 积分:6596 威望:0 精华:0 注册:2015/2/25 23:14:00
  发帖心情 Post By:2015/4/10 22:38:00 [只看该作者]

非常感谢版主ybil的指点。

 回到顶部
总数 67 上一页 1 2 3 4 5 6 7 下一页