【TeeChart Pro ActiveX教程】(九):TeeChart、WebChart和ASP(上)

本文档详细介绍了如何在WebForms中使用TeeChartProActiveX组件创建和管理图表,包括添加图表到表单、使用图表编辑器设计图表、设置图像格式以及选择临时图表存储方式等内容。

下载TeeChart Pro ActiveX最新版本

WebForms

TeeChart通过WebChart TeeChart Control 集成用于WebForms 。可以在标准TeeChart.NET安装中的ToolBox中找到WebChart。

teechart

1. 将图表添加到表单

  • 从ToolBox中选择WebChart组件并将其拖到WebForm上并拖出到大小 
  • 右键单击图表以选择“Edit...”选项并打开图表编辑器 
  • 使用图表编辑器,您可以添加和修改图表的系列和轴以及其他特征

2. 使用图表编辑器和属性选项进行设计

图表编辑器提供了为运行时配置图表的大多数方面的选项。设置保存在WebForm中。有关图表编辑器的一般用法,请参阅教程1和2,使用WebChart的编辑器在所有方面与基于Windows窗体的图表的使用相同。

teechart

3. 图像格式(PictureFormat)

WebChart在WebForm上呈现为图像,默认格式为PNG,但可以通过Properties Windows中的PictureFormat属性进行更改。为了与网页兼容,我们建议使用PNG,JPEG或GIF格式,但Internet Explorer浏览器也支持Bitmap。

使用GIF图像格式 GIF使用256色减少,因此对于全色再现,我们建议您使用其他图像格式之一。 *注意请注意,您对GIF图像格式的使用可能需要授权。

teechart

3. TempChart属性-File,Session,Cache或Httphandler

TempChart属性可用于选择在创建之后和浏览器页面上显示之前应如何存储临时图表。有4种可用设置:

  • File 
  • Session 
  • Cache 
  • Httphandler 

Performance类似于所有缓存技术,但磁盘性能可能会影响正面或负面使用'File'选项来生成TempChart,使'File'可以是最快的选项。

3.1 File

如果要将临时文件写入磁盘,则应使用“文件”设置。默认情况下,安装TeeChart时,它会创建具有临时文件位置和等效虚拟文件夹名称的注册表项。关键如下:

[HKEY_LOCAL_MACHINE\SOFTWARE\Steema Software\TeeChart.NET] 
"VirtualShare"="/TeeChartForNET" 
"ShareFolder"="C:\\Program Files\\Steema Software\\TeeChart for .NET v3\\TeeChartForNET"

如果接受默认安装位置,则上述设置将在标准英语语言机器中创建。TeeChartNET虚拟文件夹由TeeChart安装程序创建。如果您创建必要的IIS虚拟共享位置以反映新的注册表值,则可以更改这些注册表设置。 WebChart将文件保存到ShareFolder注册表项中指定的文件夹下名为_Chart_tmp的文件夹中。 TeeChart不会删除临时文件,但您可以自动包含一个实用程序作为Windows计划任务,请使用当前版本检查TeeChart包含。

3.2 Session

Session是临时文件存储的设置,它不会在磁盘上留下任何文件并删除其自己的缓存内存文件(另请参阅Cache和Httphandler选项)。在某些情况下,您可能会发现它比临时磁盘文件稍慢。要使用Session变量成功运行Chart,必须满足两个条件:

必须为应用程序启用会话。'Enabled'是默认行为,可以在项目web.config文件中检查:

<sessionState  
            mode="InProc"

InProc是默认设置,表示为此应用程序启用了Session。

您应该包含一个aspx脚本模块以从内存中检索图表。aspx脚本的名称应该称为'GetChart'。TeeChart提供的WebForm ASP.NET示例中包含一个示例。要从头开始创建一个新的GetChart模块,请将新的WebForm添加到项目中(也可以是任何aspx文件),将其命名为“GetChart”,并将以下代码添加到Page_Load事件中:

GetChart.aspx.cs

 private void Page_Load(object sender, System.EventArgs e) 
        { 
            string chartName=Request.QueryString["Chart"]; 
 
            if (Session[chartName]!=null) 
            { 
                System.IO.MemoryStream chartStream = new System.IO.MemoryStream(); 
                chartStream=((System.IO.MemoryStream)Session[chartName]); 
                Response.ContentType = "image/" + "png"; 
                Response.OutputStream.Write(chartStream.ToArray(),0,(int)chartStream.Length); 
                chartStream.Close(); 
                Session.Remove(chartName); 
            } 
        } 

