【TeeChart .NET教程】(十七)設(shè)計(jì)時(shí),運(yùn)行時(shí)和授權(quán)要求
【下載TeeChart.Net最新版本】
(一)TeeChart運(yùn)行時(shí)要求
本教程將介紹TeeChart應(yīng)用程序的運(yùn)行時(shí)安裝的某些方面。
1.1 TeeChart運(yùn)行時(shí)文件
您的TeeChart應(yīng)用程序需要與TeeChart.dll一起分發(fā),如果您的應(yīng)用程序使用Steema.TeeChart.Languages命名空間,則需要與TeeChart.Languages.dll一起分發(fā)。您需要在此決定是否在本地安裝這些dll,例如,在應(yīng)用程序目錄下的bin目錄中,在AssemblyFolders注冊表項(xiàng)中注冊該文件夾,或者將它們安裝在全局程序集緩存(GAC)中。
(二)運(yùn)行時(shí)編輯器幫助支持
TeeChart的編輯器可以在運(yùn)行時(shí)實(shí)現(xiàn),以使您的應(yīng)用程序用戶能夠修改圖表設(shè)置,TeeChart自己的設(shè)計(jì)時(shí)程序員幫助不會延伸到運(yùn)行時(shí),但您可以選擇在運(yùn)行時(shí)添加自己的幫助文件,以便通過圖表編輯器上的“Help”按鈕打開。
2.1 Configuration
- 您的幫助文件應(yīng)該是chm格式(HTML Help v1)
- 安裝在以下注冊表位置時(shí),helpfile應(yīng)該是運(yùn)行時(shí)注冊的: [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\HTML Help] "YourHelpfile.chm"="drive:\directory"
(三)TeeChart語言支持
TeeChart語言,即能夠以不同語言顯示TeeChart Editor和其他TeeChart對話框,目前僅支持運(yùn)行時(shí)。
3.1 配置
要在運(yùn)行時(shí)更改語言,您只需使用類似于以下內(nèi)容的代碼:
Steema.TeeChart.Languages.German.Activate();
3.2 示例
此處填充用于語言選擇的組合框:
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;
3.3 設(shè)計(jì)時(shí)間語言
TeeChart可以設(shè)置默認(rèn)設(shè)計(jì)時(shí)語言,該語言將在TeeChart添加到表單時(shí)立即生效。在第一次打開圖表項(xiàng)目時(shí),語言鍵中激活的語言將生效,或者可以通過圖表右鍵單擊菜單“Options”選項(xiàng)設(shè)置語言。
3.4 IE瀏覽器
[HKEY_LOCAL_MACHINE\SOFTWARE\Steema Software\TeeChart.NET] "Language"=dword:00000011 //Hex 11 is decimal 17 (Japanese)
(四)ASP.NET應(yīng)用程序支持
本節(jié)包含與ASP.NET WebForm應(yīng)用程序分發(fā)相關(guān)的信息。
4.1 配置
WebChart僅在WebChart的TempChart屬性設(shè)置為“文件”時(shí)才使用注冊表設(shè)置來查找臨時(shí)圖表存儲文件夾。如果WebChart的TempChart屬性設(shè)置為“Session”,則運(yùn)行時(shí)服務(wù)器中不需要注冊表項(xiàng)。有關(guān)WebChart應(yīng)用程序配置的更多信息,請參閱教程9,ASP.NET應(yīng)用程序。
4.2 當(dāng)TempChart設(shè)置為File時(shí):
如果要將臨時(shí)文件寫入磁盤,則應(yīng)使用File設(shè)置。默認(rèn)情況下,安裝TeeChart時(shí),它會創(chuàng)建具有臨時(shí)文件位置和等效虛擬文件夾名稱的注冊表項(xiàng),關(guān)鍵如下:
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Steema Software \ TeeChart.NET] “VirtualShare”=“/ TeeChartForNET” “ShareFolder”=“C:\ Program Files \ Steema Software \ TeeChart for .NET v3 \ TeeChartForNET”
如果接受默認(rèn)安裝位置,則上述設(shè)置將在標(biāo)準(zhǔn)英語語言機(jī)器中創(chuàng)建。TeeChartNET虛擬文件夾由TeeChart安裝程序創(chuàng)建。如果您創(chuàng)建必要的IIS虛擬共享位置以反映新的注冊表值,則可以更改這些注冊表設(shè)置。WebChart將文件保存到ShareFolder注冊表項(xiàng)中指定的文件夾下名為_Chart_tmp的文件夾中。TeeChart不會刪除臨時(shí)文件,但您可以自動(dòng)包含一個(gè)實(shí)用程序作為Windows計(jì)劃任務(wù)。
(五)設(shè)計(jì)和運(yùn)行時(shí)的授權(quán)設(shè)置
本節(jié)介紹了為符合TeeChart設(shè)計(jì)時(shí)和運(yùn)行時(shí)授權(quán)體系結(jié)構(gòu)而要采取的配置元素和設(shè)置步驟。
5.1 說明
TeeChart使用基于Microsoft的System.Component.LicenseProvider類的授權(quán)控制。當(dāng)通過TeeChart安裝程序安裝TeeChart時(shí),會添加一個(gè)注冊表授權(quán)密鑰,其可見部分可以在HKEY_LOCAL_MACHINE \ SOFTWARE \ Steema Software \ TeeChart.NET密鑰下看到:"DesignKey"="Steema.TeeChart.TChart is a licensed component."
密鑰的存在以及相應(yīng)的“not-published”密鑰代碼允許在Visual Studio.NET的設(shè)計(jì)時(shí)使用TeeChart,并允許將密鑰編譯為運(yùn)行時(shí)可執(zhí)行(.exe)和庫(.dll)文件,以便TeeChart.dll和TeeChart.languages.dll文件可以與已編譯的應(yīng)用程序一起分發(fā),但不提供TeeChart選項(xiàng)作為安裝位置的設(shè)計(jì)時(shí)組件。
5.2 運(yùn)營考慮因素
包含TChart,Chart或WebChart組件的項(xiàng)目必須包含Licenses.licx文件。當(dāng)向其添加任何圖表時(shí),Visual Studio IDE會自動(dòng)將該文件添加到TChart(Windows表單圖表)或WebChart(Web表單圖表)項(xiàng)目中。對于非設(shè)計(jì)時(shí)圖表應(yīng)用程序,例如,在運(yùn)行時(shí)手動(dòng)創(chuàng)建圖表 “Steema.TeeChart.Chart c = new Steema.TeeChart.Chart();” ,然后您必須手動(dòng)將授權(quán)文件添加到項(xiàng)目,您可能使用的示例文件包含在Utils文件夾中。您可以通過在VS.NET解決方案資源管理器中選擇項(xiàng)目并單擊鼠標(biāo)右鍵單擊“ Add | AddExisting Item”與文件類型“All files”并選擇“Utils \ Licenses.Licx”。
5.3 在dll中使用TeeChart
如果已成功將帶有授權(quán)的TeeChart編譯到dll中,請注意,如果您在另一個(gè)應(yīng)用程序中使用該DLL,則需要確保將TeeChart授權(quán)添加到最終應(yīng)用程序的Licenses.licx文件中即使該應(yīng)用程序本身可能沒有直接引用TeeChart。如果您的最終用戶應(yīng)用程序不是在Visual Studio .NET中開發(fā)的,那么在最終編譯時(shí)不需要授權(quán)文件和授權(quán)本身。
如果您在具有開發(fā)人員授權(quán)的計(jì)算機(jī)上不會重復(fù)使用您的DLL的環(huán)境中工作,請確認(rèn)重用是否可能屬于“插件使用”的范圍,如下一節(jié)所述,在插件dll中使用TeeChart。如果您認(rèn)為您的程序集(使用TeeChart)需要由具有TeeChart類和方法知識的容器重新使用或需要引用程序集,但是在沒有TeeChart Developer License的計(jì)算機(jī)上請確認(rèn)相關(guān)機(jī)器已獲得在設(shè)計(jì)時(shí)使用TeeChart的授權(quán)。某些分銷或團(tuán)隊(duì)工作情況可能需要通過特殊授權(quán)條件來解決,Steema人員在info@st??eema.com可以幫助進(jìn)行授權(quán)查詢。
5.4 在dll插件中使用TeeChart
標(biāo)準(zhǔn)版的TeeChart for .NET支持授權(quán)控制,以便在動(dòng)態(tài)加載的插件中使用。該插件通常是一個(gè)包含TeeChart的程序集,可以在運(yùn)行時(shí)由容器應(yīng)用程序使用NET的“Assembly.Load”方法或類似方法動(dòng)態(tài)加載。為了允許容器應(yīng)用程序加載和運(yùn)行TeeChart而不需要容器級別的licenses.licx文件,TeeChart提供了一個(gè)默認(rèn)構(gòu)造函數(shù)的替代方法,編譯它的dll程序集將自身作為參數(shù)傳遞,并在該級別進(jìn)行授權(quán)檢查不在容器應(yīng)用程序的DLL。請注意,容器應(yīng)用程序可能不會直接向TeeChart進(jìn)行代碼調(diào)用。它可以打開并運(yùn)行TeeChart dll,而dll本身就是自治的,可以自己調(diào)用TeeChart。允許從容器應(yīng)用程序進(jìn)行Chart調(diào)用的規(guī)則的例外是,如果TeeChart的方法被可以在獨(dú)立接口中定義的方法“wrapped”(次要調(diào)用),可以修改此處描述的示例以包括此類調(diào)用。
插件
包含TeeChart的插件會在創(chuàng)建時(shí)加載TeeChart將其自身作為參數(shù)傳遞。只有在第一次打開TeeChart時(shí)才需要使用重載的構(gòu)造函數(shù),以允許進(jìn)行授權(quán)檢查。此后,可以通過常規(guī)手段使用TeeChart。使用的一個(gè)例子如下。在此示例中,TeeChart的“dummy”創(chuàng)建在表單創(chuàng)建時(shí)強(qiáng)制執(zhí)行初始授權(quán)檢查。
例:在此示例中,PluginShared.Factory是由宿主應(yīng)用程序引用的接口,它提供了一個(gè)名為“CreateForm”的方法。容納TeeChart的程序集實(shí)現(xiàn)了PluginShared.Factory,因此也提供了CreateForm方法,但它有自己的實(shí)現(xiàn)(在其中加載TeeChart)。主機(jī)識別CreateForm方法調(diào)用,而無需了解TeeChart特定程序集。請注意。容納TeeChart的程序集必須包含Licenses.licx文件,并在具有有效TeeChart開發(fā)人員授權(quán)的計(jì)算機(jī)上進(jìn)行編譯。裝配外部TeeChart(例如PluginWithTeeChart.dll)
Class:
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; } } } }
Form:
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 } } }
容器應(yīng)用程序(例如HostApp.exe),容器可能以下列方式裝載TeeChart外殼組件(dll)。HostApp引用發(fā)布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()); } }
5.5 在Visual C ++ .NET中使用TeeChart
VC ++中的許可實(shí)現(xiàn)并不像其他.NET編程語言那樣透明。您可以按照Tim Adler在microsoft.public.dotnet.framework新聞組中描述的步驟成功實(shí)施VC ++項(xiàng)目的授權(quán)。
5.6 引用:
我的解決方法很簡單:創(chuàng)建一個(gè)新的解決方案,并在其中一個(gè)新的C#項(xiàng)目,使用SAME應(yīng)用程序名稱作為您的C ++應(yīng)用程序。創(chuàng)建一個(gè)虛擬表單并將需要許可的每個(gè)組件放到此表單上。或者,編輯licenses.licx文件,自動(dòng)生成以引用每個(gè)組件。然后構(gòu)建應(yīng)用程序。然后導(dǎo)航到調(diào)試目錄并將“* .licenses”文件復(fù)制到C ++應(yīng)用程序的基本目錄中。然后在Project Options->Linker->Input->Embed Managed Resource File setting of your C++ app,請參閱此授權(quán)文件。然后執(zhí)行“重建”。
5.7 Licenses.licx file
該文件是一個(gè)文本文件,至少應(yīng)包含一個(gè)文件或用作通用文件,以下三行:
Steema.TeeChart.Chart,TeeChart Steema.TeeChart.TChart,TeeChart Steema.TeeChart.Web.WebChart,TeeChart
內(nèi)容應(yīng)至少包括項(xiàng)目創(chuàng)建的類的名稱,通常是基于Windows窗體的項(xiàng)目的Steema.TeeChart.TChart,以及用于按代碼和Steema.TeeChart創(chuàng)建圖表的項(xiàng)目的Steema.TeeChart.Chart。 Web.WebChart用于包含TeeChart的WebChart組件的WebForm項(xiàng)目。 將圖表添加到表單NET時(shí),會自動(dòng)添加稍長的版本,也是正確的,包括程序集版本號和公鑰。
Steema.TeeChart.TChart,TeeChart,Version = 1.1.1864.22788,Culture = neutral,PublicKeyToken = 9c8126276c77bdb7
5.8 向舊的“non-licensed”項(xiàng)目添加授權(quán)支持
對于使用以前版本的TeeChart創(chuàng)建的表單應(yīng)用程序,授權(quán)文件不存在,您可以通過將“Tool”面板的“Steema”部分中的“Charts”拖動(dòng)到任何文件來快速生成它。項(xiàng)目的表格,然后刪除它。新拖動(dòng)的圖表會激發(fā)IDE添加Licenses.licx文件。
5.9 運(yùn)行時(shí)分發(fā)
使用Licenses.licx文件編譯的項(xiàng)目的.exe或.dll可以作為運(yùn)行時(shí)應(yīng)用程序與TeeChart.dll(以及TeeChart.Languages.dll文件,如果需要)一起分發(fā),而無需任何TeeChart要安裝的運(yùn)行時(shí)許可證文件或注冊表項(xiàng)。
5.10 授權(quán)問題疑難解答
錯(cuò)誤情況是:Error message when compiling:
"Could not transform licenses file 'licenses.licx' into a binary resource."
可能的原因是開發(fā)授權(quán)注冊表項(xiàng)沒有到位。請檢查本章中描述的可見密鑰條目,以查看其中是否存在任何明顯的問題或遺漏。解決辦法可以是使用TeeChart安裝程序重新安裝TeeChart,安裝程序會設(shè)置注冊表項(xiàng)。如果問題仍然存在,請通過支持論壇聯(lián)系TeeChart支持。
License error when trying to run compiled (runtime) output application on machine without designkey installed.
檢查項(xiàng)目是否包含Licenses.licx文件。將圖表添加到表單時(shí)可能已自動(dòng)添加,或者可能已手動(dòng)添加。在任何一種情況下,請確認(rèn)項(xiàng)目中的Licenses.licx文件是否為嵌入式資源。您需要激活“Show all files”以在項(xiàng)目的“Solution Explorer window”窗口中查看Licenses.licx的存在。另一個(gè)可能原因是licenses.licx文件內(nèi)容不正確。請檢查內(nèi)容是否反映了本章前一部分中描述的內(nèi)容。
(六)如何為設(shè)計(jì)時(shí)和運(yùn)行時(shí)指定自定義主題
自定義主題是小* .xml文件,可以通過簡單的代碼行創(chuàng)建: tChart1.Export.Theme.Save(@ “C:\ Steema \ MyTheme.xml”); 此自定義主題封裝了許多與圖形,畫筆和筆的顏色以及面板,軸,頁眉,頁腳,圖例等樣式相關(guān)的圖表圖形設(shè)置。創(chuàng)建后,這些主題可以顯示在圖表編輯器的主題選項(xiàng)卡中,名稱出現(xiàn)在那里作為文件的名稱。為了使圖表編輯器知道在哪里查找這些文件,有一個(gè)注冊表設(shè)置,它指定本地機(jī)器上的文件夾: [HKEY_LOCAL_MACHINE \ SOFTWARE \ Steema Software \ TeeChart.NET] “ThemeFolder”=“C:\ Program Files \ Steema Software \ TeeChart for .NET v3 \ Themes” 只需將自定義主題(* .xml文件)添加到此鍵中指定的文件夾,圖表編輯器就會讀取并顯示它們。
(七)TeeChart.Standard商業(yè)版的授權(quán)設(shè)置
說明:teechart.licenses可能包含在項(xiàng)目中,如啟動(dòng)指南中所述:https ://www.steema.com/linkIn/tnetstd_startup。使用授權(quán)文件:一旦包含在項(xiàng)目中并與其正確關(guān)聯(lián)(例如,通過添加為一個(gè)項(xiàng)目的嵌入式資源)然后該應(yīng)用程序在技術(shù)上準(zhǔn)備分發(fā)。