2148 lines
		
	
	
		
			85 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			2148 lines
		
	
	
		
			85 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | ||
| using System.IO;
 | ||
| using System.Collections.Generic;
 | ||
| using System.ComponentModel;
 | ||
| using System.Data;
 | ||
| using System.Drawing;
 | ||
| using System.Text;
 | ||
| using System.Windows.Forms;
 | ||
| using DCSoft.Writer;
 | ||
| using DCSoft.Writer.Controls;
 | ||
| using DCSoft.Writer.Commands;
 | ||
| using DCSoft.Writer.Dom;
 | ||
| using DCSoft.Drawing;
 | ||
| using DCSoft.Writer.Data;
 | ||
| using DCSoft.Writer.Security;
 | ||
| using DCSoft.Common;
 | ||
| using DCSoft.Data;
 | ||
| using DCSoft.Writer.Printing;
 | ||
| using DCSoft.Writer.Extension.Data;
 | ||
| using DCSoft.Writer.Extension;
 | ||
| using DCSoft.Design;
 | ||
| using System.Linq;
 | ||
| using System.Xml;
 | ||
| using Microsoft.CSharp;
 | ||
| using System.CodeDom.Compiler;
 | ||
| using System.Reflection;
 | ||
| 
 | ||
| namespace DocumentManagement
 | ||