该脚本恢复了WebChart先前保存到会话缓存的图表。该脚本将图表返回给浏览器并将其从缓存中删除。

3.3 Cache

缓存选项在设置中与会话图缓存选项非常相似。'Cache'是一个实用的选项,因为它使用属于ASP.NET WebForm页面的Cache对象,因此很容易出现在大多数ASP.NET应用程序配置中,而'Session'容易受到某些Web服务器的管理限制(即,出于安全原因,管理员已选择禁用会话支持)。

缓存选项需要使用GetChart.aspx文件。

您应该包含一个aspx脚本模块以从内存中检索图表。aspx脚本的名称应该称为'GetChart'。TeeChart提供的WebForm ASP.NET示例中包含一个示例。要从头开始创建一个新的GetChart模块,请将新的WebForm添加到项目中(也可以是任何aspx文件),将其命名为“GetChart”,并将以下代码添加到Page_Load事件中:

GetChart.aspx.cs

private void Page_Load(object sender, System.EventArgs e) 
        { 
            string chartName=Request.QueryString["Chart"]; 
 
            if (Page.Cache[chartName]!=null) 
            { 
                MemoryStream chartStream = new MemoryStream(); 
                chartStream=((MemoryStream)Page.Cache[chartName]); 
                Response.ContentType = "image/" + "png"; 
                Response.OutputStream.Write(chartStream.ToArray(),0,(int)chartStream.Length); 
                chartStream.Close(); 
            } 
        }

3.4 Httphandler

Httphandler选项使用内部TeeChart(WebChart)生成器来恢复页面的图表图像。该选项不生成临时文件,并且不需要额外的aspx文件来恢复图表(如会话和缓存选项的情况)。该选项需要对web.config文件进行一次修改:

VSNet 2010之前的早期版本VSNET。在web.config < system.web > < /system.web> tages之间的任何位置放置以下部分:

<system.web> 
  <httpHandlers> 
       <add verb="*" path="TeeChartImgGen.ashx" type="Steema.TeeChart.Web.TeeChartImgGen, TeeChart"/> 

  </httpHandlers> 
 

/*..content cut for brevity ..*/ 
</system.web>

VSNET的后续版本,VSNET2010 +:

<system.webServer>
    <handlers>
      <add name="TeeChartHandler" verb="*" path="TeeChartImgGen.ashx" type="Steema.TeeChart.Web.TeeChartImgGen, TeeChart"/>
    </handlers>
   /*..content cut for brevity ..*/

</system.webServer>

**注意。使用TeeChart.Standard.dll时,请在teechart.standard的末尾替换“TeeChart”。

<add name="TeeChartHandler" verb="*" path="TeeChartImgGen.ashx" type="Steema.TeeChart.Web.TeeChartImgGen, TeeChart.Standard"/>

4 使用交互式图表事件(图表中没有WebChart工具时,AutoPostback属性为True)

响应用户鼠标点击图表的加载事件和运行时交互式事件可以与TeeChart的WebChart一起使用。不需要采取特殊操作来使用诸如'AfterDraw'之类的绘制事件,可以从Property浏览器事件列表中选择Chart事件。如果图表中没有TeeChart WebChart Tool(如Zoom,Scroll或Hotspot),则应将AutoPostback属性设置为True以启用交互式(用户点击)事件。如果存在上述工具,则会自动激活点击响应。对于交互式事件,图表将响应用户鼠标点击事件,将点击发生的位置信息发回服务器,然后服务器端代码可以对事件进行操作。然后,可以从属性浏览器事件列表中选择要使用的事件进行编码。 有关WebChart事件的更多信息,请参阅“事件示例”部分。

4.1 事件示例

如果您希望在WebChart中使用Click事件,例如ClickSeries,请务必将Chart AutoPostback设置为true。 可以通过在属性浏览器事件列表中

teechart

双击所需事件来设置事件:双击列表中的条目可创建代码内事件声明,例:

private int xVal; 
        private int yVal; 
 
        private void WebChart1_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g) 
        { 
            g.TextOut(xVal,yVal,"onAfterDraw"); 
        }

