翻譯|使用教程|編輯:王香|2018-08-21 09:26:56.000|閱讀 671 次
概述:本文詳細介紹了在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 ++應用程序。創建一個虛擬表單并將需要許可的每個組件放到此表單上?;蛘撸庉媗icenses.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@fc6vip.cn