| {
 | ||
|     /// <summary>
 | ||
|     /// 
 | ||
|     /// </summary>
 | ||
|     public partial class frmTemplate : Form
 | ||
|     {
 | ||
|         
 | ||
|         public PrintTemplate model = new PrintTemplate();
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 数据源树状列表控制器
 | ||
|         /// </summary>
 | ||
|         private DataSourceTreeViewControler dstvControler = null;
 | ||
| 
 | ||
|         public WriterControl editControl { get { return this.myEditControl; } }
 | ||
| 
 | ||
|         public RichTextBox RTB_Click { get { return this.rtbClick; } }
 | ||
| 
 | ||
|         public RichTextBox RTB_Content { get { return this.rtbContent; } }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 元素事件窗体
 | ||
|         /// </summary>
 | ||
|         //private frmElementEvents frmElementEvents;
 | ||
| 
 | ||
|         //private XTextDocument bakDoc = null;
 | ||
|         private XTextElementList tempList,tempChkList;
 | ||
| 
 | ||
|         private bool delFlag = true;
 | ||
| 
 | ||
|         private FlagXTextRangeProvider provider = new FlagXTextRangeProvider();
 | ||
| 
 | ||
|         private CompilerResults cr;
 | ||
| 
 | ||
|         private Type type;
 | ||
| 
 | ||
|         public frmTemplate()
 | ||
|         {
 | ||
|             InitializeComponent();     
 | ||
|             myEditControl.ServerObject = new ServerObjectSample(this);
 | ||
|             //myEditControl.ViewMode = Printing.PageViewMode.Normal;
 | ||
|             //myEditControl.Document.Options.EditOptions.AutoEditElementValue = true;
 | ||
|             //myEditControl.IsAdministrator = true;
 | ||
|             //myEditControl.Readonly = true;
 | ||
|             //myEditControl.KeyPress += new KeyPressEventHandler(myEditControl_KeyPress);
 | ||
|             myEditControl.DocumentControler = new MyDocumentControler();
 | ||
|             //myEditControl.IsAdministrator = true;
 | ||
|             //myEditControl.DocumentControler.DataFilter = new MyDataFilter();
 | ||
|             //myEditControl.HeaderFooterReadonly = true;
 | ||
|             myEditControl.AllowDragContent = true;
 | ||
|             //DocumentContentStyle style = myEditControl.Document.Style;
 | ||
|             //myEditControl.AutoSetDocumentDefaultFont = false;
 | ||
| 
 | ||
|             tabDataSource.Visible = false;
 | ||
|             this.spDataSource.Visible = false;
 | ||
|             myEditControl.MoveFocusHotKey = MoveFocusHotKeys.Tab;
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
|         private AppStartOptions _StartOptions = new AppStartOptions();
 | ||
| 
 | ||
|         public AppStartOptions StartOptions
 | ||
|         {
 | ||
|             get
 | ||
|             {
 | ||
|                 return _StartOptions;
 | ||
|             }
 | ||
|             set
 | ||
|             {
 | ||
|                 _StartOptions = value;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private void frmTemplate_Load(object sender, EventArgs e)
 | ||
|         {
 | ||
|             this.myEditControl.EventCanInsertObject +=
 | ||
|                 new DCSoft.Writer.CanInsertObjectEventHandler(this.myEditControl_EventCanInsertObject);
 | ||
|             this.myEditControl.EventInsertObject +=
 | ||
|                 new DCSoft.Writer.InsertObjectEventHandler(this.myEditControl_EventInsertObject);
 | ||
| 
 | ||
|             //this.myEditControl.DocumentControler = new DocumentControlerExt();
 | ||
| 
 | ||
|             // 添加扩展编辑器命令模块对象
 | ||
|             myEditControl.AppHost.CommandContainer.Modules.Add(
 | ||
|                 new DCSoft.Writer.Extension.WriterCommandModuleExtension());
 | ||
| 
 | ||
|             //DCSoft.Writer.Controls.TextWindowsFormsEditorHost.PopupFormSizeFix = new System.Drawing.Size(40, 20);
 | ||
|             myEditControl.Font = new Font(System.Windows.Forms.Control.DefaultFont.Name, 12);
 | ||
|             if (_StartOptions == null)
 | ||
|             {
 | ||
|                 _StartOptions = new AppStartOptions();
 | ||
|             }
 | ||
|             //// 设置编辑器界面双缓冲
 | ||
|             //myEditControl.DoubleBuffering = _StartOptions.DoubleBuffering;
 | ||
|             // 初始化设置命令执行器
 | ||
|             myEditControl.CommandControler = myCommandControler;
 | ||
|             //myEditControl.CommandControler.UpdateBindingControlStatus();
 | ||
|             myCommandControler.Start();
 | ||
| 
 | ||
|             myEditControl.DocumentOptions = new DocumentOptions();
 | ||
|             // 设置文档处于调试模式
 | ||
|             myEditControl.DocumentOptions.BehaviorOptions.DebugMode = true;
 | ||
|             if (_StartOptions.EnablePermissionControl)
 | ||
|             {
 | ||
|                 // Enable permission control
 | ||
|                 // 允许逻辑删除
 | ||
|                 myEditControl.DocumentOptions.SecurityOptions.EnableLogicDelete = true;
 | ||
|                 // 启用授权控制
 | ||
|                 myEditControl.DocumentOptions.SecurityOptions.EnablePermission = true;
 | ||
|                 // 显示逻辑删除的内容
 | ||
|                 myEditControl.DocumentOptions.SecurityOptions.ShowLogicDeletedContent = true;
 | ||
|                 // 显示痕迹标记
 | ||
|                 myEditControl.DocumentOptions.SecurityOptions.ShowPermissionMark = true;
 | ||
|                 //mPermissionConfig.Enabled = true;
 | ||
|                 //mLogin.Enabled = true;
 | ||
|                 //myEditControl.AutoUserLogin = true;
 | ||
|                 //myEditControl.AutoUserLoginInfo = _StartOptions.LoginInfo;
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 // Without permission control
 | ||
|                 myEditControl.DocumentOptions.SecurityOptions.EnableLogicDelete = false;
 | ||
|                 myEditControl.DocumentOptions.SecurityOptions.EnablePermission = false;
 | ||
|                 myEditControl.DocumentOptions.SecurityOptions.ShowLogicDeletedContent = false;
 | ||
|                 myEditControl.DocumentOptions.SecurityOptions.ShowPermissionMark = false;
 | ||
|                 //mPermissionConfig.Enabled = false;
 | ||
|                 //mLogin.Enabled = false;
 | ||
|                 //myEditControl.AutoUserLogin = false;
 | ||
|             }
 | ||
| 
 | ||
|             //this.myEditControl_DocumentLoad(null, null);
 | ||
|             //model.Id = 2;
 | ||
| 
 | ||
|             if (model.Id != 0)
 | ||
|             {
 | ||
|                 model = DocumentDAL.GetTemplatebyId(model.Id);
 | ||
|             }
 | ||
| 
 | ||
|             tempList = new XTextElementList();
 | ||
|             tempChkList = new XTextElementList();
 | ||
|             //DocumentDAL.LoadKBLibaray();
 | ||
|             myEditControl.ExecuteCommand("LoadKBLibrary", false, DocumentDAL.Lib);
 | ||
|             //string kbFile = System.IO.Path.Combine(Application.StartupPath + "\\PrintDC\\", "kblibrary.xml");
 | ||
|             //if (System.IO.File.Exists(kbFile))
 | ||
|             //{
 | ||
|             //     //自动加载默认的知识库
 | ||
|             //    //KBLibrary lib = (KBLibrary)myEditControl.ExecuteCommand("LoadKBLibrary", false, kbFile);
 | ||
|             //    // 设置加载知识库中模板使用的文件系统
 | ||
|             //    //myEditControl.AppHost.FileSystems[lib.TemplateFileSystemName]
 | ||
|             //    //    = EMR.EMRFileSystem.Instance;
 | ||
|             //}
 | ||
|             
 | ||
|             // 注册自定义的输入域下拉列表提供者
 | ||
|             myEditControl.AppHost.Services.AddService(
 | ||
|                 typeof(IListItemsProvider),
 | ||
|                 new MyListItemsProvider());
 | ||
|             mDataSourceList_Click(null, null);
 | ||
| 
 | ||
|             // 执行一次新增文件操作
 | ||
|             myEditControl.ExecuteCommand("FileNew", true, null);
 | ||
|             //byte[] array = Encoding.UTF8.GetBytes(strXML);
 | ||
|             //MemoryStream stream = new MemoryStream(array);             //convert stream 2 string      
 | ||
|             //StreamReader reader = new StreamReader(stream);
 | ||
|             //myEditControl.ExecuteCommand("FileOpen", false, reader);
 | ||
|             //reader.Close();
 | ||
|             //stream.Close();
 | ||
|             //myEditControl.ExecuteCommand("InsertXML", false, strXML);
 | ||
|             
 | ||
|             //document.Parameters.SetValue("title", System.Configuration.ConfigurationManager.AppSettings["HospitalName"].ToString());
 | ||
|             //myEditControl.RefreshDocument();
 | ||
|             //myEditControl.ExecuteCommand("UpdateViewForDataSource", false, null);
 | ||
| 
 | ||
|             //如果不为空,则“编辑”状态
 | ||
|             if (model.Id != 0)
 | ||
|             {
 | ||
|                 myEditControl.LoadDocumentFromString(model.XmlFile, "xml");
 | ||
|                 myEditControl.Document.FileName = model.XmlFileName;
 | ||
|                 //bakDoc = new XTextDocument();
 | ||
|                 //bakDoc.Fields.AddRange(myEditControl.Document.Fields.ToArray());
 | ||
|                 tempList.AddRange(myEditControl.Document.Fields);
 | ||
|                 //tempList.ToArray().ToList<XTextElement>()
 | ||
|                 //.ForEach(element =>
 | ||
|                 //    listFields.Items.Add(
 | ||
|                 //    new ListItem
 | ||
|                 //    {
 | ||
|                 //        Text = ((XTextInputFieldElementBase)element).BackgroundText
 | ||
|                 //        ,
 | ||
|                 //        Value = element.ID
 | ||
|                 //    }));
 | ||
| 
 | ||
|                 //listFields.DisplayMember = listFields.text;
 | ||
|                 tempChkList.AddRange(myEditControl.Document.GetElementsByType(typeof(XTextCheckBoxElement)));
 | ||
|                 myEditControl.DocumentContentChanged += new WriterEventHandler(myEditControl_DocumentContentChanged);
 | ||
| 
 | ||
|                 //ImageList lg = new ImageList();
 | ||
|                 //lg.Images.Add(this.toolStripButton2.Image);
 | ||
|                 //lg.Images.Add(this.toolStripMenuItem12.Image);
 | ||
|                 //listFields.SmallImageList = lg;
 | ||
| 
 | ||
|                 //if (model.XmlStatic.Length > 0)
 | ||
|                 //{
 | ||
|                 //    XmlDocument doc = new XmlDocument();
 | ||
|                 //    doc.LoadXml(model.XmlStatic);
 | ||
|                 //    UpdateListView(doc);
 | ||
|                 //}
 | ||
|                 //else
 | ||
|                 //{
 | ||
|                 //    UpdateListView();
 | ||
|                 //}
 | ||
|                 UpdateListView();
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 /*
 | ||
|                 //第一行页眉  医院民称
 | ||
|                 XTextDocument document = this.myEditControl.Document;
 | ||
|                 ContentBuilder bulder = new ContentBuilder(document.Header);
 | ||
|                 XTextInputFieldElement title = new XTextInputFieldElement();
 | ||
|                 title.BackgroundText = "医院名称";
 | ||
|                 title.FieldSettings = new InputFieldSettings();
 | ||
|                 //title.FieldSettings.EditStyle = InputFieldEditStyle.Text;
 | ||
|                 //title.DisplayFormat = new ValueFormater();
 | ||
|                 //title.ValueBinding = new DCSoft.Writer.Data.XDataBinding();
 | ||
|                 //title.ValueBinding.DataSource = "title";//数据源的名称
 | ||
|                 //title.ValueBinding.AutoUpdate = true;//是否自动更新数据
 | ||
|                 bulder.Append(title);
 | ||
|                 title.Style.Align = DCSoft.Drawing.DocumentContentAlignment.Center;
 | ||
|                 DocumentContentStyle dcs2 = new DocumentContentStyle();
 | ||
|                 dcs2.FontSize = 12;
 | ||
|                 dcs2.Color = System.Drawing.Color.Black;
 | ||
|                 dcs2.Align = DCSoft.Drawing.DocumentContentAlignment.Left;
 | ||
|                 bulder.AppendParagraphFlag(dcs2);
 | ||
|                 myEditControl.ExecuteCommand("InsertString", false, " ");
 | ||
|                 //myEditControl.RefreshDocument();
 | ||
|                 title.ID = "D_Title";
 | ||
|                 //title.StyleIndex = 0;
 | ||
|                 //title.Style.FontSize = 16;
 | ||
|                 //title.Style.Color = System.Drawing.Color.Gray;
 | ||
|                */
 | ||
|             }
 | ||
| 
 | ||
|             //XTextInputFieldElement titleBase = (XTextInputFieldElement)myEditControl.Document.GetElementById("D_Title");
 | ||
|             //if (titleBase != null)
 | ||
|             //{
 | ||
|             //    titleBase.Text = System.Configuration.ConfigurationManager.AppSettings["HospitalName"].ToString();
 | ||
|             //}
 | ||
| 
 | ||
|             //dstvControler = new DataSourceTreeViewControler(tvwDataSource);
 | ||
|             //tvwDataSource.MouseDown += dstvControler.HandleTreeViewMouseDown;
 | ||
|             string fileName = System.IO.Path.Combine(
 | ||
|                 Application.StartupPath,
 | ||
|                 "DataSourceDescriptor.xml");
 | ||
|             if (System.IO.File.Exists(fileName))
 | ||
|             {
 | ||
|                 dstvControler.LoadFile(fileName);
 | ||
|             }
 | ||
| 
 | ||
|             ////使checkbox居中显示
 | ||
|             //XTextElementList list = myEditControl.Document.GetElementsByType(typeof(XTextCheckBoxElement));
 | ||
|             //foreach (XTextElement el in list)
 | ||
|             //{
 | ||
|             //    ((XTextCheckBoxElement)el).Top = 15;
 | ||
|             //    //DCSoft.WinForms.ResizeableType ResizeableType = new DCSoft.WinForms.ResizeableType();
 | ||
|             //    //ResizeableType = DCSoft.WinForms.ResizeableType.WidthAndHeight;
 | ||
|             //    //((XTextCheckBoxElement)el).Resizeable = ResizeableType;
 | ||
|             //    //MessageBox.Show(((XTextCheckBoxElement)el).WidthHeightRate.ToString());
 | ||
|             //}
 | ||
|             InitCodeCompiler();
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
|         private void InitCodeCompiler()
 | ||
|         {
 | ||
|             var providerOptions = new Dictionary<string, string>();
 | ||
|             providerOptions.Add("CompilerVersion", "v4.0");
 | ||
|             CodeDomProvider cdp = new CSharpCodeProvider(providerOptions);
 | ||
|             CompilerParameters cp = new CompilerParameters();
 | ||
|             cp.GenerateExecutable = false;
 | ||
|             cp.GenerateInMemory = true;
 | ||
|             cp.ReferencedAssemblies.Add("mscorlib.dll");
 | ||
|             cp.ReferencedAssemblies.Add("System.dll");
 | ||
|             cp.ReferencedAssemblies.Add("System.Core.dll");
 | ||
|             cp.ReferencedAssemblies.Add("DCSoft.Writer.dll");
 | ||
|             cp.ReferencedAssemblies.Add("System.Data.Linq.dll");
 | ||
|             cp.ReferencedAssemblies.Add("System.Xml.Linq.dll");
 | ||
|             cp.ReferencedAssemblies.Add("System.Windows.Forms.dll");
 | ||
|             string source = @"
 | ||
| namespace DocumentManagement
 | ||
| {
 | ||
|                 using System;
 | ||
|                 using System.Collections.Generic;
 | ||
|                 using System.Linq;
 | ||
|                 using DCSoft.Writer;
 | ||
|                 using DCSoft.Writer.Dom;
 | ||
|                 using System.Windows.Forms;
 | ||
|                 using System.Reflection;
 | ||
|     public class BindEvents
 | ||
|     {
 | ||
|         private XTextDocument doc;
 | ||
|         private XTextContainerElement container;
 | ||
|         public BindEvents(DCSoft.Writer.Controls.WriterControl myEditControl)
 | ||
|         {
 | ||
|             doc = myEditControl.Document;
 | ||
|             container = myEditControl.Document;
 | ||
|             
 | ||
|         }
 | ||
|         public static void MouseClickEvent(){
 | ||
| //            doc.EditorControl.FreezeUI();
 | ||
| //            
 | ||
| //            doc.EditorControl.ReleaseFreezeUI();
 | ||
| //            doc.EditorControl.UpdatePages();
 | ||
|         
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         private void SetCheckedValue(string name, bool value)
 | ||
|         {
 | ||
|             var element = doc.GetElementsByName(name).FirstElement;
 | ||
|             if (element != null)
 | ||
|             {
 | ||
|                 var pChecked = element.GetType().GetProperty(""Checked"");
 | ||
|                 pChecked.SetValue(element, value, null);
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private bool GetCheckedValue(string name)
 | ||
|         {
 | ||
|             bool? result = null;
 | ||
|             var element = doc.GetElementsByName(name).FirstElement;
 | ||
|             if (element != null)
 | ||
|             {
 | ||
|                 var pChecked = element.GetType().GetProperty(""Checked"");
 | ||
|                 result = Convert.ToBoolean(pChecked.GetValue(element, null));
 | ||
|             }
 | ||
|             return result.Value;
 | ||
|         }  
 | ||
|     }
 | ||
| }
 | ||
| ";
 | ||
|             cr = cdp.CompileAssemblyFromSource(cp, source);
 | ||
|             if (cr.Errors.HasErrors)
 | ||
|             {
 | ||
|                 MessageBox.Show("加载元素事件失败!");
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 Assembly a = cr.CompiledAssembly;
 | ||
|                 type = a.GetTypes().Where(x => x.IsClass).FirstOrDefault();
 | ||
|                 Type[] types = new Type[a.GetTypes().Length];
 | ||
|                 types[0] = typeof(WriterControl);
 | ||
|                 ConstructorInfo ci = type.GetConstructor(types);
 | ||
|                 if (ci != null)
 | ||
|                 {
 | ||
|                     object obj = ci.Invoke(new object[] { this.myEditControl });
 | ||
|                 }
 | ||
|                 //myEditControl.Document.GetElementsByName("").FirstElement;
 | ||
|             }
 | ||
|         }
 | ||
|          
 | ||
|         /// <summary>
 | ||
|         /// Handle after load document
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         private void myEditControl_DocumentLoad(object sender, EventArgs e)
 | ||
|         {
 | ||
|             myEditControl.SetDocumentParameterValue(
 | ||
|                 "当前时间",
 | ||
|                 DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
 | ||
|             //if (myEditControl.DocumentOptions.SecurityOptions.EnablePermission)
 | ||
|             //{
 | ||
|             //    // if enable permission 
 | ||
|             //    if (myEditControl.Document != null && _StartOptions.LoginInfo != null)
 | ||
|             //    {
 | ||
|             //        // User logon , add current user info to document.
 | ||
|             //        myEditControl.UserLogin(_StartOptions.LoginInfo , false );
 | ||
|             //    }
 | ||
|             //}
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// Demo of server object in document
 | ||
|         /// </summary>
 | ||
|         public class ServerObjectSample
 | ||
|         {
 | ||
|             public ServerObjectSample(frmTemplate frm)
 | ||
|             {
 | ||
|                 _Form = frm;
 | ||
|             }
 | ||
| 
 | ||
|             private frmTemplate _Form = null;
 | ||
|             public frmTemplate Form
 | ||
|             {
 | ||
|                 get
 | ||
|                 {
 | ||
|                     return _Form;
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             public string FormTitle
 | ||
|             {
 | ||
|                 get
 | ||
|                 {
 | ||
|                     return _Form.Text;
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             public string AppPath
 | ||
|             {
 | ||
|                 get
 | ||
|                 {
 | ||
|                     return Application.StartupPath;
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             private string _Name = "Zhang san";
 | ||
| 
 | ||
|             public string Name
 | ||
|             {
 | ||
|                 get { return _Name; }
 | ||
|                 set { _Name = value; }
 | ||
|             }
 | ||
| 
 | ||
|             private DateTime _Birthday = new DateTime(1990, 1, 1);
 | ||
| 
 | ||
|             public DateTime Birthday
 | ||
|             {
 | ||
|                 get { return _Birthday; }
 | ||
|                 set { _Birthday = value; }
 | ||
|             }
 | ||
| 
 | ||
|             private string _Nation = "China";
 | ||
| 
 | ||
|             public string Nation
 | ||
|             {
 | ||
|                 get { return _Nation; }
 | ||
|                 set { _Nation = value; }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         public class MyDocumentControler : DCSoft.Writer.Dom.DocumentControler
 | ||
|         {
 | ||
|             public override bool CanDelete(XTextElement element, DomAccessFlags flags)
 | ||
|             {
 | ||
| 
 | ||
|                 //if (element is XTextInputFieldElement)
 | ||
|                 //{
 | ||
|                 //    return false;
 | ||
|                 //}
 | ||
|                 return base.CanDelete(element, flags);
 | ||
|             }
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
|         #region Click_Event
 | ||
| 
 | ||
|         private void menuClose_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             this.Close();
 | ||
|         }
 | ||
| 
 | ||
|         protected override void OnClosing(CancelEventArgs e)
 | ||
|         {
 | ||
|             base.OnClosing(e);
 | ||
|         }
 | ||
| 
 | ||
|         private void menuOpenXMLDemo_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             HandleCommand(MyCommandNames.OpenXMLDemo);
 | ||
|         }
 | ||
| 
 | ||
|         private void menuOpenRTFDemo_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             HandleCommand(MyCommandNames.OpenNursingRecordDemo);
 | ||
|         }
 | ||
| 
 | ||
|         private void mOpenFormViewDemo_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             HandleCommand(MyCommandNames.OpenFormViewDemo);
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         private void mTest_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         private void mTestInsertField_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             XTextInputFieldElement field = new XTextInputFieldElement();
 | ||
|             field.FieldSettings = new InputFieldSettings();
 | ||
|             field.FieldSettings.EditStyle = InputFieldEditStyle.DropdownList;
 | ||
|             //field.InitalizeText = "测试文本ABC";
 | ||
|             field.Name = "COUNTRY";
 | ||
|             field.BackgroundText = "Please select country";
 | ||
|             field.FieldSettings.MultiSelect = false;
 | ||
|             field.Attributes = new XAttributeList();
 | ||
|             field.Attributes.SetValue("Insert time", DateTime.Now.ToLongDateString());
 | ||
|             field.OwnerDocument = myEditControl.Document;
 | ||
|             field.SetInnerTextFast("测试文本ABC");
 | ||
|             XTextInputFieldElement newField = (XTextInputFieldElement)myEditControl.ExecuteCommand("InsertInputField", true, field);
 | ||
|             if (newField != null)
 | ||
|             {
 | ||
|                 System.Console.WriteLine(newField.ToString());
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestInsertMedic_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             XTextInputFieldElement field = new XTextInputFieldElement();
 | ||
|             field.FieldSettings = new InputFieldSettings();
 | ||
|             field.FieldSettings.EditStyle = InputFieldEditStyle.DropdownList;
 | ||
|             field.FieldSettings.ListSource = new ListSourceInfo();
 | ||
|             field.FieldSettings.ListSource.SourceName = "DOCEX";
 | ||
|             field.FieldSettings.ListSource.DisplayPath = "Name";
 | ||
|             field.FieldSettings.ListSource.ValuePath = "Name";
 | ||
|             field.FieldSettings.MultiSelect = false;
 | ||
| 
 | ||
| 
 | ||
|             field.Attributes = new XAttributeList();
 | ||
|             field.Attributes.SetValue("Insert Time", DateTime.Now.ToLongDateString());
 | ||
|             field.Name = "Docex";
 | ||
|             field.BackgroundText = "药品";
 | ||
| 
 | ||
|             myEditControl.ExecuteCommand("InsertInputField", true, field);
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         private void mTestInsertImage_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             System.Drawing.Image img = Image.FromFile(System.IO.Path.Combine(Application.StartupPath, "About.jpg"));
 | ||
|             myEditControl.ExecuteCommand("InsertImage", false, img);
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestInsertString_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             myEditControl.ExecuteCommand("InsertString", false, "abc");
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestInsertRTF_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             myEditControl.ExecuteCommand("InsertRTF", false, @"{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fnil\fcharset134 \'cb\'ce\'cc\'e5;}}
 | ||
| {\colortbl ;\red255\green0\blue0;}
 | ||
| {\*\generator Msftedit 5.41.21.2510;}{\info{\horzdoc}{\*\lchars ([\'7b\'a1\'a4\'a1\'ae\'a1\'b0\'a1\'b4\'a1\'b6\'a1\'b8\'a1\'ba\'a1\'be\'a1\'b2\'a1\'bc\'a3\'a8\'a3\'ae\'a3\'db\'a3\'fb\'a1\'ea\'a3\'a4}{\*\fchars !),.:\'3b?]\'7d\'a1\'a7\'a1\'a4\'a1\'a6\'a1\'a5\'a8\'44\'a1\'ac\'a1\'af\'a1\'b1\'a1\'ad\'a1\'c3\'a1\'a2\'a1\'a3\'a1\'a8\'a1\'a9\'a1\'b5\'a1\'b7\'a1\'b9\'a1\'bb\'a1\'bf\'a1\'b3\'a1\'bd\'a3\'a1\'a3\'a2\'a3\'a7\'a3\'a9\'a3\'ac\'a3\'ae\'a3\'ba\'a3\'bb\'a3\'bf\'a3\'dd\'a3\'e0\'a3\'fc\'a3\'fd\'a1\'ab\'a1\'e9}}
 | ||
| \viewkind4\uc1\pard\sa200\sl276\slmult1\lang2052\f0\fs22 1\cf1 2\cf0 3\par
 | ||
| }");
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestInsertXML_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
| 
 | ||
|             myEditControl.XMLText = @"<?xml version='1.0'?>
 | ||
| <XTextDocument xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
 | ||
|   <XElements>
 | ||
|     <Element xsi:type='XTextBody'>
 | ||
|       <XElements>
 | ||
|         <Element xsi:type='XString'>
 | ||
|           <Text>111</Text>
 | ||
|         </Element>
 | ||
|         <Element xsi:type='XString' StyleIndex='0'>
 | ||
|           <Text>111</Text>
 | ||
|         </Element>
 | ||
|         <Element xsi:type='XString' StyleIndex='1'>
 | ||
|           <Text>11</Text>
 | ||
|         </Element>
 | ||
|         <Element xsi:type='XString' StyleIndex='2'>
 | ||
|           <Text>1</Text>
 | ||
|         </Element>
 | ||
|         <Element xsi:type='XString'>
 | ||
|           <Text>11</Text>
 | ||
|         </Element>
 | ||
|         <Element xsi:type='XParagraphFlag' />
 | ||
|       </XElements>
 | ||
|     </Element>
 | ||
|     <Element xsi:type='XTextHeader'>
 | ||
|       <XElements>
 | ||
|         <Element xsi:type='XParagraphFlag' />
 | ||
|       </XElements>
 | ||
|     </Element>
 | ||
|     <Element xsi:type='XTextFooter'>
 | ||
|       <XElements>
 | ||
|         <Element xsi:type='XParagraphFlag' />
 | ||
|       </XElements>
 | ||
|     </Element>
 | ||
|   </XElements>
 | ||
|   <Info>
 | ||
|     <CreationTime>2012-03-29T15:47:51.1032576+08:00</CreationTime>
 | ||
|     <LastModifiedTime>2012-03-29T15:47:51.1042577+08:00</LastModifiedTime>
 | ||
|     <LastPrintTime>1980-01-01T00:00:00</LastPrintTime>
 | ||
|     <Operator>DCSoft.Writer Version:1.0.1111.28434</Operator>
 | ||
|   </Info>
 | ||
|   <DefaultFont>
 | ||
|     <Size>12</Size>
 | ||
|   </DefaultFont>
 | ||
|   <ContentStyles>
 | ||
|     <Default>
 | ||
|       <FontName>宋体</FontName>
 | ||
|       <FontSize>12</FontSize>
 | ||
|     </Default>
 | ||
|     <Styles>
 | ||
|       <Style Index='0'>
 | ||
|         <Bold>true</Bold>
 | ||
|       </Style>
 | ||
|       <Style Index='1'>
 | ||
|         <FontSize>24</FontSize>
 | ||
|         <Bold>true</Bold>
 | ||
|       </Style>
 | ||
|       <Style Index='2'>
 | ||
|         <FontSize>24</FontSize>
 | ||
|       </Style>
 | ||
|     </Styles>
 | ||
|   </ContentStyles>
 | ||
|   <DocumentGraphicsUnit>Document</DocumentGraphicsUnit>
 | ||
|   <PageSettings>
 | ||
|     <DesignerPaperWidth>0</DesignerPaperWidth>
 | ||
|     <DesignerPaperHeight>0</DesignerPaperHeight>
 | ||
|   </PageSettings>
 | ||
|   <CustomerParameters />
 | ||
| </XTextDocument>";
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestUpdateData_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             //XTextInputFieldElement field = (XTextInputFieldElement)myEditControl.GetCurrentElement(typeof(XTextInputFieldElement));
 | ||
|             //field.EditorTextExt = DateTime.Now.ToString();
 | ||
|             //return;
 | ||
|             //XTextElementList xTextElementList =  this.myEditControl.Document.GetSpecifyElements(typeof(XTextInputFieldElement));
 | ||
|             //myEditControl.IsAdministrator = true;
 | ||
|             //foreach (XTextFieldElement xTextInputFieldElement in xTextElementList)
 | ||
|             //{
 | ||
|             //    if (xTextInputFieldElement.Parent is XTextInputFieldElement || xTextInputFieldElement.Parent is XTextCheckBoxElement)
 | ||
|             //    {
 | ||
|             //        myEditControl.ExecuteCommand(StandardCommandNames.DeleteField, false, xTextInputFieldElement);
 | ||
|             //        //xTextInputFieldElement.EditorDelete(true);
 | ||
|             //    }
 | ||
|             //}
 | ||
|             //return;
 | ||
| 
 | ||
| 
 | ||
|             //using (dlgProperty dlg = new dlgProperty())
 | ||
|             //{
 | ||
|             //    dlg.InstanceToShow = myEditControl.ServerObject;
 | ||
|             //    dlg.Text = "This is values before update";
 | ||
|             //    dlg.ShowDialog(this);
 | ||
|             //    int result = this.myEditControl.WriteDataSource();
 | ||
|             //    if (result == 0)
 | ||
|             //    {
 | ||
|             //        MessageBox.Show("No changed");
 | ||
|             //    }
 | ||
|             //    else
 | ||
|             //    {
 | ||
|             //        dlg.Text = "This is values after update,modified " + result + " parts";
 | ||
|             //        dlg.InstanceToShow = myEditControl.ServerObject;
 | ||
|             //        dlg.ShowDialog(this);
 | ||
|             //    }
 | ||
|             //}
 | ||
|         }
 | ||
| 
 | ||
|         private void mXML2RTF_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             MessageBox.Show("此处演示在后台将XDesigner.Writer格式的XML文档转换为RTF文档,不显示用户界面,可以运用在ASP.NET或Service程序中。");
 | ||
|             string sourceFileName = null;
 | ||
|             string descFileName = null;
 | ||
|             using (OpenFileDialog dlg = new OpenFileDialog())
 | ||
|             {
 | ||
|                 dlg.Filter = "XML文件|*.xml";
 | ||
|                 dlg.CheckFileExists = true;
 | ||
|                 dlg.ShowReadOnly = false;
 | ||
|                 dlg.Title = "请选择一个XDesigner.Writer程序保存的XML文件";
 | ||
|                 if (dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
 | ||
|                 {
 | ||
|                     sourceFileName = dlg.FileName;
 | ||
|                 }
 | ||
|                 else
 | ||
|                 {
 | ||
|                     return;
 | ||
|                 }
 | ||
|             }
 | ||
|             using (SaveFileDialog dlg = new SaveFileDialog())
 | ||
|             {
 | ||
|                 dlg.Filter = "RTF文件(*.rtf)|*.rtf";
 | ||
|                 dlg.CheckPathExists = true;
 | ||
|                 dlg.OverwritePrompt = true;
 | ||
|                 if (dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
 | ||
|                 {
 | ||
|                     descFileName = dlg.FileName;
 | ||
|                 }
 | ||
|                 else
 | ||
|                 {
 | ||
|                     return;
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             XTextDocument document = new XTextDocument();
 | ||
|             document.Load(sourceFileName, "xml");
 | ||
|             using (System.Drawing.Graphics g = document.CreateGraphics())
 | ||
|             {
 | ||
|                 document.RefreshSize(g);
 | ||
|                 document.ExecuteLayout();
 | ||
|                 document.RefreshPages();
 | ||
|                 document.Save(descFileName, "rtf");
 | ||
|             }
 | ||
|             MessageBox.Show(string.Format("成功的将“{0}”转换为“{1}”。", sourceFileName, descFileName));
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 文档内容发生改变事件
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         private void myEditControl_DocumentContentChanged(object sender, WriterEventArgs e)
 | ||
|         {
 | ||
|             //System.Console.WriteLine("");
 | ||
|             //System.Diagnostics.Debug.WriteLine(
 | ||
|             //    System.Environment.TickCount + ":" + myEditControl.DocumentContentVersion);
 | ||
|             //XTextInputFieldElement field = myEditControl.Document.CurrentField as XTextInputFieldElement;
 | ||
|             if (model.Id != 0 && delFlag)
 | ||
|             {
 | ||
|                 if (tempList.Count > myEditControl.Document.Fields.Count
 | ||
|                     || tempChkList.Count > myEditControl.Document.GetElementsByType(typeof(XTextCheckBoxElement)).Count)
 | ||
|                 {
 | ||
|                     if (MessageBox.Show("删除域将导致历史数据无法对应模板,是否继续?", "提示!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning,
 | ||
|                         MessageBoxDefaultButton.Button2) == DialogResult.No)
 | ||
|                     {
 | ||
|                         myEditControl.ExecuteCommand("Undo", false, false);
 | ||
|                         return;
 | ||
|                     }
 | ||
|                     else
 | ||
|                     {
 | ||
|                         //SetFiledID();
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|             }
 | ||
| 
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestSetInputFieldText_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             XTextInputFieldElement field = (XTextInputFieldElement)myEditControl.GetCurrentElement(
 | ||
|                 typeof(XTextInputFieldElement));
 | ||
|             if (field != null)
 | ||
|             {
 | ||
|                 // 直接设置文本输入域的内容
 | ||
|                 field.EditorTextExt = DateTime.Now.ToString();
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestInsertCheckBoxList_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             myEditControl.ExecuteCommand("InsertCheckBoxList", true, null);
 | ||
| 
 | ||
|             //myEditControl.Document.GetSpecifyElements(typeof(XTextCheckBoxElement));
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestSetStyle_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             XTextInputFieldElement field = (XTextInputFieldElement)myEditControl.Document.GetCurrentElement(typeof(XTextInputFieldElement));
 | ||
|             if (field != null)
 | ||
|             {
 | ||
|                 using (FontDialog dlg = new FontDialog())
 | ||
|                 {
 | ||
|                     dlg.Font = field.RuntimeStyle.Font.Value;
 | ||
|                     dlg.Color = field.RuntimeStyle.Color;
 | ||
|                     dlg.ShowColor = true;
 | ||
|                     if (dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
 | ||
|                     {
 | ||
|                         DocumentContentStyle newStyle = new DocumentContentStyle();
 | ||
|                         newStyle.DisableDefaultValue = true;
 | ||
|                         newStyle.Font = new XFontValue(dlg.Font);
 | ||
|                         newStyle.Color = dlg.Color;
 | ||
|                         //newStyle.BackgroundColor = Color.Yellow;
 | ||
|                         field.EditorSetContentStyle(newStyle, true);
 | ||
|                         //field.EditorText = "";
 | ||
|                         //field.EditorText = DateTime.Now.ToString();
 | ||
|                     }
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestChangeEditorTextExt_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             XTextInputFieldElement field = (XTextInputFieldElement)myEditControl.GetCurrentElement(typeof(XTextInputFieldElement));
 | ||
|             if (field != null)
 | ||
|             {
 | ||
|                 XTextElementList fields = myEditControl.Document.Fields;
 | ||
|                 XTextInputFieldElement nextField = (XTextInputFieldElement)fields.GetNextElement(field);
 | ||
|                 if (nextField != null)
 | ||
|                 {
 | ||
|                     nextField.EditorTextExt = Guid.NewGuid().ToString();
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private void mPermissionConfig_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             //using (dlgPermissionConfig dlg = new dlgPermissionConfig())
 | ||
|             //{
 | ||
|             //    dlg.Document = this.myEditControl.Document;
 | ||
|             //    if (dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
 | ||
|             //    {
 | ||
|             //        myEditControl.RefreshDocument();
 | ||
|             //    }
 | ||
|             //}
 | ||
|         }
 | ||
| 
 | ||
|         private void mLogin_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             //using (dlgLogin dlg = new dlgLogin())
 | ||
|             //{
 | ||
|             //    if (dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
 | ||
|             //    {
 | ||
|             //        myEditControl.UserLogin();
 | ||
|             //    }
 | ||
|             //}
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestChangeParagraphFormat_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             myEditControl.Document.ContentStyles.Default.SpacingBeforeParagraph = 90f;
 | ||
|             myEditControl.RefreshDocument();
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestSetHeaderFooter_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             //XTextDocument document = myEditControl.Document;
 | ||
|             //ContentBuilder bulder = new ContentBuilder(document.Header);
 | ||
|             //DocumentContentStyle dcs = new DocumentContentStyle();
 | ||
|             //dcs.FontSize = 20;
 | ||
|             //dcs.Color = System.Drawing.Color.Red;
 | ||
|             //bulder.Append("这是一段页眉    第 ", dcs);
 | ||
|             //XTextPageInfoElement pi = new XTextPageInfoElement();
 | ||
|             //pi.ValueType = PageInfoValueType.PageIndex;
 | ||
|             //pi.StyleIndex = document.ContentStyles.GetStyleIndex(dcs);
 | ||
|             //bulder.Append(pi);
 | ||
|             //bulder.Append("共 页", dcs);
 | ||
|             //XTextPageInfoElement pc = new XTextPageInfoElement();
 | ||
|             //pc.ValueType = PageInfoValueType.NumOfPages;
 | ||
|             //pc.StyleIndex = document.ContentStyles.GetStyleIndex(dcs);
 | ||
|             //bulder.Append(pc);
 | ||
|             //bulder.Append("页", dcs);
 | ||
|             //dcs = new DocumentContentStyle();
 | ||
|             //dcs.Align = DocumentContentAlignment.Center;
 | ||
|             ////dcs.BorderBottom = true;
 | ||
|             ////dcs.BorderSpacing = 10;
 | ||
|             ////dcs.BorderWidth = 1;
 | ||
|             //bulder.SetParagraphStyle(dcs);
 | ||
| 
 | ||
|             //bulder = new ContentBuilder(document.Body);
 | ||
|             //dcs = new DocumentContentStyle();
 | ||
|             //dcs.Color = System.Drawing.Color.Yellow;
 | ||
|             //bulder.Append("这是文档正文内容", dcs);
 | ||
|             //bulder.AppendParagraphFlag();
 | ||
|             //dcs = new DocumentContentStyle();
 | ||
|             //dcs.FontSize = 40;
 | ||
|             //bulder.Append("页面第二行", dcs);
 | ||
| 
 | ||
|             //bulder = new ContentBuilder(document.Footer);
 | ||
|             //dcs = new DocumentContentStyle();
 | ||
|             //dcs.FontSize = 30;
 | ||
|             //dcs.Color = System.Drawing.Color.Blue;
 | ||
|             //bulder.Append("这是页脚内容", dcs);
 | ||
| 
 | ||
|             myEditControl.Document.ContentStyles.Default.FontSize = 40;
 | ||
|             myEditControl.Document.ContentStyles.Default.Color = System.Drawing.Color.Tomato;
 | ||
|             myEditControl.Document.ContentStyles.Default.LineSpacingStyle = DCSoft.Drawing.LineSpacingStyle.SpaceSpecify;
 | ||
|             myEditControl.Document.ContentStyles.Default.LineSpacing = 60;
 | ||
|             myEditControl.RefreshDocument();
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestInsertDocument_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             myEditControl.ExecuteCommand("InsertXML", false, @"<?xml version='1.0'?><XTextDocument xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' EditorVersionString='1.1.1111.17451'><Attributes /><XElements><Element xsi:type='XTextBody'><Expressions /><Attributes /><XElements><Element xsi:type='XString' StyleIndex='1'><Text>姓名:\r\n姓名: #xm#            住址:(单位)家庭住址\r\n性别: #xb#            职业: #zy#\r\n年龄: #nl#            婚姻: #hyzk# \r\n民族: #mz#            入院日期 #ryrq#\r\n出生地: #csd#         记录日期 \r\n病史陈述者:患者本人   可靠程度:\r\n</Text></Element><Element xsi:type='XParagraphFlag'><AutoCreate>true</AutoCreate></Element></XElements></Element><Element xsi:type='XTextHeader'><Expressions /><Attributes /><XElements><Element xsi:type='XParagraphFlag' StyleIndex='0'><AutoCreate>true</AutoCreate></Element></XElements></Element><Element xsi:type='XTextFooter'><Expressions /><Attributes /><XElements><Element xsi:type='XParagraphFlag'><AutoCreate>true</AutoCreate></Element></XElements></Element></XElements><Info><CreationTime>2012-09-19T14:03:29.4695325+08:00</CreationTime><LastModifiedTime>2012-09-19T14:03:29.4695325+08:00</LastModifiedTime><LastPrintTime>1980-01-01T00:00:00</LastPrintTime><Operator>DCSoft.Writer Version:1.1.1111.28206</Operator><NumOfPage>1</NumOfPage></Info><Printing>false</Printing><UserHistories /><ContentStyles><Default xsi:type='DocumentContentStyle'><FontName>宋体</FontName><FontSize>12</FontSize></Default><Styles><Style Index='0'><Align>Center</Align></Style><Style Index='1' /></Styles></ContentStyles><DocumentGraphicsUnit>Document</DocumentGraphicsUnit><PageSettings /></XTextDocument>");
 | ||
|             //string fileName = null;
 | ||
|             //using (OpenFileDialog dlg = new OpenFileDialog())
 | ||
|             //{
 | ||
|             //    dlg.Filter = "*.xml|*.xml";
 | ||
|             //    dlg.CheckFileExists = true;
 | ||
|             //    if (dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
 | ||
|             //    {
 | ||
|             //        fileName = dlg.FileName;
 | ||
|             //    }
 | ||
|             //    else
 | ||
|             //    {
 | ||
|             //        return;
 | ||
|             //    }
 | ||
|             //}
 | ||
|             //XTextDocument document = new XTextDocument();
 | ||
|             //document.Load(fileName, FileFormat.XML);
 | ||
|             //XTextElementList list = document.Elements;
 | ||
|             //myEditControl.Document.ImportElements(list);
 | ||
|             //document.DocumentControler.InsertElements(list);
 | ||
| 
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
|         private void mInsertXML_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
| 
 | ||
|             //            XTextElement element = myEditControl.Document.CurrentElement;
 | ||
|             //DocumentContentStyle style = new DocumentContentStyle();
 | ||
|             //style.Bold = true;
 | ||
|             //element.Style = style;
 | ||
|             //myEditControl.RefreshDocument();
 | ||
|             using (OpenFileDialog dlg = new OpenFileDialog())
 | ||
|             {
 | ||
|                 dlg.Filter = "*.xml|*.xml";
 | ||
|                 dlg.CheckFileExists = true;
 | ||
|                 if (dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
 | ||
|                 {
 | ||
|                     using (System.IO.Stream stream = dlg.OpenFile())
 | ||
|                     {
 | ||
|                         myEditControl.ExecuteCommand("InsertXML", false, stream);
 | ||
|                     }
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestSetDefaultStyle_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             myEditControl.ExecuteCommand(
 | ||
|                 "SetDefaultStyle",
 | ||
|                 false,
 | ||
|                 "Align:Center;LineSpacingStyle:SpaceSpecify;LineSpacing:80");
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 使用本地文件系统
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         private void mLocalFileSystem_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             //mLocalFileSystem.Checked = true;
 | ||
|             //mDBFileSystem.Checked = false;
 | ||
|             //// 更换后台的服务对象
 | ||
|             ////myEditControl.AppHost.SetDataProvider(new DefaultDataProvider());
 | ||
|             //myEditControl.AppHost.FileSystems.Docuemnt = DCSoft.Writer.Data.DefaultFileSystem.Instance;
 | ||
|             //myEditControl.AppHost.FileSystems.Template = DCSoft.Writer.Data.DefaultFileSystem.Instance;
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 使用数据库文件系统
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         private void mDBFileSystem_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             //mLocalFileSystem.Checked = false;
 | ||
|             //mDBFileSystem.Checked = true;
 | ||
|             //// 更换后台的服务对象
 | ||
| 
 | ||
|             //DCSoft.Writer.WinFormDemo.EMR.EMRFileSystem p = DCSoft.Writer.WinFormDemo.EMR.EMRFileSystem.Instance;
 | ||
|             ////myEditControl.AppHost.SetDataProvider(p);
 | ||
|             //myEditControl.AppHost.FileSystems.Docuemnt = p;
 | ||
|             //myEditControl.AppHost.FileSystems.Template = p;
 | ||
|         }
 | ||
| 
 | ||
|         private void toolStripMenuItem11_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             myEditControl.ExecuteCommand("InsertHtml", false, @"<table border='1'>
 | ||
|     <col width ='200px' />
 | ||
|     <col width ='100px' />
 | ||
|     <col width ='100px' />
 | ||
|     <tr bgcolor='gray'>
 | ||
|         <td>药品名称</td>
 | ||
|         <td>用药途径</td>
 | ||
|         <td>用药频次</td>
 | ||
|     </tr>
 | ||
|     <tr>
 | ||
|         <td>苯磺酸氨氯地平片</td>
 | ||
|         <td>口服</td>
 | ||
|         <td>3/日</td>
 | ||
|     </tr>
 | ||
|     <tr>
 | ||
|         <td>氯化钠注射液(0.9%)</td>
 | ||
|         <td>静脉注射</td>
 | ||
|         <td>1/日</td>
 | ||
|     </tr>
 | ||
|     <tr>
 | ||
|         <td>注射用氨曲南</td>
 | ||
|         <td>静脉注射</td>
 | ||
|         <td>1/日</td>
 | ||
|     </tr>
 | ||
| </table>");
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 显示和隐藏数据源列表功能
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         private void mDataSourceList_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             bool show = btnDataSourceList.Checked;
 | ||
|             if (show)
 | ||
|             {
 | ||
| 
 | ||
|             }
 | ||
|             this.spDataSource.Visible = show;
 | ||
|             this.tabDataSource.Visible = show;
 | ||
|             if (tabDataSource.Visible)
 | ||
|             {
 | ||
|                 // 设置为设计器使用的文档控制器
 | ||
|                 myEditControl.DocumentControler = new DocumentControlerExt();
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 // 设置为普通的文档控制器
 | ||
|                 myEditControl.DocumentControler = new DocumentControler();
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestGenerateContent_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             ////第一行页眉  医院民称
 | ||
|             //XTextDocument document = this.myEditControl.Document;
 | ||
|             //ContentBuilder bulder = new ContentBuilder(document.Header);
 | ||
|             //DocumentContentStyle dcs = new DocumentContentStyle();
 | ||
|             //dcs.FontSize = 16;
 | ||
|             //dcs.Color = System.Drawing.Color.Gray;
 | ||
|             //dcs.Align = DCSoft.Drawing.DocumentContentAlignment.Center;
 | ||
|             ////bulder.Append("XXXX人民医院\r\n", dcs);
 | ||
|             //bulder.Append(System.Configuration.ConfigurationManager.AppSettings["HospitalName"].ToString() + "\r\n", dcs);
 | ||
|             
 | ||
| 
 | ||
|             ////姓名文本输入域
 | ||
|             //XTextInputFieldElement name = new XTextInputFieldElement();
 | ||
|             //name.FieldSettings = new InputFieldSettings();
 | ||
|             //name.FieldSettings.EditStyle = InputFieldEditStyle.Text;
 | ||
|             //name.DisplayFormat = new ValueFormater();
 | ||
|             //name.ValidateStyle = new DCSoft.Common.ValueValidateStyle();
 | ||
|             ////自动绑定数据  
 | ||
|             //name.ValueBinding = new DCSoft.Writer.Data.XDataBinding();
 | ||
|             //name.ValueBinding.DataSource = "name";//数据源的名称
 | ||
|             //name.ValueBinding.AutoUpdate = true;//是否自动更新数据
 | ||
| 
 | ||
|             ////住院号文本输入域
 | ||
|             //XTextInputFieldElement inpno = new XTextInputFieldElement();
 | ||
|             //inpno.FieldSettings = new InputFieldSettings();
 | ||
|             //inpno.FieldSettings.EditStyle = InputFieldEditStyle.Text;
 | ||
|             //inpno.DisplayFormat = new ValueFormater();
 | ||
|             //inpno.ValidateStyle = new DCSoft.Common.ValueValidateStyle();
 | ||
|             ////自动绑定数据  
 | ||
|             //inpno.ValueBinding = new DCSoft.Writer.Data.XDataBinding();
 | ||
|             //inpno.ValueBinding.DataSource = "inpno";//数据源的名称
 | ||
|             //inpno.ValueBinding.AutoUpdate = true;//是否自动更新数据
 | ||
| 
 | ||
|             ////科室文本输入域
 | ||
|             //XTextInputFieldElement dept = new XTextInputFieldElement();
 | ||
|             //dept.FieldSettings = new InputFieldSettings();
 | ||
|             //dept.FieldSettings.EditStyle = InputFieldEditStyle.Text;
 | ||
|             //dept.DisplayFormat = new ValueFormater();
 | ||
|             //dept.ValidateStyle = new DCSoft.Common.ValueValidateStyle();
 | ||
|             ////自动绑定数据  
 | ||
|             //dept.ValueBinding = new DCSoft.Writer.Data.XDataBinding();
 | ||
|             //dept.ValueBinding.DataSource = "dept";//数据源的名称
 | ||
|             //dept.ValueBinding.AutoUpdate = true;//是否自动更新数据
 | ||
| 
 | ||
|             ////床号文本输入域
 | ||
|             //XTextInputFieldElement bedno = new XTextInputFieldElement();
 | ||
|             //bedno.FieldSettings = new InputFieldSettings();
 | ||
|             //bedno.FieldSettings.EditStyle = InputFieldEditStyle.Text;
 | ||
|             //bedno.DisplayFormat = new ValueFormater();
 | ||
|             //bedno.ValidateStyle = new DCSoft.Common.ValueValidateStyle();
 | ||
|             ////自动绑定数据  
 | ||
|             //bedno.ValueBinding = new DCSoft.Writer.Data.XDataBinding();
 | ||
|             //bedno.ValueBinding.DataSource = "bedno";//数据源的名称
 | ||
|             //bedno.ValueBinding.AutoUpdate = true;//是否自动更新数据
 | ||
| 
 | ||
| 
 | ||
|             ////第二行页眉  病人信息
 | ||
|             //DocumentContentStyle dcs2 = new DocumentContentStyle();
 | ||
|             //dcs2.FontSize = 12;
 | ||
|             //dcs2.Color = System.Drawing.Color.Gray;
 | ||
|             //dcs2.Align = DCSoft.Drawing.DocumentContentAlignment.Center;
 | ||
|             //bulder.Append("姓名:");
 | ||
|             //bulder.Append(name);
 | ||
|             //bulder.Append("\t");
 | ||
|             //bulder.Append("住院号:");
 | ||
|             //bulder.Append(inpno);
 | ||
|             //bulder.Append("\t");
 | ||
|             //bulder.Append("科室:");
 | ||
|             //bulder.Append(dept);
 | ||
|             //bulder.Append("\t");
 | ||
|             //bulder.Append("床号:");
 | ||
|             //bulder.Append(bedno);
 | ||
| 
 | ||
|             //bulder.SetParagraphStyle(dcs2);
 | ||
|             //myEditControl.Document.Parameters.SetValue("name", "张三");
 | ||
|             //myEditControl.Document.Parameters.SetValue("inpno", "0001");
 | ||
|             //myEditControl.Document.Parameters.SetValue("dept", "222");
 | ||
|             //myEditControl.Document.Parameters.SetValue("bedno", "333");
 | ||
|             //myEditControl.RefreshDocument();
 | ||
|             //myEditControl.ExecuteCommand("UpdateViewForDataSource", false, null);
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestLoadKBFromURL_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             //using (DCSoft.WinForms.Native.dlgInputUrl dlg = new WinForms.Native.dlgInputUrl())
 | ||
|             //{
 | ||
|             //    if (dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
 | ||
|             //    {
 | ||
|             //        string url = dlg.InputURL;
 | ||
|             //        // 注册自定义的输入域下拉列表提供者
 | ||
|             //        myEditControl.AppHost.Services.AddService(
 | ||
|             //            typeof(IListItemsProvider),
 | ||
|             //            new DCSoft.Writer.Data.DefaultListItemsProvider());
 | ||
|             //        myEditControl.ExecuteCommand("LoadKBLibrary", false, url);
 | ||
|             //    }
 | ||
|             //}
 | ||
|         }
 | ||
| 
 | ||
|         private void mLoadmodelSource_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             string xml = @"
 | ||
| <EMR_Patients>
 | ||
|    <PA_HIS_BEINHOSPITAL_CODE>233854</PA_HIS_BEINHOSPITAL_CODE>
 | ||
|    <PA_ID>00004613</PA_ID>
 | ||
|    <PA_BEINHOSPITAL_GREE>0</PA_BEINHOSPITAL_GREE>
 | ||
|    <PA_OUTPATIENT_CODE />
 | ||
|    <PA_CARDCODE />
 | ||
|    <PA_BEINHOSPITAL_CODE>00233854_0</PA_BEINHOSPITAL_CODE>
 | ||
|    <PA_PIH_PATIENT_SAPCE>神经内科</PA_PIH_PATIENT_SAPCE>
 | ||
|    <PA_CASE_HISTOR_CODE>00233854</PA_CASE_HISTOR_CODE>
 | ||
|    <PA_NAME>种永安</PA_NAME>
 | ||
|    <PA_SEX>男</PA_SEX>
 | ||
|    <PA_PRITHTIME>1940-04-06 00:00:00 </PA_PRITHTIME>
 | ||
|    <PA_HOMEPLACE>陕西扶风</PA_HOMEPLACE>
 | ||
|    <PA_NATION>01</PA_NATION>
 | ||
|    <PA_NATIONALITY>003</PA_NATIONALITY>
 | ||
|    <PA_IDENTITYCARD />
 | ||
|    <PA_WORK_UNIT>扶风县绛帐镇前进村一组</PA_WORK_UNIT>
 | ||
|    <PA_WORKADRESS>扶风县绛帐镇前进村一组</PA_WORKADRESS>
 | ||
|    <PA_W_POSTALCODE>722206</PA_W_POSTALCODE>
 | ||
|    <PA_W_PHONE>5281655</PA_W_PHONE>
 | ||
|    <PA_RPE_ADDRESS>扶风县绛帐镇前进村一组</PA_RPE_ADDRESS>
 | ||
|    <PA_RPE_POSTALCODE>722206</PA_RPE_POSTALCODE>
 | ||
|    <PA_RPE_PHONE>5281655</PA_RPE_PHONE>
 | ||
|    <PA_LINKMAN_NAME>种周强</PA_LINKMAN_NAME>
 | ||
|    <PA_LM_RAPPORT>父子</PA_LM_RAPPORT>
 | ||
|    <PA_LM_ADDRESS>扶风县绛帐镇前进村一组</PA_LM_ADDRESS>
 | ||
|    <PA_LM_PHONE>5281655</PA_LM_PHONE>
 | ||
|    <PA_INSURANCE_CE_CODE />
 | ||
|    <PA_INSURANCE_CE_NAME />
 | ||
|    <PA_INSURANCE_CODE />
 | ||
|    <PA_PERSONNEL_TYPE />
 | ||
|    <PA_PATIENT_SOURCE>门诊</PA_PATIENT_SOURCE>
 | ||
|    <PA_DOCTOR />
 | ||
|    <PA_DIAGNOSE>脑梗死</PA_DIAGNOSE>
 | ||
|    <PA_DIAGNOSE_NURSE />
 | ||
|    <PA_NURCS>一般</PA_NURCS>
 | ||
|    <PA_FASHION>门诊</PA_FASHION>
 | ||
|    <PA_RY_TIME>2010-06-17 08:00:00 </PA_RY_TIME>
 | ||
|    <PA_FORESTALLDIAGNOSE>无</PA_FORESTALLDIAGNOSE>
 | ||
|    <PA_RYKB>05</PA_RYKB>
 | ||
|    <PA_PAYMENT_NURCS>合疗</PA_PAYMENT_NURCS>
 | ||
|    <PA_BINGAN_CODE>00233854</PA_BINGAN_CODE>
 | ||
|    <PA_AMRRIAGE_STATUS>已婚</PA_AMRRIAGE_STATUS>
 | ||
|    <PA_OCCUPATION>02</PA_OCCUPATION>
 | ||
|    <PA_DISPLACE_KB>05</PA_DISPLACE_KB>
 | ||
|    <PA_DISPLACE_BEINHOSPITAL />
 | ||
|    <PA_LEAVEHOSPITAL_BE>05</PA_LEAVEHOSPITAL_BE>
 | ||
|    <PA_LEAVEHOSPITAL_PATIENT>2010-07-10 15:15:19</PA_LEAVEHOSPITAL_PATIENT>
 | ||
|    <PA_LEAVEHOSPITAL_NURCS />
 | ||
|    <PA_PIH_NUMBEROFDAYS />
 | ||
|    <PA_CURE_TYPE />
 | ||
|    <PA_DIAGNOSE_DATE>1901-01-01 00:00:00 </PA_DIAGNOSE_DATE>
 | ||
|    <PA_DIAGNOSE_DR>000036</PA_DIAGNOSE_DR>
 | ||
|    <PA_STATE>正常</PA_STATE>
 | ||
|    <PA_BEINHOSPITAL_BOOKER>000036</PA_BEINHOSPITAL_BOOKER>
 | ||
|    <PA_BEINHOSPITAL_BOOKINTIME>2010-06-17 10:16:16 </PA_BEINHOSPITAL_BOOKINTIME>
 | ||
|    <PA_LEAVEHOSPITAL_BOOKER>000036</PA_LEAVEHOSPITAL_BOOKER>
 | ||
|    <PA_LEAVEHOSPITAL_BOOKINTIME>2010-10-10 15:15:19 </PA_LEAVEHOSPITAL_BOOKINTIME>
 | ||
|    <PA_PYM>ZYA</PA_PYM>
 | ||
| </EMR_Patients>";
 | ||
|             myEditControl.SetDocumentParameterValueXml("EMR_Patients", xml);
 | ||
|             myEditControl.ExecuteCommand(
 | ||
|                 "FileOpen",
 | ||
|                 false,
 | ||
|                 System.IO.Path.Combine(
 | ||
|                     Application.StartupPath,
 | ||
|                     @"EMR\TemplateDocument\InpatientInfo.xml"));
 | ||
|             myEditControl.ExecuteCommand("FormViewMode", false, null);
 | ||
|         }
 | ||
| 
 | ||
|         private void mGetmodelSource_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             int result = (int)myEditControl.ExecuteCommand("UpdateDataSourceForView", false, null);
 | ||
|             string xml = myEditControl.GetDocumentParameterValueXml("EMR_Patients");
 | ||
|             System.Diagnostics.Debug.WriteLine(xml);
 | ||
|             MessageBox.Show(result.ToString());
 | ||
|         }
 | ||
| 
 | ||
|         private void mTestSomething_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
|         private void mInsertSimpleList_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             XTextInputFieldElement field = new XTextInputFieldElement();
 | ||
|             field.BackgroundText = "请选择值";
 | ||
|             field.FieldSettings = new InputFieldSettings();
 | ||
|             field.FieldSettings.EditStyle = InputFieldEditStyle.DropdownList;
 | ||
|             field.FieldSettings.ListSource = new DCSoft.Writer.Data.ListSourceInfo();
 | ||
|             field.FieldSettings.ListSource.RuntimeItems = new ListItemCollection();
 | ||
|             field.FieldSettings.ListSource.RuntimeItems.AddByTextValue("列表项目1", "数值1");
 | ||
|             field.FieldSettings.ListSource.RuntimeItems.AddByTextValue("列表项目2", "数值2");
 | ||
|             field.FieldSettings.ListSource.RuntimeItems.AddByTextValue("列表项目3", "数值3");
 | ||
|             field.FieldSettings.ListSource.RuntimeItems.AddByTextValue("列表项目4", "数值4");
 | ||
|             field.FieldSettings.ListSource.RuntimeItems.AddByTextValue("列表项目5", "数值5");
 | ||
|             myEditControl.ExecuteCommand("InsertInputField", false, field);
 | ||
|         }
 | ||
| 
 | ||
|         private void mPrintMultiDocument_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             using (DCSoft.Writer.Printing.WriterPrintDocument pd = new DCSoft.Writer.Printing.WriterPrintDocument())
 | ||
|             {
 | ||
|                 while (true)
 | ||
|                 {
 | ||
|                     using (OpenFileDialog dlg = new OpenFileDialog())
 | ||
|                     {
 | ||
|                         dlg.Filter = "*.xml|*.xml";
 | ||
|                         dlg.CheckFileExists = true;
 | ||
|                         if (dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
 | ||
|                         {
 | ||
|                             XTextDocument doc = new XTextDocument();
 | ||
|                             doc.Load(dlg.FileName, "xml");
 | ||
|                             using (Graphics g = doc.CreateGraphics())
 | ||
|                             {
 | ||
|                                 doc.RefreshSize(g);
 | ||
|                             }
 | ||
|                             doc.ExecuteLayout();
 | ||
|                             doc.RefreshPages();
 | ||
|                             pd.Documents.Add(doc);
 | ||
|                         }
 | ||
|                         else
 | ||
|                         {
 | ||
|                             break;
 | ||
|                         }
 | ||
|                     }
 | ||
|                 }
 | ||
|                 if (pd.Documents.Count > 0)
 | ||
|                 {
 | ||
|                     using (PrintPreviewDialog dlg = new PrintPreviewDialog())
 | ||
|                     {
 | ||
|                         dlg.Document = pd;
 | ||
|                         pd.UpdateDocumentsState();
 | ||
|                         dlg.ShowDialog(this);
 | ||
|                         pd.RestoreDocumentsState();
 | ||
|                     }
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private void mPrintDocumentBackground_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             using (OpenFileDialog dlg = new OpenFileDialog())
 | ||
|             {
 | ||
|                 dlg.Filter = "*.xml|*.xml";
 | ||
|                 dlg.CheckFileExists = true;
 | ||
|                 if (dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
 | ||
|                 {
 | ||
|                     // 后台加载文档
 | ||
|                     string fileName = dlg.FileName;
 | ||
|                     XTextDocument document = new XTextDocument();
 | ||
|                     document.Load(fileName, "xml");
 | ||
|                     // 创建后台打印器
 | ||
|                     DocumentPrinter dp = new DocumentPrinter();
 | ||
|                     // 添加要打印的文档,可以添加多个
 | ||
|                     dp.Documents.Add(document);
 | ||
|                     // 准备打印
 | ||
|                     dp.PreparePrintDocument();
 | ||
|                     // 执行后台打印
 | ||
|                     dp.PrintDocument(false);
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private void mDocumentValidate_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             ValueValidateResultList list = (ValueValidateResultList)myEditControl.ExecuteCommand("DocumentValueValidate", false, null);
 | ||
|             if (list != null && list.Count > 0)
 | ||
|             {
 | ||
|                 // 校验不成功
 | ||
|                 StringBuilder str = new StringBuilder();
 | ||
|                 foreach (ValueValidateResult item in list)
 | ||
|                 {
 | ||
|                     if (str.Length > 0)
 | ||
|                     {
 | ||
|                         str.Append(Environment.NewLine);
 | ||
|                     }
 | ||
|                     str.Append(item.Element.ID + ":" + item.Message);
 | ||
|                 }
 | ||
|                 MessageBox.Show(str.ToString());
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private void mViewSelectionXML_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             string xmlSource = Convert.ToString(
 | ||
|                 this.myEditControl.ExecuteCommand("GetSelectionContentText", true, "xml"));
 | ||
|             System.Diagnostics.Debug.WriteLine(xmlSource);
 | ||
|         }
 | ||
| 
 | ||
|         private void mViewSelectionRTF_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             string rtfSource = Convert.ToString(
 | ||
|                 this.myEditControl.ExecuteCommand("GetSelectionContentText", true, "rtf"));
 | ||
|             System.Diagnostics.Debug.WriteLine(rtfSource);
 | ||
|         }
 | ||
| 
 | ||
|         private void mInsertXmlFromClipboard_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             string xml = Clipboard.GetText();
 | ||
|             if (string.IsNullOrEmpty(xml) == false)
 | ||
|             {
 | ||
|                 myEditControl.ExecuteCommand("InsertXML", false, xml);
 | ||
|             }
 | ||
|         } 
 | ||
| 
 | ||
|         #endregion Click_Event
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// Handle commands
 | ||
|         /// </summary>
 | ||
|         /// <param name="Command">command name</param>
 | ||
|         public void HandleCommand(string Command)
 | ||
|         {
 | ||
|             if (Command == null)
 | ||
|                 return;
 | ||
|             Command = Command.Trim();
 | ||
|             try
 | ||
|             {
 | ||
|                 switch (Command)
 | ||
|                 {
 | ||
|                     case MyCommandNames.OpenXMLDemo:
 | ||
|                         myEditControl.ExecuteCommand("FormViewMode", false, false);
 | ||
|                         OpenDemoFile("DCSoft.Writer.WinFormDemo.DemoFile.demo.xml", "xml");
 | ||
|                         break;
 | ||
|                     case MyCommandNames.OpenFormViewDemo:
 | ||
|                         if (OpenDemoFile("DCSoft.Writer.WinFormDemo.DemoFile.FormViewModeDemo.xml", "xml"))
 | ||
|                         {
 | ||
|                             myEditControl.ExecuteCommand("FormViewMode", false, true);
 | ||
|                             myEditControl.AutoScrollPosition = new Point(0, 0);
 | ||
|                             myEditControl.UpdateTextCaret();
 | ||
|                         }
 | ||
|                         break;
 | ||
|                     case MyCommandNames.OpenNursingRecordDemo:
 | ||
|                         {
 | ||
|                             if (OpenDemoFile("DCSoft.Writer.WinFormDemo.DemoFile.NursingRecord.xml", "xml"))
 | ||
|                             {
 | ||
|                                 myEditControl.ExecuteCommand("FormViewMode", false, false);
 | ||
|                             }
 | ||
|                         }
 | ||
|                         break;
 | ||
| 
 | ||
|                     default:
 | ||
| #if DEBUG
 | ||
|                         this.Alert("Bad command:" + Command);
 | ||
| #endif
 | ||
|                         break;
 | ||
|                 }
 | ||
|             }
 | ||
|             catch (Exception ext)
 | ||
|             {
 | ||
|                 //this.Alert(ResourceStrings._EXEERR + ext.ToString());
 | ||
|                 //this.Status = ResourceStrings._EXEERR + ext.Message;
 | ||
|                 this.Alert("执行命令错误:" + ext.ToString());
 | ||
|                 this.Status = "错误:" + ext.Message;
 | ||
|             }
 | ||
|             this.UpdateFormText();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// Show a message box
 | ||
|         /// </summary>
 | ||
|         /// <param name="msg">message text</param>
 | ||
|         private void Alert(string msg)
 | ||
|         {
 | ||
|             MessageBox.Show(this, msg, this.Text);
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// get or set main status text
 | ||
|         /// </summary>
 | ||
|         private string Status
 | ||
|         {
 | ||
|             get { return this.lblStatus.Text; }
 | ||
|             set { this.lblStatus.Text = value; this.Update(); }
 | ||
|         }
 | ||
| 
 | ||
|         private void UpdateFormText()
 | ||
|         {
 | ||
|             //string text = System.Configuration.ConfigurationManager.AppSettings["HospitalName"].ToString();
 | ||
|             string text = "";
 | ||
|             if (string.IsNullOrEmpty(this.myEditControl.Document.Info.Title) == false)
 | ||
|             {
 | ||
|                 text = myEditControl.Document.Info.Title + "-" + text;
 | ||
|             }
 | ||
|             else if (string.IsNullOrEmpty(this.myEditControl.Document.FileName) == false)
 | ||
|             {
 | ||
|                 text = myEditControl.Document.FileName + " - " + text;
 | ||
|             }
 | ||
|             if (myEditControl.Document.Modified)
 | ||
|             {
 | ||
|                 text = text + " *";
 | ||
|             }
 | ||
|             this.Text = text;
 | ||
|         }
 | ||
| 
 | ||
|         private bool OpenDemoFile(string resourceName, string format)
 | ||
|         {
 | ||
|             this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
 | ||
|             try
 | ||
|             {
 | ||
|                 System.IO.Stream stream = this.GetType().Assembly.GetManifestResourceStream(resourceName);
 | ||
|                 if (stream != null)
 | ||
|                 {
 | ||
|                     using (stream)
 | ||
|                     {
 | ||
|                         FileOpenCommandParameter fcp = new FileOpenCommandParameter();
 | ||
|                         fcp.Format = format;
 | ||
|                         //fcp.FileName = resourceName;
 | ||
|                         fcp.InputStream = stream;
 | ||
|                         bool result = (bool)myEditControl.ExecuteCommand("FileOpen", true, fcp);
 | ||
|                         if (result == false)
 | ||
|                         {
 | ||
|                             this.Status = fcp.Message;
 | ||
|                         }
 | ||
|                         return result;
 | ||
|                     }
 | ||
|                 }
 | ||
|                 return false;
 | ||
|             }
 | ||
|             finally
 | ||
|             {
 | ||
|                 this.Cursor = System.Windows.Forms.Cursors.Default;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// handle element hover event
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         private void myEditControl_HoverElementChanged(object sender, EventArgs e)
 | ||
|         {
 | ||
|             provider.Document = myEditControl.Document;
 | ||
|             provider.Prefix = '{';
 | ||
|             provider.Endfix = '}';
 | ||
|             XTextRange range;
 | ||
|             try
 | ||
|             {
 | ||
|                 range = provider.GetRange(myEditControl.HoverElement);
 | ||
|             }
 | ||
|             catch (Exception  )
 | ||
|             {
 | ||
|                 range = null;
 | ||
|             }
 | ||
|             if (range != null)
 | ||
|             {
 | ||
|                 this.myEditControl.HighlightRange = new HighlightInfo(range);
 | ||
| 
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 this.myEditControl.HighlightRange = null;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// Handle selection changed event in editor control
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         private void myEditControl_SelectionChanged(object sender, EventArgs e)
 | ||
|         {
 | ||
|             //XTextFieldElement field = (XTextFieldElement)myEditControl.Document.CurrentField;
 | ||
|             //field.EditorTextExt = "bbb";
 | ||
| 
 | ||
|             provider.Document = myEditControl.Document;
 | ||
|             provider.Prefix = '{';
 | ||
|             provider.Endfix = '}';
 | ||
|             XTextRange range = provider.GetRange(myEditControl.CurrentElement);
 | ||
|             if (range != null)
 | ||
|             {
 | ||
|                 myEditControl.HighlightRange = new HighlightInfo(range);
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 myEditControl.HighlightRange = null;
 | ||
|             }
 | ||
| 
 | ||
| 
 | ||
|             XTextLine line = myEditControl.Document.CurrentContentElement.CurrentLine;
 | ||
|             if (line != null && line.OwnerPage != null)
 | ||
|             {
 | ||
|                 string txt =
 | ||
|                     string.Format("第 {0} 页 第 {1} 行 第 {2} 列",
 | ||
|                     Convert.ToString(line.OwnerPage.PageIndex),
 | ||
|                     Convert.ToString(myEditControl.CurrentLineIndexInPage),
 | ||
|                     Convert.ToString(myEditControl.CurrentColumnIndex));
 | ||
|                 if (myEditControl.Selection.Length != 0)
 | ||
|                 {
 | ||
|                     txt = txt + string.Format(
 | ||
|                         " 选择了{0}个元素",
 | ||
|                         Math.Abs(myEditControl.Selection.Length));
 | ||
|                 }
 | ||
|                 Point p = myEditControl.SelectionStartPosition;
 | ||
|                 this.lblPosition.Text = txt + " X:" + p.X + " Y:" + p.Y;
 | ||
|             }
 | ||
|             UpdateFormText();
 | ||
| 
 | ||
|             SetContextMenu();
 | ||
| 
 | ||
|             if (this.dstvControler != null)
 | ||
|             {
 | ||
|                 this.dstvControler.UpdateCurrentDataSourceNode(myEditControl);
 | ||
|             }
 | ||
|             //this.Text = myEditControl.CaretPosition.ToString();
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 设置编辑器控件的快捷菜单
 | ||
|         /// </summary>
 | ||
|         private void SetContextMenu()
 | ||
|         {
 | ||
|             if (Math.Abs(myEditControl.Selection.Length) == 1)
 | ||
|             {
 | ||
|                 XTextElement element = this.myEditControl.Selection.ContentElements[0];
 | ||
|                 if (element is XTextImageElement)
 | ||
|                 {
 | ||
|                     this.myEditControl.ContextMenuStrip = this.cmImage;
 | ||
|                     return;
 | ||
|                 }
 | ||
|             }
 | ||
|             bool isInCell = false;
 | ||
|             if (myEditControl.Selection.Cells != null && myEditControl.Selection.Cells.Count > 0)
 | ||
|             {
 | ||
|                 isInCell = true;
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 XTextContainerElement c = null;
 | ||
|                 int index = 0;
 | ||
|                 myEditControl.Document.Content.GetCurrentPositionInfo(out c, out index);
 | ||
|                 if (c is XTextTableCellElement || c.OwnerCell != null)
 | ||
|                 {
 | ||
|                     isInCell = true;
 | ||
|                 }
 | ||
|             }
 | ||
|             if (isInCell)
 | ||
|             {
 | ||
|                 myEditControl.ContextMenuStrip = cmTableCell;
 | ||
|                 return;
 | ||
|             }
 | ||
|             myEditControl.ContextMenuStrip = cmEdit;
 | ||
|         }
 | ||
| 
 | ||
|         public void frmTemplate_FormClosing(object sender, FormClosingEventArgs e)
 | ||
|         {
 | ||
|             if (this.Text.Trim().EndsWith("*"))
 | ||
|             {
 | ||
|                 DialogResult result = MessageBox.Show("文件已经修改,尚未保存,是否保存文件?", "系统提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question,
 | ||
|                         MessageBoxDefaultButton.Button1);
 | ||
|                 switch(result)
 | ||
|                 {
 | ||
|                     case DialogResult.Yes :
 | ||
|                         try
 | ||
|                         {
 | ||
|                             InsertOrUpdate();
 | ||
|                         }
 | ||
|                         catch (Exception exp)
 | ||
|                         {
 | ||
|                             MessageBox.Show(exp.Message);
 | ||
|                             e.Cancel = true;
 | ||
|                         }
 | ||
|                         break;
 | ||
|                     case DialogResult.No :
 | ||
|                         break;
 | ||
|                     case DialogResult.Cancel :
 | ||
|                         e.Cancel = true;
 | ||
|                         break;
 | ||
|                     default:
 | ||
|                         break;
 | ||
|                 }
 | ||
|             }
 | ||
|             //bool b = (bool)myEditControl.ExecuteCommand("FileQueryExit", true, null);
 | ||
|             //if (b == false)
 | ||
|             //{
 | ||
|             //    e.Cancel = true;
 | ||
|             //}
 | ||
|         }
 | ||
| 
 | ||
|         private void myEditControl_StatusTextChanged(object sender, EventArgs e)
 | ||
|         {
 | ||
|             lblStatus.Text = myEditControl.StatusText;
 | ||
|             this.statusStrip1.Refresh();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 编辑器中执行命令时的错误处理
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="args"></param>
 | ||
|         private void myEditControl_CommandError(object sender, CommandErrorEventArgs args)
 | ||
|         {
 | ||
|             MessageBox.Show(
 | ||
|                 this,
 | ||
|                 args.CommandName + "\r\n" + args.Exception.ToString(),
 | ||
|                 this.Text,
 | ||
|                 MessageBoxButtons.OK,
 | ||
|                 MessageBoxIcon.Exclamation);
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
|         private void myEditControl_AfterExecuteCommand(object sender, WriterCommandEventArgs args)
 | ||
|         {
 | ||
|             if (args.Name == "LoadKBLibrary")
 | ||
|             {
 | ||
|                 tvwKB.KBLibrary = myEditControl.AppHost.KBLibrary;
 | ||
|                 tvwKB.RefreshView();
 | ||
|             }
 | ||
|             //SetFiledID();
 | ||
|             //MessageBox.Show(args.Name);
 | ||
|         }
 | ||
| 
 | ||
|         #region 数据源树状列表操作相关的代码
 | ||
| 
 | ||
|         private void myEditControl_EventCanInsertObject(object sender, CanInsertObjectEventArgs args)
 | ||
|         {
 | ||
|             if (this.dstvControler != null)
 | ||
|             {
 | ||
|                 this.dstvControler.HandleCanInsertObjectEvent(myEditControl, args);
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private void myEditControl_EventInsertObject(object sender, InsertObjectEventArgs args)
 | ||
|         {
 | ||
|             //if (this.dstvControler != null)
 | ||
|             //{
 | ||
|             //    this.dstvControler.HandleInsertObjectEvent(myEditControl, args);
 | ||
|             //}
 | ||
|             object obj = args.DataObject.GetData(args.DataObject.GetFormats()[0]);
 | ||
|             //SetFiledID();
 | ||
|         }
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 保存
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         private void toolStripButton2_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             //SetFiledID();
 | ||
| 
 | ||
|             //myEditControl.Document.Style.RemoveSameStyle(myEditControl.Document.Style);
 | ||
|             //XTextElement elementTemp = myEditControl.Document.GetElementById("D201605091434574203336");
 | ||
|             //if (elementTemp != null)
 | ||
|             //{
 | ||
|             //    elementTemp.Text = "哎呀我去!";
 | ||
|             //    if (elementTemp is XTextCheckBoxElement)
 | ||
|             //    {
 | ||
|             //        ((XTextCheckBoxElement)elementTemp).Checked = true;
 | ||
|             //    }
 | ||
|             //}
 | ||
|             try
 | ||
|             {
 | ||
|                 InsertOrUpdate();
 | ||
|             }
 | ||
|             catch (Exception exp)
 | ||
|             {
 | ||
|                 MessageBox.Show(exp.Message);
 | ||
|                 return;
 | ||
|             }
 | ||
|             //XTextElementList xlist = myEditControl.Document.Elements;
 | ||
| 
 | ||
|             //XTextElementList xchkList = myEditControl.Document.GetElementsByType(typeof(XTextCheckBoxElement));
 | ||
|             //foreach (XTextElement element in xchkList)
 | ||
|             //{
 | ||
|             //    XTextCheckBoxElement field = (XTextCheckBoxElement)element;
 | ||
|             //    field.ID = field.GroupName;
 | ||
|                 
 | ||
|             //    Console.WriteLine(field.Name);
 | ||
|                 
 | ||
|             //}
 | ||
|             //XTextElementList xlist = myEditControl.Document.Fields;
 | ||
| 
 | ||
|             //foreach(XTextElement element in xlist)
 | ||
|             //{
 | ||
|                 
 | ||
|             //    if (element is XTextInputFieldElement)
 | ||
|             //    {
 | ||
|             //        XTextInputFieldElement field = (XTextInputFieldElement)element;
 | ||
|             //        //field.EditorTextExt = xlist.LastElement.Text;
 | ||
|             //        for (int i = 0; i < field.Elements.Count; i++)
 | ||
|             //        {
 | ||
|             //            field.Elements[i].StyleIndex = xlist.LastElement.Elements[i].StyleIndex;
 | ||
| 
 | ||
|             //            //Type type = typeof(ContentStyle);
 | ||
|             //            //DocumentContentStyle cstyle = new DocumentContentStyle();
 | ||
|             //            //System.Reflection.PropertyInfo prop = type.GetProperty("Bold");
 | ||
|             //            //prop.SetValue(cstyle, true, null);
 | ||
|             //            //object value = prop.GetValue(cstyle, null);
 | ||
|             //            //field.Elements[i].Style = cstyle;
 | ||
|             //        }
 | ||
|                     
 | ||
|                     
 | ||
|             //        //ContentStyle cstyle = field.RuntimeStyle;
 | ||
|             //        //string text = field.EditorTextExt;
 | ||
|             //        //DocumentContentStyle style =  field.Style;
 | ||
|             //        ////field.EditorTextExt = ((XTextInputFieldElement)(xlist.LastContentElement)).EditorTextExt;
 | ||
|             //        //field.EditorTextExt = xlist.LastElement.Text;
 | ||
|             //        //field.Style = xlist.LastElement.Style;
 | ||
|             //    }
 | ||
|             //}
 | ||
|             //ContentStyleList cslist = myEditControl.Document.ContentStyles.Styles;
 | ||
|             //foreach (ContentStyle element in cslist)
 | ||
|             //{
 | ||
|             //    element.ToString();
 | ||
|             //}
 | ||
|         }
 | ||
| 
 | ||
|         private void eet_ContentChanging(object sender, ContentChangingEventArgs args)
 | ||
|         {
 | ||
|             //if (args. == false)
 | ||
|             //{
 | ||
|             //    txtLog.AppendText(Environment.NewLine + "输入域 " + args.Element.ID + " 内容发生改变!");
 | ||
|             //}
 | ||
| 
 | ||
|             //MessageBox.Show(args.Element.ID);
 | ||
|         }
 | ||
| 
 | ||
|         public void InsertOrUpdate()
 | ||
|         {
 | ||
|             try
 | ||
|             {
 | ||
|                 //frmTitle frmTitle = new frmTitle();
 | ||
|                 //frmTitle.model = model;
 | ||
|                 //if (frmTitle.ShowDialog() != DialogResult.OK)
 | ||
|                 //{
 | ||
|                 //    return;
 | ||
|                 //}
 | ||
|                 //model = frmTitle.model;
 | ||
|                 if (model.XmlFileName == null || model.XmlFileName.Equals(string.Empty))
 | ||
|                 {
 | ||
|                     return;
 | ||
|                 }
 | ||
|                 model.XmlFile = myEditControl.Document.XMLText;
 | ||
|                 SetXMLStatic();
 | ||
| 
 | ||
|                 //如果不为空,则“编辑”状态
 | ||
|                 if (model.Id != 0)
 | ||
|                 {
 | ||
|                     DocumentDAL.UpdateTemplate(model);
 | ||
|                 }
 | ||
|                 else
 | ||
|                 {
 | ||
|                     DocumentDAL.InsertTemplate(model);
 | ||
|                 }
 | ||
|                 
 | ||
|                 MessageBox.Show("保存成功!");
 | ||
|                 myEditControl.Document.FileName = model.XmlFileName;
 | ||
|                 myEditControl.Document.Modified = false;
 | ||
|                 myEditControl.Document.OnSelectionChanged();
 | ||
|                 //this.FormClosing -= new System.Windows.Forms.FormClosingEventHandler(this.frmTemplate_FormClosing);
 | ||
|                 //Close();
 | ||
|             }
 | ||
|             catch (Exception exp)
 | ||
|             {
 | ||
|                 throw exp;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private void eetChk_MouseClick(object sender, ElementMouseEventArgs args)
 | ||
|         {
 | ||
|             
 | ||
|             if (args.Element is XTextCheckBoxElement || args.Element is XTextRadioBoxElement)
 | ||
|             {
 | ||
|                 //var pName = args.Element.GetType().GetProperty("Name");
 | ||
|                 //var name = pName.GetValue(args.Element, null) ?? "";
 | ||
|                 //try
 | ||
|                 //{
 | ||
|                 //    Object rslt = type.InvokeMember(
 | ||
|                 //               "MouseClickEvent",
 | ||
|                 //             BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static,
 | ||
|                 //                  null,
 | ||
|                 //                  null, // for static class
 | ||
|                 //                  new object[] { });
 | ||
|                 //}
 | ||
|                 //catch (Exception exp)
 | ||
|                 //{
 | ||
|                 //    MessageBox.Show(exp.StackTrace + ":" + exp.Message);
 | ||
|                 //}
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 创建ID
 | ||
|         /// </summary>
 | ||
|         /// <param name="obj"></param>
 | ||
|         /// <returns></returns>
 | ||
|         private string CreateID(object obj)
 | ||
|         {
 | ||
|             string id = string.Empty;
 | ||
|             id = "D" + DateTime.Now.ToString("yyyyMMddHHmmss") + obj.GetHashCode();
 | ||
|             return id;
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 设置ID
 | ||
|         /// </summary>
 | ||
|         void SetFiledID()
 | ||
|         {
 | ||
|             if (tempList.Count != myEditControl.Document.Fields.Count)
 | ||
|             {
 | ||
|                 if (tempList.Count < myEditControl.Document.Fields.Count)
 | ||
|                 {
 | ||
|                     //XTextElementList cloneList = myEditControl.Document.Fields.Clone();
 | ||
|                     myEditControl.Document.Fields.ToArray().Except(tempList.ToArray())
 | ||
|                         .ToList<XTextElement>().ForEach(element => element.ID = CreateID(element));
 | ||
|                 }
 | ||
|                 tempList.Clear();
 | ||
|                 tempList.AddRange(myEditControl.Document.Fields);
 | ||
|             }
 | ||
|             if (tempChkList.Count != myEditControl.Document.GetElementsByType(typeof(XTextCheckBoxElement)).Count)
 | ||
|             {
 | ||
|                 if (tempChkList.Count < myEditControl.Document.GetElementsByType(typeof(XTextCheckBoxElement)).Count)
 | ||
|                 {
 | ||
|                     //XTextElementList cloneList = myEditControl.Document.Fields.Clone();
 | ||
|                     myEditControl.Document.GetElementsByType(typeof(XTextCheckBoxElement)).ToArray().Except(tempChkList.ToArray())
 | ||
|                         .ToList<XTextElement>().ForEach(element => element.ID = CreateID(element));
 | ||
|                 }
 | ||
|                 tempChkList.Clear();
 | ||
|                 tempChkList.AddRange(myEditControl.Document.GetElementsByType(typeof(XTextCheckBoxElement)));
 | ||
|             }
 | ||
| 
 | ||
|             myEditControl.Document.Fields.ToArray()
 | ||
|                         .ToList<XTextElement>().Where(element => element.ID == null || element.ID==string.Empty).ToList().ForEach(element => element.ID = CreateID(element));
 | ||
| 
 | ||
|             tempChkList.ToArray()
 | ||
|                         .ToList<XTextElement>().Where(element => element.ID == null || element.ID == string.Empty).ToList().ForEach(element => element.ID = CreateID(element));
 | ||
|             UpdateListView();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 更新统计域
 | ||
|         /// </summary>
 | ||
|         private void UpdateListView()
 | ||
|         {
 | ||
|             XmlDocument doc = new XmlDocument();
 | ||
|             if (model.XmlStatic!=null && model.XmlStatic.Length > 0)
 | ||
|             {
 | ||
|                 doc.LoadXml(model.XmlStatic);
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 doc = null;
 | ||
|             }
 | ||
| 
 | ||
|             //this.listFields.BeginUpdate();
 | ||
|             //listFields.Items.Clear();
 | ||
|             //for (int i = 0; i < tempList.Count; i++)
 | ||
|             //{
 | ||
|             //    ListViewItem lvi = new ListViewItem();
 | ||
|             //    lvi.ImageIndex = 0;
 | ||
|             //    lvi.Text = ((XTextInputFieldElementBase)tempList[i]).BackgroundText;
 | ||
|             //    lvi.SubItems.Add(tempList[i].ID);
 | ||
|             //    if (doc != null)
 | ||
|             //    {
 | ||
|             //        lvi.SubItems.Add(doc.DocumentElement.SelectSingleNode("//Item[@Id='" + tempList[i].ID + "']") == null
 | ||
|             //            ? "" : doc.DocumentElement.SelectSingleNode("//Item[@Id='" + tempList[i].ID + "']").Attributes["Group"].Value);
 | ||
|             //    }
 | ||
|             //    listFields.Items.Add(lvi);
 | ||
|             //}
 | ||
|             //for (int i = 0; i < tempChkList.Count; i++)
 | ||
|             //{
 | ||
|             //    ListViewItem lvi = new ListViewItem();
 | ||
|             //    lvi.ImageIndex = 1;
 | ||
|             //    lvi.Text = ((XTextCheckBoxElement)tempChkList[i]).Name;
 | ||
|             //    lvi.SubItems.Add(tempChkList[i].ID);
 | ||
|             //    if (doc != null)
 | ||
|             //    {
 | ||
|             //        lvi.SubItems.Add(doc.DocumentElement.SelectSingleNode("//Item[@Id='" + tempChkList[i].ID + "']") == null
 | ||
|             //            ? "" : doc.DocumentElement.SelectSingleNode("//Item[@Id='" + tempChkList[i].ID + "']").Attributes["Group"].Value);
 | ||
|             //    }
 | ||
|             //    listFields.Items.Add(lvi);
 | ||
|             //}
 | ||
|             //this.listFields.EndUpdate();
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
|         private void tabDataSource_SelectedIndexChanged(object sender, EventArgs e)
 | ||
|         {
 | ||
|             if (tabDataSource.SelectedIndex == 0)
 | ||
|             {
 | ||
|                 tabDataSource.Size = new Size(331, 560);
 | ||
|             }
 | ||
|             else if (tabDataSource.SelectedIndex == 1)
 | ||
|             {
 | ||
|                 tabDataSource.Size = new Size(380, 560);
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         //private void listFields_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
 | ||
|         //{
 | ||
|         //    //myEditControl.Document.HighlightManager.HighlightRange.a
 | ||
|         //    try
 | ||
|         //    {
 | ||
|         //        for (int i = 0; i < listFields.SelectedItems.Count; i++)
 | ||
|         //        {
 | ||
|         //            XTextElement element = myEditControl.Document.GetElementById(listFields.SelectedItems[i].SubItems[1].Text);
 | ||
|         //            if (element != null)
 | ||
|         //            {
 | ||
|         //                element.Visible = true;
 | ||
|         //                element.Focus();
 | ||
|         //                //XTextRange range = new XTextRange(element, 0, element.Elements.Count);
 | ||
|         //                //provider.Document = myEditControl.Document;
 | ||
|         //                //provider.Prefix = '{';
 | ||
|         //                //provider.Endfix = '}';
 | ||
|         //                //XTextRange range = provider.CreateRange(element);
 | ||
|         //                //if (range != null)
 | ||
|         //                //{
 | ||
|         //                //    myEditControl.HighlightRange = new HighlightInfo(range);
 | ||
|         //                //}
 | ||
|         //            }
 | ||
|         //        }
 | ||
|         //    }
 | ||
|         //    catch (Exception exp)
 | ||
|         //    {
 | ||
|         //        lblStatus.Text = exp.Message;
 | ||
|         //        return;
 | ||
|         //    }
 | ||
|         //}
 | ||
| 
 | ||
|         private void btnRefresh_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             //SetFiledID();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 给XMLStatic赋值
 | ||
|         /// </summary>
 | ||
|         private void SetXMLStatic()
 | ||
|         {
 | ||
|             XmlDocument doc = new XmlDocument();
 | ||
|             XmlElement rootNode = doc.CreateElement("Root");
 | ||
|             doc.AppendChild(rootNode);
 | ||
|             XmlElement clickEnventNode = doc.CreateElement("ClickEvent");
 | ||
|             clickEnventNode.InnerText = this.rtbClick.Text;
 | ||
|             XmlElement contentChangedEnventNode = doc.CreateElement("ContentChangedEnvent");
 | ||
|             contentChangedEnventNode.InnerText = this.rtbContent.Text;
 | ||
|             rootNode.AppendChild(clickEnventNode);
 | ||
|             rootNode.AppendChild(contentChangedEnventNode);
 | ||
|             //for (int i = 0; i < listFields.Items.Count; i++)
 | ||
|             //{
 | ||
|             //    if (listFields.Items[i].SubItems.Count < 3
 | ||
|             //        || listFields.Items[i].SubItems[2].Text.Trim().Equals(string.Empty))
 | ||
|             //    {
 | ||
|             //        continue;
 | ||
|             //    }
 | ||
|             //    else
 | ||
|             //    {
 | ||
|             //        XmlElement itemNode = doc.CreateElement("Item");
 | ||
|             //        itemNode.SetAttribute("Id", listFields.Items[i].SubItems[1].Text);
 | ||
|             //        itemNode.SetAttribute("Group", listFields.Items[i].SubItems[2].Text.Trim());
 | ||
|             //        rootNode.AppendChild(itemNode);
 | ||
|             //    }
 | ||
|             //}
 | ||
|             model.XmlStatic = doc.OuterXml;
 | ||
|             //if (doc.GetElementsByTagName("Item").Count > 0)
 | ||
|             //{
 | ||
|             //    model.XmlStatic = doc.OuterXml;
 | ||
|             //}
 | ||
|         }
 | ||
| 
 | ||
|         private void tsbPrint_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|            WriterControl wc = new WriterControl();
 | ||
|            SwapByRef(myEditControl);
 | ||
| 
 | ||
|             //myEditControl.Document.EditorControl.FreezeUI();
 | ||
|             //delFlag = false;
 | ||
|             //XTextElementList tempChkList = new XTextElementList();
 | ||
|             //tempChkList = wc.Document.GetElementsByType(typeof(XTextCheckBoxElementBase));
 | ||
|             //wc.FormView = FormViewMode.Disable;
 | ||
|             //for (int i = 0; i < tempChkList.Count; i++)
 | ||
|             //{
 | ||
|             //    ((XTextCheckBoxElementBase)tempChkList[i]).Deleteable = true;
 | ||
|             //    ((XTextCheckBoxElementBase)tempChkList[i]).Select();
 | ||
|                
 | ||
|             //    //
 | ||
|             //    wc.ExecuteCommand("Delete", false, tempChkList[i]);
 | ||
|             //    wc.ExecuteCommand("InsertImage", false, tempChkList[i].CreateContentImage());
 | ||
|             //    ((XTextCheckBoxElementBase)tempChkList[i]).EditorRefreshView();
 | ||
|             //}
 | ||
|             //delFlag = true;
 | ||
|             //wc.RefreshDocument();
 | ||
|             //wc.Dispose();
 | ||
| 
 | ||
|             //myEditControl.Document.EditorControl.ReleaseFreezeUI();
 | ||
|             //myEditControl.Document.EditorControl.UpdatePages();
 | ||
|         }
 | ||
| 
 | ||
|         void SwapByRef(WriterControl a)
 | ||
|         {
 | ||
|             delFlag = false;
 | ||
|             WriterControl wc = new WriterControl();
 | ||
|             wc.Document = a.Document;
 | ||
|             XTextElementList tempChkList = new XTextElementList();
 | ||
|             tempChkList = wc.Document.GetElementsByType(typeof(XTextCheckBoxElementBase));
 | ||
|             wc.FormView = FormViewMode.Disable;
 | ||
|             for (int i = 0; i < tempChkList.Count; i++)
 | ||
|             {
 | ||
|                 ((XTextCheckBoxElementBase)tempChkList[i]).Deleteable = true;
 | ||
|                 ((XTextCheckBoxElementBase)tempChkList[i]).Select();
 | ||
| 
 | ||
|                 //
 | ||
|                 wc.ExecuteCommand("Delete", false, tempChkList[i]);
 | ||
|                 wc.ExecuteCommand("InsertImage", false, tempChkList[i].CreateContentImage());
 | ||
|                 ((XTextCheckBoxElementBase)tempChkList[i]).EditorRefreshView();
 | ||
|             }
 | ||
|             delFlag = true;
 | ||
|             wc.RefreshDocument();
 | ||
|         }
 | ||
| 
 | ||
|         private void btnID_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             //if (listFields.CheckedItems.Count == 0)
 | ||
|             //{
 | ||
|             //    MessageBox.Show("请选择数据!");
 | ||
|             //    return;
 | ||
|             //}
 | ||
|             //using (frmFieldsID frmFieldsID = new frmFieldsID())
 | ||
|             //{
 | ||
|             //    frmFieldsID.items = listFields.CheckedItems;
 | ||
|             //    frmFieldsID.FormClosing += new FormClosingEventHandler(frmFieldsID_FormClosing);
 | ||
|             //    frmFieldsID.ShowDialog();
 | ||
|             //}
 | ||
|         }
 | ||
| 
 | ||
|         private void frmFieldsID_FormClosing(object sender, FormClosingEventArgs e)
 | ||
|         {
 | ||
| 
 | ||
|              
 | ||
|         }
 | ||
| 
 | ||
|         private void tvEvent_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
 | ||
|         {
 | ||
|             try
 | ||
|             {
 | ||
|                 TreeNode node = e.Node;
 | ||
|                 XTextElement element = myEditControl.Document.GetElementById(node.Text);
 | ||
|                 if (element != null)
 | ||
|                 {
 | ||
|                     element.Visible = true;
 | ||
|                     element.Focus();
 | ||
|                 }
 | ||
|             }
 | ||
|             catch (Exception)
 | ||
|             {
 | ||
|                 throw;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private void btnNewEvent_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             //frmElementEvents = frmElementEvents.CreateInstance(this.tvEvent);
 | ||
|             //frmElementEvents.IsNew = true;
 | ||
|             //frmElementEvents.StartPosition = FormStartPosition.CenterScreen;
 | ||
|             //frmElementEvents.FormClosing += new FormClosingEventHandler(frmElementEvents_FormClosing);
 | ||
|             //frmElementEvents.Show();
 | ||
|         }
 | ||
| 
 | ||
|         void frmElementEvents_FormClosing(object sender, FormClosingEventArgs e)
 | ||
|         {
 | ||
|             //if (frmElementEvents.returnNode.Text == "")
 | ||
|             //{
 | ||
|             //    return;
 | ||
|             //}
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|     public class PrintTemplate
 | ||
|     {
 | ||
|         public int Id { get; set; }
 | ||
|         public int ParentId { get; set; }
 | ||
|         public string XmlFileName { get; set; }
 | ||
|         public string XmlFile { get; set; }
 | ||
|         public string XmlStatic { get; set; }
 | ||
|         //public int PermissionLv { get; set { value = 0; } }
 | ||
|         public int TemplateOrder { get; set; }
 | ||
|         public int IsValid { get; set; }
 | ||
|         public string OperatorNo { get; set; }
 | ||
|         public DateTime OperatorDate { get; set; }
 | ||
|         public int PrintDocumentId { get; set; }
 | ||
|     }
 | ||
| 
 | ||
|     public class PrintDocument
 | ||
|     {
 | ||
|         public int Id { get; set; }
 | ||
|         public int PatientId { get; set; }
 | ||
|         public int TemplateId { get; set; }
 | ||
|         public string XmlFileName { get; set; }
 | ||
|         public string XmlFile { get; set; }
 | ||
|         public string XmlStatic { get; set; }
 | ||
|         public int IsValid { get; set; }
 | ||
|         public string OperatorNo { get; set; }
 | ||
|         public DateTime OperatorDate { get; set; }
 | ||
|     }
 | ||
| } |