AIMS/DocumentManagement/DocumentEntity/EventCodeCompiler.cs
2023-06-05 11:17:09 +08:00

175 lines
8.3 KiB
C#

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.ContentChanged += new ContentChangedEventHandler(eet_ContentChanged);
myEditControl.GlobalEventTemplate_Element = eet;
}
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;
}
}
}