翻译|使用教程|编辑:王香|2018-08-21 09:26:56.000|阅读 606 次
概述:本文详细介绍了在TeeChart设计时,运行时和授权要求
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
【下载TeeChart.Net最新版本】
本教程将介绍TeeChart应用程序的运行时安装的某些方面。
您的TeeChart应用程序需要与TeeChart.dll一起分发,如果您的应用程序使用Steema.TeeChart.Languages命名空间,则需要与TeeChart.Languages.dll一起分发。您需要在此决定是否在本地安装这些dll,例如,在应用程序目录下的bin目录中,在AssemblyFolders注册表项中注册该文件夹,或者将它们安装在全局程序集缓存(GAC)中。
TeeChart的编辑器可以在运行时实现,以使您的应用程序用户能够修改图表设置,TeeChart自己的设计时程序员帮助不会延伸到运行时,但您可以选择在运行时添加自己的帮助文件,以便通过图表编辑器上的“Help”按钮打开。
TeeChart语言,即能够以不同语言显示TeeChart Editor和其他TeeChart对话框,目前仅支持运行时。
要在运行时更改语言,您只需使用类似于以下内容的代码:
Steema.TeeChart.Languages.German.Activate();
此处填充用于语言选择的组合框:
private void Form1_Load(object sender, System.EventArgs e) commander1.Chart = tChart1; tChart1.Aspect.View3D = false; line1.FillSampleValues(20); comboBox1.Items.Add("Arabic"); comboBox1.Items.Add("Brazilian"); comboBox1.Items.Add("Catalan"); comboBox1.Items.Add("Chinese Simple"); comboBox1.Items.Add("Chinese Traditional"); comboBox1.Items.Add("Danish"); comboBox1.Items.Add("Dutch"); comboBox1.Items.Add("English"); comboBox1.Items.Add("Finnish"); comboBox1.Items.Add("French"); comboBox1.Items.Add("Galician"); comboBox1.Items.Add("German"); comboBox1.Items.Add("Hebrew"); comboBox1.Items.Add("Hellenic"); comboBox1.Items.Add("Hungarian"); comboBox1.Items.Add("Indonesian"); comboBox1.Items.Add("Italian"); comboBox1.Items.Add("Japanese"); comboBox1.Items.Add("Korean"); comboBox1.Items.Add("Norwegian"); comboBox1.Items.Add("Polish"); comboBox1.Items.Add("Portuguese"); comboBox1.Items.Add("Russian"); comboBox1.Items.Add("Slovak"); comboBox1.Items.Add("Slovene"); comboBox1.Items.Add("Spanish"); comboBox1.Items.Add("Swedish"); comboBox1.Items.Add("Turkish"); comboBox1.Items.Add("Ukranian"); comboBox1.SelectedItem = "English"; private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e) switch(comboBox1.SelectedIndex) case 0: Steema.TeeChart.Languages.Arabic.Activate(); break; case 1: Steema.TeeChart.Languages.Brazilian.Activate(); break; case 2: Steema.TeeChart.Languages.Catalan.Activate(); break; case 3: Steema.TeeChart.Languages.ChineseSimp.Activate(); break; case 4: Steema.TeeChart.Languages.ChineseTrad.Activate(); break; case 5: Steema.TeeChart.Languages.Danish.Activate(); break; case 6: Steema.TeeChart.Languages.Dutch.Activate(); break; case 7: Steema.TeeChart.Languages.English.Activate(); break; case 8: Steema.TeeChart.Languages.Finnish.Activate(); break; case 9: Steema.TeeChart.Languages.French.Activate(); break; case 10: Steema.TeeChart.Languages.Galician.Activate(); break; case 11: Steema.TeeChart.Languages.German.Activate(); break; case 12: Steema.TeeChart.Languages.Hebrew.Activate(); break; case 13: Steema.TeeChart.Languages.Hellenic.Activate(); break; case 14: Steema.TeeChart.Languages.Hungarian.Activate(); break; case 15: Steema.TeeChart.Languages.Indonesian.Activate(); break; case 16: Steema.TeeChart.Languages.Italian.Activate(); break; case 17: Steema.TeeChart.Languages.Japanese.Activate(); break; case 18: Steema.TeeChart.Languages.Korean.Activate(); break; case 19: Steema.TeeChart.Languages.Norwegian.Activate(); break; case 20: Steema.TeeChart.Languages.Polish.Activate(); break; case 21: Steema.TeeChart.Languages.Portuguese.Activate(); break; case 22: Steema.TeeChart.Languages.Russian.Activate(); break; case 23: Steema.TeeChart.Languages.Slovak.Activate(); break; case 24: Steema.TeeChart.Languages.Slovene.Activate(); break; case 25: Steema.TeeChart.Languages.Spanish.Activate(); break; case 26: Steema.TeeChart.Languages.Swedish.Activate(); break; case 27: Steema.TeeChart.Languages.Turkish.Activate(); break; case 28: Steema.TeeChart.Languages.Ukrainian.Activate(); break;
TeeChart可以设置默认设计时语言,该语言将在TeeChart添加到表单时立即生效。在第一次打开图表项目时,语言键中激活的语言将生效,或者可以通过图表右键单击菜单“Options”选项设置语言。
[HKEY_LOCAL_MACHINE\SOFTWARE\Steema Software\TeeChart.NET] "Language"=dword:00000011 //Hex 11 is decimal 17 (Japanese)
本节包含与ASP.NET WebForm应用程序分发相关的信息。
WebChart仅在WebChart的TempChart属性设置为“文件”时才使用注册表设置来查找临时图表存储文件夹。如果WebChart的TempChart属性设置为“Session”,则运行时服务器中不需要注册表项。有关WebChart应用程序配置的更多信息,请参阅教程9,。
如果要将临时文件写入磁盘,则应使用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设计时和运行时授权体系结构而要采取的配置元素和设置步骤。
TeeChart使用基于Microsoft的System.Component.LicenseProvider类的授权控制。当通过TeeChart安装程序安装TeeChart时,会添加一个注册表授权密钥,其可见部分可以在HKEY_LOCAL_MACHINE \ SOFTWARE \ Steema Software \ TeeChart.NET密钥下看到:"DesignKey"="Steema.TeeChart.TChart is a licensed component."
密钥的存在以及相应的“not-published”密钥代码允许在Visual Studio.NET的设计时使用TeeChart,并允许将密钥编译为运行时可执行(.exe)和库(.dll)文件,以便TeeChart.dll和TeeChart.languages.dll文件可以与已编译的应用程序一起分发,但不提供TeeChart选项作为安装位置的设计时组件。
包含TChart,Chart或WebChart组件的项目必须包含Licenses.licx文件。当向其添加任何图表时,Visual Studio IDE会自动将该文件添加到TChart(Windows表单图表)或WebChart(Web表单图表)项目中。对于非设计时图表应用程序,例如,在运行时手动创建图表 “Steema.TeeChart.Chart c = new Steema.TeeChart.Chart();” ,然后您必须手动将授权文件添加到项目,您可能使用的示例文件包含在Utils文件夹中。您可以通过在VS.NET解决方案资源管理器中选择项目并单击鼠标右键单击“ Add | AddExisting Item”与文件类型“All files”并选择“Utils \ Licenses.Licx”。
如果已成功将带有授权的TeeChart编译到dll中,请注意,如果您在另一个应用程序中使用该DLL,则需要确保将TeeChart授权添加到最终应用程序的Licenses.licx文件中即使该应用程序本身可能没有直接引用TeeChart。如果您的最终用户应用程序不是在Visual Studio .NET中开发的,那么在最终编译时不需要授权文件和授权本身。
如果您在具有开发人员授权的计算机上不会重复使用您的DLL的环境中工作,请确认重用是否可能属于“插件使用”的范围,如下一节所述,在插件dll中使用TeeChart。如果您认为您的程序集(使用TeeChart)需要由具有TeeChart类和方法知识的容器重新使用或需要引用程序集,但是在没有TeeChart Developer License的计算机上请确认相关机器已获得在设计时使用TeeChart的授权。某些分销或团队工作情况可能需要通过特殊授权条件来解决,Steema人员在info@st??eema.com可以帮助进行授权查询。
标准版的TeeChart for .NET支持授权控制,以便在动态加载的插件中使用。该插件通常是一个包含TeeChart的程序集,可以在运行时由容器应用程序使用NET的“Assembly.Load”方法或类似方法动态加载。为了允许容器应用程序加载和运行TeeChart而不需要容器级别的licenses.licx文件,TeeChart提供了一个默认构造函数的替代方法,编译它的dll程序集将自身作为参数传递,并在该级别进行授权检查不在容器应用程序的DLL。请注意,容器应用程序可能不会直接向TeeChart进行代码调用。它可以打开并运行TeeChart dll,而dll本身就是自治的,可以自己调用TeeChart。允许从容器应用程序进行Chart调用的规则的例外是,如果TeeChart的方法被可以在独立接口中定义的方法“wrapped”(次要调用),可以修改此处描述的示例以包括此类调用。
包含TeeChart的插件会在创建时加载TeeChart将其自身作为参数传递。只有在第一次打开TeeChart时才需要使用重载的构造函数,以允许进行授权检查。此后,可以通过常规手段使用TeeChart。使用的一个例子如下。在此示例中,TeeChart的“dummy”创建在表单创建时强制执行初始授权检查。
例:在此示例中,PluginShared.Factory是由宿主应用程序引用的接口,它提供了一个名为“CreateForm”的方法。容纳TeeChart的程序集实现了PluginShared.Factory,因此也提供了CreateForm方法,但它有自己的实现(在其中加载TeeChart)。主机识别CreateForm方法调用,而无需了解TeeChart特定程序集。请注意。容纳TeeChart的程序集必须包含Licenses.licx文件,并在具有有效TeeChart开发人员授权的计算机上进行编译。装配外部TeeChart(例如PluginWithTeeChart.dll)
namespace Plugin { public class FactoryImpl : PluginShared.Factory { public System.Windows.Forms.Form CreateForm() { try { return new PluginWithTeeChart.FormWithChart(); } catch (Exception e) { MessageBox.Show("failed to create plugin with error: " + e.ToString()); return null; } } } }
namespace PluginWithTeeChart { public partial class FormWithChart : Form { public FormWithChart() { //discardable Chart forces License check Steema.TeeChart.TChart tempChart = new Steema.TeeChart.TChart(this); tempChart = null; InitializeComponent(); //<---- Normal application code. Could run here various TeeCharts without need for overloaded constructor } } }
容器应用程序(例如HostApp.exe),容器可能以下列方式装载TeeChart外壳组件(dll)。HostApp引用发布CreateForm方法的公共接口Plugin.FactoryImpl非常重要。
void LoadTeeChartPlugin(string pluginName) { string pluginName = @".dll"; try { Debug.WriteLine("Loading plugin assembly " + pluginName); Assembly assembly = Assembly.LoadFrom(pluginName); string factoryTypeName = "Plugin.FactoryImpl"; Type t = assembly.GetType(factoryTypeName); if (t == null) { MessageBox.Show("Type: " + factoryTypeName + " not found in plugin assembly"); return; } PluginShared.Factory factory = (PluginShared.Factory)assembly.CreateInstance(t.ToString()); System.Windows.Forms.Form f = factory.CreateForm(); f.ShowDialog(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
VC ++中的许可实现并不像其他.NET编程语言那样透明。您可以按照Tim Adler在microsoft.public.dotnet.framework新闻组中描述的步骤成功实施VC ++项目的授权。
我的解决方法很简单:创建一个新的解决方案,并在其中一个新的C#项目,使用SAME应用程序名称作为您的C ++应用程序。创建一个虚拟表单并将需要许可的每个组件放到此表单上。或者,编辑licenses.licx文件,自动生成以引用每个组件。然后构建应用程序。然后导航到调试目录并将“* .licenses”文件复制到C ++应用程序的基本目录中。然后在Project Options->Linker->Input->Embed Managed Resource File setting of your C++ app,请参阅此授权文件。然后执行“重建”。
该文件是一个文本文件,至少应包含一个文件或用作通用文件,以下三行:
Steema.TeeChart.Chart,TeeChart Steema.TeeChart.TChart,TeeChart Steema.TeeChart.Web.WebChart,TeeChart
内容应至少包括项目创建的类的名称,通常是基于Windows窗体的项目的Steema.TeeChart.TChart,以及用于按代码和Steema.TeeChart创建图表的项目的Steema.TeeChart.Chart。 Web.WebChart用于包含TeeChart的WebChart组件的WebForm项目。 将图表添加到表单NET时,会自动添加稍长的版本,也是正确的,包括程序集版本号和公钥。
Steema.TeeChart.TChart,TeeChart,Version = 1.1.1864.22788,Culture = neutral,PublicKeyToken = 9c8126276c77bdb7
对于使用以前版本的TeeChart创建的表单应用程序,授权文件不存在,您可以通过将“Tool”面板的“Steema”部分中的“Charts”拖动到任何文件来快速生成它。项目的表格,然后删除它。新拖动的图表会激发IDE添加Licenses.licx文件。
使用Licenses.licx文件编译的项目的.exe或.dll可以作为运行时应用程序与TeeChart.dll(以及TeeChart.Languages.dll文件,如果需要)一起分发,而无需任何TeeChart要安装的运行时许可证文件或注册表项。
错误情况是:Error message when compiling:
"Could not transform licenses file 'licenses.licx' into a binary resource."
可能的原因是开发授权注册表项没有到位。请检查本章中描述的可见密钥条目,以查看其中是否存在任何明显的问题或遗漏。解决办法可以是使用TeeChart安装程序重新安装TeeChart,安装程序会设置注册表项。如果问题仍然存在,请通过支持论坛联系TeeChart支持。
License error when trying to run compiled (runtime) output application on machine without designkey installed.
检查项目是否包含Licenses.licx文件。将图表添加到表单时可能已自动添加,或者可能已手动添加。在任何一种情况下,请确认项目中的Licenses.licx文件是否为嵌入式资源。您需要激活“Show all files”以在项目的“Solution Explorer window”窗口中查看Licenses.licx的存在。另一个可能原因是licenses.licx文件内容不正确。请检查内容是否反映了本章前一部分中描述的内容。
自定义主题是小* .xml文件,可以通过简单的代码行创建: tChart1.Export.Theme.Save(@ “C:\ Steema \ MyTheme.xml”); 此自定义主题封装了许多与图形,画笔和笔的颜色以及面板,轴,页眉,页脚,图例等样式相关的图表图形设置。创建后,这些主题可以显示在图表编辑器的主题选项卡中,名称出现在那里作为文件的名称。为了使图表编辑器知道在哪里查找这些文件,有一个注册表设置,它指定本地机器上的文件夹: [HKEY_LOCAL_MACHINE \ SOFTWARE \ Steema Software \ TeeChart.NET] “ThemeFolder”=“C:\ Program Files \ Steema Software \ TeeChart for .NET v3 \ Themes” 只需将自定义主题(* .xml文件)添加到此键中指定的文件夹,图表编辑器就会读取并显示它们。
说明:teechart.licenses可能包含在项目中,如启动指南中所述:https ://www.steema.com/linkIn/tnetstd_startup。使用授权文件:一旦包含在项目中并与其正确关联(例如,通过添加为一个项目的嵌入式资源)然后该应用程序在技术上准备分发。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn