以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  报不到名称为chart1的控件  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=108591)

--  作者:xxcwdlwgo
--  发布时间:2017/10/25 16:48:00
--  报不到名称为chart1的控件
.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2017.10.16.1
错误所在事件:窗口,车站问题图表,RadioButton1,Click
详细错误信息:
Object reference not set to an instance of an object.

报以上错误,但不是每次都报这样的错误


--  作者:有点甜
--  发布时间:2017/10/25 16:49:00
--  
 贴出你写的代码,特别是 chart1 那段。
--  作者:xxcwdlwgo
--  发布时间:2017/10/25 16:57:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20171025170815.jpg
图片点击可在新窗口打开查看

点击关闭时,时有发生找不到名称chart1

Dim ch1 As WinForm.Chart 
ch1 = e.Form.Controls("Chart1")
Dim ch2 As WinForm.Chart 
ch2 = e.Form.Controls("Chart2")
ch1.Visible = True
ch2.Visible = False


Dim ch1 As WinForm.Chart = e.Form.Controls("Chart1")
Dim ch2 As WinForm.Chart = e.Form.Controls("Chart2")
ch1.Visible = False
ch2.Visible = True


Dim rb1 As WinForm.RadioButton = e.Form.Controls("RadioButton1")
Dim rb2 As WinForm.RadioButton = e.Form.Controls("RadioButton2")

Dim fz1 As RibbonMenu.ToggleButton = RibbonTabs("车站问题库").Groups("车站问题统计").Items("站段名称1")
Dim fz2 As RibbonMenu.ToggleButton = RibbonTabs("车站问题库").Groups("车站问题统计").Items("车站类型1")
Dim fz3 As RibbonMenu.ToggleButton = RibbonTabs("车站问题库").Groups("车站问题统计").Items("问题分类1")
Dim fzm As String
fzm = ""
If fz1.Pressed = True
    fzm = fz1.Text
End If
If fz2.Pressed = True
    fzm = fz2.Text
End If
If fz3.Pressed = True
    fzm = fz3.Text
End If



If rb1.Checked = True Then
    Dim Series As WinForm.ChartSeries \'定义一个图系变量
    Dim chart As WinForm.Chart
    Dim t As Table = Tables("分组统计表") \'定义一个变量t引用数据表
    \'Chart= Forms("车站问题图表").Controls("Chart1")\' 引用窗口中的图表
    Chart = e.Form.Controls("Chart1")
    Chart.ChartType = ChartTypeEnum.Bar \'图表类型该为Bar(条形)
    Chart.SeriesList.Clear() \'清除图表原来的图系
    Chart.DataSource ="分组统计表" \'设置绑定表
    Series = Chart.SeriesList.Add() \'增加一个图系
    \' Series.X.DataField ="问题分类" \'X轴绑定到产品列
    Series.X.DataField = fzm \'X轴绑定到产品列
    
    Series.Y.DataField ="数量" \'Y轴绑定到数量列
    Chart.AxisX.AnnoRotation = - 45
    Series.DataLabelText = "{#YVAL}"
    Chart.LegendVisible = False \'显示图列
    
Else
    Dim Chart As WinForm.Chart \'定义一个图表变量
    Dim Series As WinForm.ChartSeries \'定义一个图系变量
    Dim t As Table = Tables("分组统计表") \'定义一个变量t引用数据表
    Dim sm As Integer = t.Compute("Sum(数量)") \'计算总数量
    \'Chart= Forms("车站问题图表").Controls("Chart2") \' 引用窗口中的图表
    Chart = e.Form.Controls("Chart2")
    Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮
    Chart.ChartType = ChartTypeEnum.Pie \'图表1类型改为Bar(条形)
    Chart.SeriesList.Clear() \'清除图表原来的图系
    
    For Each r As Row In t.Rows
        Series = Chart.SeriesList.Add() \'增加一个图系
        Series.Length = 1 \'一个系列只能包括一个值
        \'Series.Text = r("问题分类") & "(" & r("数量") & ")" \'设置图系的标题
        Series.Text = r(fzm) & "(" & r("数量") & ")" \'设置图系的标题
        Series.Y(0) = r("数量") \'指定值
        Series.DataLabelText = Math.Round(r("数量")*100/sm,2) & "%" \'计算百分比
    Next
    Chart.LegendVisible = True \'显示图列
    Chart.LegendCompass= CompassEnum.East \'图列显示在东方(右方)
    
End If

--  作者:有点甜
--  发布时间:2017/10/25 17:02:00
--  

 代码没问题的。你试试卸载重装你的foxtable,同时核对一下你的激活码是否正确。