上述事件将在由xVal和yVal变量值决定的位置处将文本输出到Chart。 可以根据点击位置设置x和y值

 private void WebChart1_ClickSeries(object sender, Steema.TeeChart.Series s, int valueIndex, System.EventArgs e) 
        { 
            xVal=s.CalcXPos(valueIndex); 
            yVal=s.CalcYPos(valueIndex);     
        }

GrapeCity年末福利大放送

=========================================== TeeChart Pro Activex Control v2018 MS .NET COMPATIBILITY Copyright (c) 1997-2018 by Steema Software SL All Rights Reserved. http://www.steema.com email: info@steema.com supportx@steema.com =========================================== Document updated: June 2004 TeeChart Pro Activex Control MS Visual Studio .NET compatibility notes =========================================== Please see the release.txt release notes for bugfix and feature information about this release. =========================================== Changes for NET compatibility - The Chart.Series(xx) read-only property has been replaced by a Function method (affects only code written in VC++ and similar languages that make direct reference to Get_ and Set_ of properties). The new Series method (called Series) changes visibly by removal of the property 'Get_' element of the Function. The change is required due to a current MS.NET import restriction causing non-import of ActiveX properties that have an index parameter (only affects the root level of controls !). For a VB application no code change is necessary. Please see the following notes for other environments. The original property has been hidden in the interface and renamed to aSeries keeping its existing Dispid to support backward compatibility with applications compiled with previous releases of TeeChart 5. - The TChart OnSeriesBeforeAdd method uses a boolean variable called 'Continue'. "continue" is a keyword in C# (the language used to interim compile TeeChart namespace information in .NET). This had caused an import problem with the earlier releases of Visual Studio .NET. As a precaution we have chosen to rename the parameter to 'MoreValues' for the TeeChart Pro ActiveX Control. Notes on use: ------------- - Constant names in NET require full reference by default: eg. AxTChart1.AddSeries(TeeChart.ESeriesClass.scLine) Upgrading existing projects: ---------------------------- Upgrading existing Visual Studio projects works without manual intervention in code for most simple projects. Notable points relating to import: VISUAL BASIC project: ===================== - Designtime saved content of a Chart does not always successfully import to a NET project. We recommend you open the project first in its current environment (eg. Visual Basic v6) and provoke a change in the Chart and resave the project. That will update the saved frx Chart information data to v5.0.3. Then save the Chart content as a tee file by right-clicking the Chart and selecting 'Export'. Some projects 'may' then import the saved Chart correctly without further steps required. If the Chart content doesn't import successfully then right-click on the Chart and import the saved tee file. If the project fails to import, clear the Chart content after saving it to tee (remove and replace the Chart with an empty one) and re-import following the above step to later import the saved tee file. - Calls to interfaces not supported. In Visual Studio v6 and prior versions, it was possible to connect components by interface. eg. TeeCommander.Chart=TChart1 This is no longer possible. You should use the integer link: eg. TeeCommander.ChartLink=TChart1.ChartLink - Colour definition requires update TeeChart colours map as UInt32 when imported to NET. The colour definition when applied takes the following form: .Labels.Font.Color = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Cyan)) - Some event syntax is incorrect on import. Notably the Mouse events which are 'duplicated' by default NET appointed events. If you find event syntax to be incorrect, modify the syntax as follows: eg. Private Sub TChart1_OnMouseUpEvent(ByVal eventSender As System.Object, _ ByVal eventArgs As AxTeeChart.ITChartEvents_OnMouseUpEvent) _ Handles TChart1.OnMouseUp 'do something End Sub - Some form object (eg. Checkbox) events may fire before the Chart is loaded. That didn't occur in VB6 and will require a workaround in VB.NET if Chart properties are referenced in this way at Form load. eg. taken from VB Drag Points example: 'Check1.CheckStateChanged may fire when form is intialized Private Sub Check1_CheckStateChanged(ByVal eventSender As System.Object, _ ByVal eventArgs As System.EventArgs) _ Handles Check1.CheckStateChan ' switch 2D / 3D view... TChart1.Aspect.View3D = Check1.CheckState ' enable scroll-bar only in 3D... HScroll1.Enabled = Check1.CheckState End Sub In the above event the View3D line will fail as the Chart isn't yet loaded when the event is called. An option to workaround it may be to set a boolean 'OK_To_Run' variable to set after the first Chart Repaint. eg. OK_To_Run false on load and set to true in Form_Load event after Chart is populated, etc. Private Sub Check1_CheckStateChanged(ByVal eventSender As System.Object, _ ByVal eventArgs As System.EventArgs) _ Handles Check1.CheckStateChan ' switch 2D / 3D view... If OK_To_Run = True Then TChart1.Aspect.View3D = Check1.CheckState End if ' enable scroll-bar only in 3D... HScroll1.Enabled = Check1.CheckState End Sub Microsoft recommend a similar step (add a IsInitializing property to the Form). We'll be taking a closer look at these issues to see if we can recommend less demanding steps to resolve them. VISUAL C++ project: ===================== The Series declaration has changed. The easiest way to upgrade the project is to import TeeChart classes before upgrading the project to .NET. 1. All references to 'GetSeries(xx)' should be changed to 'Series(xx)' That will call the new Series method that returns the Series Interface (just as the predecesor property did). The Series property has been name changed to aSeries, retaining its DispId to support existing compiled applications. 2. The following is handled automatically if you import the TeeChart classes. For reference, the following changes occur to the Series declaration. *Note you should not need to do anything if you import TeeChart to your project. a) In the TChart.h Class header file the GetSeries declaration changes to: CSeries Series(long SeriesIndex); b) In the TChart.cpp Class impl. file the GetSeries declaration changes to: CSeries CTChart::Series(long SeriesIndex) { LPDISPATCH pDispatch; static BYTE parms[] = VTS_I4; InvokeHelper(0x14, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch;, parms, SeriesIndex); return CSeries(pDispatch); } Projects should then compile without issue. =========================================== Use of Strong Named Assemblies =========================================== If you compile Strong Named Assemblies then imported ActiveX Controls must also be Strong Named. The Utilities folder contains a Strong Name compiled version of: \Utilities\VS.NET\Strong Named DLLs - AxInterop.TeeChart.dll - TeeChart.dll They may be used to replace the automatically generated AxInterop.TeeChart.dll and Interop.TeeChart.dll created when TeeChart AX is added to a Windows Form. You should remove auto-generated dlls from the references list in the project Solution Explorer and from the Obj folder of the project and Debug or Release Bin folder. Then copy in the new Dlls to Obj and Bin folders and reference the new Dlls from their Obj folder location. =========================================== Please send us details about any other issues found to: http://www.teechart.net/support/modules.php?name=Forums Many thanks ! =========================================== http://www.steema.com support: http://www.teechart.net/support/modules.php?name=Forums -------------------------------------------
=========================================== TeeChart Pro Activex Control v5 Copyright (c) 1997-2002 by David Berneda and Marc Meumann All Rights Reserved. http://www.steema.com email: info@steema.com supportx@steema.com =========================================== July 2002 TeeChart Pro Activex Control v5 v5.0.4.0 Release notes: ===================================== For information about differences and use of TeeChart Pro ActiveX v5 with respect to TeeChart Pro ActiveX v4 please refer to the 'Upgrading from TeeChart v4.doc' document accessible via the TeeChart Program Manager group. =========================================== Changes for this release: ------------------------- Bugs resolved: 1. Print Preview from TeeCommander for multi-page Charts in v5.0.3.x functioned incorrectly. Now resolved. 2. ZoomPen definition failed to save in tee files. Now resolved. 3. Integer overflow error reported after multiple zooms. Now resolved. 4. The property 'Controls' in TeeCommander coincides with a protected word in VBA. To permit access to this functionality in VBA the method has been duplicated with name 'Buttons'. 5. Omission in previous releases, the OffsetValues ValueList for Bar3D Series is accessible by code for this release. 6. Omission in previous releases, MACD function has new Period3 property. 7. Visual Studio.NET doesn't support the passing as Interface of the Chart to the TeePreviewPanel AddChart method. A substitute AddChartLink has been added for this release to accept ChartLink. 8. The keyword 'Months' as a database field name was incompatible with prior translation system for non-english language versions' db access via the Editor. Now resolved. 9. TeePolar/Radar Series problem when labelling datasets of 13, 19, 25, etc. values. Internal rounding error resolved. 10.Help button on Chart Editor not functioning. Now resolved. New features: 1.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值