using DCSoft.Writer; using DCSoft.Writer.Controls; using DCSoft.Writer.Dom; using DocumentManagement.UI; using HelperDB; using System; using System.CodeDom.Compiler; using System.Drawing; using System.Linq; using System.Windows.Forms; namespace DocumentManagement { public class EventCodeCompiler { public CompilerResults cr; public Type type; private ElementEventTemplate eet; public bool IsLoad = false; private XTextInputFieldElement SelElement; private string SelElementName; private string SelElementValue; public EventCodeCompiler(ref WriterControl myEditControl, string strMouseClickEvent, string strContentChangedEvent) { eet = new ElementEventTemplate(); eet.MouseClick += new ElementMouseEventHandler(eetChk_MouseClick); eet.MouseDblClick += Eet_MouseDblClick; eet.KeyUp += Eet_KeyUp; eet.ContentChanged += new ContentChangedEventHandler(eet_ContentChanged); myEditControl.GlobalEventTemplate_Element = eet; } private void Eet_KeyUp(object eventSender, ElementKeyEventArgs args) { if (args.KeyCode == Keys.V && args.Control == true) { if ((eventSender as XTextDocument).CurrentInputField != null) { var element = (eventSender as XTextDocument).CurrentInputField; if (element != null) { element.Text = element.Text.Replace("\r", "").Replace("\n",""); } } } } public CompilerErrorCollection Errors { get { return cr.Errors; } } void eet_ContentChanged(object eventSender, ContentChangedEventArgs args) { if (IsLoad) { if (args.Element is XTextInputFieldElement) { var element = args.Element as XTextInputFieldElement; if (SelElementName != null && SelElementName == element.Name && SelElementValue == element.Text) return; SelElement = element; SelElementName = element.Name; SelElementValue = element.Text; DocumentExtension.SetCocumentValueText(element.WriterControl.Document.FileName, element.WriterControl.Document, element); } else if (eventSender is XTextRadioBoxElement) { var element = args.Element as XTextRadioBoxElement; DocumentExtension.SetCocumentValue(element.WriterControl.Document.FileName, element.WriterControl.Document); } } } void eetChk_MouseClick(object eventSender, ElementMouseEventArgs args) { //if (args.Element is XTextCheckBoxElement || args.Element is XTextRadioBoxElement) //{ // try // { // Object rslt = type.InvokeMember( // "MouseClickEvent", // BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, // null, // null, // for static class // new object[] { args.Element }); // } // catch (Exception exp) // { // MessageBox.Show(exp.StackTrace + ":" + exp.Message); // } // //var doc = myEditControl.Document; // //var element = args.Element; //} } private void Eet_MouseDblClick(object eventSender, ElementMouseEventArgs args) { eet.MouseDblClick -= Eet_MouseDblClick; if (IsLoad) if (args.Element is XTextInputFieldElement) { var element = args.Element as XTextInputFieldElement; if (element != null && element.Name == "Pacs") { var patientId = element.WriterControl.Document.Fields.ToArray().Where(x => x is XTextInputFieldElement && (x as XTextInputFieldElement).ID == "KB20180604104209620").FirstOrDefault(); ShowPacsText showPacsText = new ShowPacsText(); showPacsText.element = element; showPacsText.PatientNo = patientId.Text; showPacsText.ShowDialog(); //element.WriterControl.Parent as ucDocument. } else { DocumentExtension.SetCocumentValueText2(element.WriterControl.Document.FileName, element.WriterControl.Document, element); } } else if (eventSender is XTextImageElement) { if ((eventSender as XTextImageElement).Alt == "双击选择图片") { OpenFileDialog openFileDialogEmpImage = new OpenFileDialog(); openFileDialogEmpImage.Filter = "*.bmp|*.bmp|*.png|*.png|*.jpg|*.jpg|*.tiff|*.tiff";//图片格式 if (openFileDialogEmpImage.ShowDialog() == DialogResult.OK) { try { string empUpLoadPictureRealPos = openFileDialogEmpImage.FileName;//实际的文件路径+文件名 String[] empImageData = empUpLoadPictureRealPos.Split('.'); //empImageData[1]:是上传的图片的后缀名 string empUpLoadPictureFormat = empImageData[1]; //赋值图片 (eventSender as XTextImageElement).Image = new DCSoft.Drawing.XImageValue(Image.FromFile(empUpLoadPictureRealPos)); (eventSender as XTextImageElement).Title = empImageData[0]; (eventSender as XTextImageElement).EditorRefreshView(); } catch { MessageBox.Show("您选择的图片不能被读取或文件类型不对!", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } else { frmSelectPersonDoc personDoc = new frmSelectPersonDoc(); personDoc.PersonType = (eventSender as XTextImageElement).Alt == "" ? "麻醉医生" : (eventSender as XTextImageElement).Alt; personDoc.ShowDialog(); if (personDoc.SelectPersonData > 0) { int PersonId = personDoc.SelectPersonData; string SignatureStr = GetSignatureStr(PersonId); DCSoft.Drawing.XImageValue img = new DCSoft.Drawing.XImageValue(); img.ImageDataBase64String = SignatureStr; (eventSender as XTextImageElement).Image = img; (eventSender as XTextImageElement).Alt = "麻醉医生"; (eventSender as XTextImageElement).Title = PersonId.ToString(); (eventSender as XTextImageElement).EditorRefreshView(); } else { //清空图片 (eventSender as XTextImageElement).Image = null; (eventSender as XTextImageElement).Alt = "麻醉医生"; (eventSender as XTextImageElement).Title = ""; (eventSender as XTextImageElement).EditorRefreshView(); } //属性赋值判断 // (eventSender as XTextImageElement).Image.Value==null 判断是否有图片 是否签名 // (eventSender as XTextImageElement).Alt =="签名" 改为已签名或签名ID // (eventSender as XTextImageElement).Title =="标题" 存储对应ca人员介质 // (eventSender as XTextImageElement).ID =="image3" 标识Id用于定位赋值图片 } } eet.MouseDblClick += Eet_MouseDblClick; } public string GetSignatureStr(int SelectPersonData) { string SignatureStr = ""; string sql = "select SignatureStr from Person where id=" + SelectPersonData; SignatureStr = DBHelper.ExecuteScalar(sql).ToString(); return SignatureStr; } } }