--  作者:xxcwdlwgo
--  发布时间:2017/10/25 17:29:00
--  
重新安装了20171016版,问题依旧
--  作者:xxcwdlwgo
--  发布时间:2017/10/25 17:48:00
--  
激活码没有问题,安装最新版20171026,可以正常打开使用。
--  作者:有点甜
--  发布时间:2017/10/25 17:51:00
--  
以下是引用xxcwdlwgo在2017/10/25 17:48:00的发言:
激活码没有问题,安装最新版20171026,可以正常打开使用。

 

单独做一个例子是否有问题。

 

把出错的项目或者例子发上来测试一下。


--  作者:xxcwdlwgo
--  发布时间:2017/10/25 18:05:00
--  
将窗口控制框设置为flase,在窗口添加了一个“关闭”按钮,代码设置为:forms("XXX窗口“).close。不再报此错误了。
--  作者:有点甜
--  发布时间:2017/10/25 18:07:00
--  
以下是引用xxcwdlwgo在2017/10/25 18:05:00的发言:
将窗口控制框设置为flase,在窗口添加了一个“关闭”按钮,代码设置为:forms("XXX窗口“).close。不再报此错误了。

 

能否重现错误?新做一个例子,也有问题?


--  作者:xxcwdlwgo
--  发布时间:2017/10/26 8:24:00
--  
重新做了一个窗口,未发现上述问题。
但有一个新问题:
同一个窗口,用了一个chart,添加了两个RadioButton1,RadioButton2,代码如下:
RadioButton1代码:
Dim fz1 As RibbonMenu.ToggleButton = RibbonTabs("车站问题库").Groups("车站问题统计").Items("站段名称1")
Dim fz2 As RibbonMenu.ToggleButton = RibbonTabs("车站问题库").Groups("车站问题统计").Items("车站类型1")
Dim fz3 As RibbonMenu.ToggleButton = RibbonTabs("车站问题库").Groups("车站问题统计").Items("问题分类1")
Dim fzm As String
fzm = ""
If fz1.Pressed = True
    fzm = fz1.Text
End If
If fz2.Pressed = True
    fzm = fz2.Text
End If
If fz3.Pressed = True
    fzm = fz3.Text
End If

Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim chart As WinForm.Chart
Dim t As Table = Tables("分组统计表") \'定义一个变量t引用数据表
\'Chart= Forms("车站问题图表").Controls("Chart1")\' 引用窗口中的图表
Chart = e.Form.Controls("Chart1")
Chart.ChartType = ChartTypeEnum.Bar \'图表类型该为Bar(条形)
Chart.DataSource ="分组统计表" \'设置绑定表
Chart.SeriesList.Clear() \'清除图表原来的图系
Series = Chart.SeriesList.Add() \'增加一个图系
\' Series.X.DataField ="问题分类" \'X轴绑定到产品列
Series.X.DataField = fzm \'X轴绑定到产品列
Series.Y.DataField ="数量" \'Y轴绑定到数量列
Chart.AxisX.AnnoRotation = - 45
Series.DataLabelText = "{#YVAL}"
Chart.LegendVisible = False \'显示图列

RadioButton2代码:
Dim fz1 As RibbonMenu.ToggleButton = RibbonTabs("车站问题库").Groups("车站问题统计").Items("站段名称1")
Dim fz2 As RibbonMenu.ToggleButton = RibbonTabs("车站问题库").Groups("车站问题统计").Items("车站类型1")
Dim fz3 As RibbonMenu.ToggleButton = RibbonTabs("车站问题库").Groups("车站问题统计").Items("问题分类1")
Dim fzm As String
fzm = ""
If fz1.Pressed = True
    fzm = fz1.Text
End If
If fz2.Pressed = True
    fzm = fz2.Text
End If
If fz3.Pressed = True
    fzm = fz3.Text
End If



Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table = Tables("分组统计表") \'定义一个变量t引用数据表
Dim sm As Integer = t.Compute("Sum(数量)") \'计算总数量
\'Chart= Forms("车站问题图表").Controls("Chart2") \' 引用窗口中的图表
Chart = e.Form.Controls("Chart1")
Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie \'图表1类型改为Bar(条形)
Chart.SeriesList.Clear() \'清除图表原来的图系

For Each r As Row In t.Rows
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Length = 1 \'一个系列只能包括一个值
    \'Series.Text = r("问题分类") & "(" & r("数量") & ")" \'设置图系的标题
    Series.Text = r(fzm) & "(" & r("数量") & ")" \'设置图系的标题
    Series.Y(0) = r("数量") \'指定值
    Series.DataLabelText = Math.Round(r("数量")*100/sm,2) & "%" \'计算百分比
Next
Chart.LegendVisible = True \'显示图列
Chart.LegendCompass= CompassEnum.East \'图列显示在东方(右方)

当交替点击RadioButton1,RadioButton2
饼图下方出现一个标题,如图

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20171026082007.jpg
图片点击可在新窗口打开查看
饼图下方的重叠如何去掉。