using AIMSExtension;
using DevComponents.DotNetBar;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
namespace DrawGraph
{
///
/// 麻醉前访视单
///
public class InstrumentDataManage : AreaManageBase
{
private OperationRecord myOpeRecord = null;
private bool valChang = false; //值不变
public TextPackObj txtObj;
public TablePackObj tablePackObj;
public TablePackObj tablePackObj1;
public TablePackObj tablePackObj2;
public TablePackObj tablePackObj3;
public float chaY;
public float fontsize;
public InstrumentDataManage() { }
public InstrumentDataManage(object _operationRecor, DrawGraph.ZedGraphControl _zedControl, TemplateManage _template, string _name) : base(_operationRecor, _zedControl, _template, _name)
{ }
public void init()
{
txtObj = template.GetPackObjectOTag("InstrumentDataManage_TextPackObj_40");
tablePackObj = template.GetPackObjectOTag("InstrumentDataManage_TablePackObj_39");
tablePackObj1 = template.GetPackObjectOTag("InstrumentDataManage_TablePackObj_41");
tablePackObj2 = template.GetPackObjectOTag("InstrumentDataManage_TablePackObj_42");
tablePackObj3 = template.GetPackObjectOTag("InstrumentDataManage_TablePackObj_43");
if (tablePackObj != null)
{
chaY = (tablePackObj.EndY - tablePackObj.Y) / tablePackObj.Rows;
fontsize = txtObj.FontSize - 2;
}
myOpeRecord = OpeRecord as OperationRecord;
}
#region 重写的事件
///
/// 鼠标点击画板
///
///
///
public override void MouseDown(ZedGraphControl sender, MouseEventArgs e)
{
}
public override void MouseMove(ZedGraphControl sender, MouseEventArgs e)
{
}
public override void MouseUp(ZedGraphControl sender, MouseEventArgs e)
{
}
public override void MouseDoubleClick(ZedGraphControl sender, MouseEventArgs e)
{
}
public override void KeyUp(ZedGraphControl sender, KeyEventArgs e)
{
}
private void SetApplianceMethod(List ApplianceRecordList)
{
if (tablePackObj == null) return;
for (int i = 0; i < tablePackObj.Rows * 3 + 1; i++)
{
DelAddObj("ApplianceRecordList" + i);
DelAddObj("ApplianceRecordListOpeFront" + i);
DelAddObj("ApplianceRecordListOpeDoing" + i);
DelAddObj("ApplianceRecordListCloseFront" + i);
DelAddObj("ApplianceRecordListCloseLast" + i);
}
for (int index = 0; index < tablePackObj.Rows - 1; index++)
{
if (ApplianceRecordList.Count > 0 && index < ApplianceRecordList.Count)
{
double y = tablePackObj.RealY + chaY + chaY * index;
ZUtil.DrawText(ApplianceRecordList[index].ApplianceName, tablePackObj.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordList" + index, Color.Black, fontsize, false);
if (ApplianceRecordList[index].OpeFront != null && ApplianceRecordList[index].OpeFront != "")// && ApplianceRecordList[index].OpeFront != @"\"
ZUtil.DrawText(ApplianceRecordList[index].OpeFront, tablePackObj1.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordListOpeFront" + index, Color.Black, fontsize, false);
if (ApplianceRecordList[index].OpeDoing != null && ApplianceRecordList[index].OpeDoing != "")// && ApplianceRecordList[index].OpeDoing != @"\"
ZUtil.DrawText(ApplianceRecordList[index].OpeDoing, (tablePackObj1.EndX - tablePackObj1.X) / 4 * 1 + tablePackObj1.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordListOpeDoing" + index, Color.Black, fontsize, false);
if (ApplianceRecordList[index].CloseFront != null && ApplianceRecordList[index].CloseFront != "")//&& ApplianceRecordList[index].CloseFront != @"\"
ZUtil.DrawText(ApplianceRecordList[index].CloseFront, (tablePackObj1.EndX - tablePackObj1.X) / 4 * 2 + tablePackObj1.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordListCloseFront" + index, Color.Black, fontsize, false);
if (ApplianceRecordList[index].CloseLast != null && ApplianceRecordList[index].CloseLast != "")//&& ApplianceRecordList[index].CloseLast != @"\"
ZUtil.DrawText(ApplianceRecordList[index].CloseLast, (tablePackObj1.EndX - tablePackObj1.X) / 4 * 3 + tablePackObj1.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordListCloseLast" + index, Color.Black, fontsize, false);
continue;
}
}
for (int index = (int)tablePackObj.Rows - 1; index < tablePackObj.Rows * 2 - 2; index++)
{
if (ApplianceRecordList.Count > 0 && index < ApplianceRecordList.Count)
{
double y = tablePackObj.RealY + chaY + (chaY * (index + 1 - tablePackObj.Rows));
ZUtil.DrawText(ApplianceRecordList[index].ApplianceName, (tablePackObj.EndX - tablePackObj.X) / 3 * 1 + tablePackObj.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordList" + index, Color.Black, fontsize, false);
if (ApplianceRecordList[index].OpeFront != null && ApplianceRecordList[index].OpeFront != "")//&& ApplianceRecordList[index].OpeFront != @"\"
ZUtil.DrawText(ApplianceRecordList[index].OpeFront, tablePackObj2.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordListOpeFront" + index, Color.Black, fontsize, false);
if (ApplianceRecordList[index].OpeDoing != null && ApplianceRecordList[index].OpeDoing != "")//&& ApplianceRecordList[index].OpeDoing != @"\"
ZUtil.DrawText(ApplianceRecordList[index].OpeDoing, (tablePackObj2.EndX - tablePackObj2.X) / 4 * 1 + tablePackObj2.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordListOpeDoing" + index, Color.Black, fontsize, false);
if (ApplianceRecordList[index].CloseFront != null && ApplianceRecordList[index].CloseFront != "")//&& ApplianceRecordList[index].CloseFront != @"\"
ZUtil.DrawText(ApplianceRecordList[index].CloseFront, (tablePackObj2.EndX - tablePackObj2.X) / 4 * 2 + tablePackObj2.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordListCloseFront" + index, Color.Black, fontsize, false);
if (ApplianceRecordList[index].CloseLast != null && ApplianceRecordList[index].CloseLast != "")// && ApplianceRecordList[index].CloseLast != @"\"
ZUtil.DrawText(ApplianceRecordList[index].CloseLast, (tablePackObj2.EndX - tablePackObj2.X) / 4 * 3 + tablePackObj2.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordListCloseLast" + index, Color.Black, fontsize, false);
continue;
}
}
for (int index = (int)tablePackObj.Rows * 2 - 2; index < tablePackObj.Rows * 3 - 3; index++)
{
if (ApplianceRecordList.Count > 0 && index < ApplianceRecordList.Count)
{
double y = tablePackObj.RealY + chaY + (chaY * (index + 2 - tablePackObj.Rows * 2));
ZUtil.DrawText(ApplianceRecordList[index].ApplianceName, (tablePackObj.EndX - tablePackObj.X) / 3 * 2 + tablePackObj.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordList" + index, Color.Black, fontsize, false);
if (ApplianceRecordList[index].OpeFront != null && ApplianceRecordList[index].OpeFront != "")//&& ApplianceRecordList[index].OpeFront != @"\"
ZUtil.DrawText(ApplianceRecordList[index].OpeFront, tablePackObj3.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordListOpeFront" + index, Color.Black, fontsize, false);
if (ApplianceRecordList[index].OpeDoing != null && ApplianceRecordList[index].OpeDoing != "")//&& ApplianceRecordList[index].OpeDoing != @"\"
ZUtil.DrawText(ApplianceRecordList[index].OpeDoing, (tablePackObj3.EndX - tablePackObj3.X) / 4 * 1 + tablePackObj3.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordListOpeDoing" + index, Color.Black, fontsize, false);
if (ApplianceRecordList[index].CloseFront != null && ApplianceRecordList[index].CloseFront != "")//&& ApplianceRecordList[index].CloseFront != @"\"
ZUtil.DrawText(ApplianceRecordList[index].CloseFront, (tablePackObj3.EndX - tablePackObj3.X) / 4 * 2 + tablePackObj3.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordListCloseFront" + index, Color.Black, fontsize, false);
if (ApplianceRecordList[index].CloseLast != null && ApplianceRecordList[index].CloseLast != "")// && ApplianceRecordList[index].CloseLast != @"\"
ZUtil.DrawText(ApplianceRecordList[index].CloseLast, (tablePackObj3.EndX - tablePackObj3.X) / 4 * 3 + tablePackObj3.X + tablePackObj.RealX, y, ZedControl, "ApplianceRecordListCloseLast" + index, Color.Black, fontsize, false);
continue;
}
}
}
public override void editAr_Click(object sender, EventArgs e)
{
//传过来的数据是不是可编辑的
AbleEditPackObj editPack = sender as AbleEditPackObj;
if (editPack == null) return;
//找到这个组件
AbleEditPackObj aEdit1 = PackManage.ListPob.FirstOrDefault(s => s is AbleEditPackObj && s.PackTag == editPack.PackTag) as AbleEditPackObj;
if (aEdit1 == null) return;
txt_DoubleClick(aEdit1.CControl, null);
}
public override void Bind()
{
base.Bind();
init();
List ables = PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
foreach (PackObjBase pack in ables)
{
AbleEditPackObj ableEdit = pack as AbleEditPackObj;
if (ableEdit != null)
{
ableEdit.IsVisible = true;
if (ableEdit.ControlType == EControlType.DateTimePicker)
{
ableEdit.CControl.Leave -= new EventHandler(txt_Leave);
ableEdit.CControl.Leave += new EventHandler(txt_Leave);
}
else if (ableEdit.ControlType == EControlType.Directory)
{
ableEdit.CControl.DoubleClick -= new EventHandler(txt_DoubleClick);
ableEdit.CControl.DoubleClick += new EventHandler(txt_DoubleClick);
ableEdit.CControl.TextChanged -= new EventHandler(txt_Leave);
ableEdit.CControl.TextChanged += new EventHandler(txt_Leave);
}
else if (ableEdit.ControlType == EControlType.CheckBox)
{
Panel pan = ableEdit.CControl as Panel;
if (pan != null)
{
foreach (Control conl in pan.Controls)
{
CheckBox chBox = conl as CheckBox;
if (chBox != null)
{
chBox.CheckedChanged -= new EventHandler(txt_Leave);
chBox.CheckedChanged += new EventHandler(txt_Leave);
}
}
}
}
else if (ableEdit.ControlType == EControlType.RadioButtonList)
{
Panel pan = ableEdit.CControl as Panel;
if (pan != null)
{
foreach (Control conl in pan.Controls)
{
RadioButton chBox = conl as RadioButton;
if (chBox != null)
{
chBox.CheckedChanged -= new EventHandler(txt_Leave);
chBox.CheckedChanged += new EventHandler(txt_Leave);
chBox.Click -= new EventHandler(radio_click);
chBox.Click += new EventHandler(radio_click);
}
}
}
}
else
{
if (ableEdit.ControlType == EControlType.TextBox)
{
ableEdit.CControl.KeyDown -= new KeyEventHandler(text_keyDown);
ableEdit.CControl.KeyDown += new KeyEventHandler(text_keyDown);
ableEdit.CControl.GotFocus -= new EventHandler(txt_Focus);
ableEdit.CControl.GotFocus += new EventHandler(txt_Focus);
}
ableEdit.CControl.Leave -= new EventHandler(txt_Leave);
ableEdit.CControl.Leave += new EventHandler(txt_Leave);
}
SetAbleEditView(ableEdit);
}
}
}
private void txt_Focus(object sender, EventArgs e)
{
TextBox control = (TextBox)sender;
if (control == null) return;
AbleEditPackObj ableEdit = control.Tag as AbleEditPackObj;
if (ableEdit == null) return;
if (control.Focused == true && (ableEdit.PackValue == ableEdit.DefaultValue || ableEdit.PackValue == ""))
control.Clear();
}
private void text_keyDown(object sender, KeyEventArgs e)
{
if (e.Modifiers.CompareTo(Keys.Control) == 0 && e.KeyCode == Keys.V)
{
string val = Clipboard.GetText();
val = val.Replace("\r", "").Replace("\n", "");
Clipboard.SetText(val);
}
}
///
/// 在画完表单后,显示多选单选的默认项
///
public override void FollowUpMethod()
{
base.FollowUpMethod();
//在这里画积分
BindTempData();
List ables = PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
foreach (PackObjBase pack in ables)
{
AbleEditPackObj ableEdit = pack as AbleEditPackObj;
SetAbleEditView(ableEdit);
}
}
public override void BindTempData()
{
if (myOpeRecord != null && myOpeRecord.Id != null)
{
if (myOpeRecord.InstrumentList != null && tablePackObj != null)
{
SetApplianceMethod(myOpeRecord.InstrumentList.ApplianceRecordList);
}
}
List ables = PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
foreach (PackObjBase pack in ables)
{
pack.Draw();
}
}
///
/// 公共验证方法
///
///
public override bool Verification()
{
List editPack = PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
foreach (PackObjBase pack in editPack)
{
AbleEditPackObj ablePack = pack as AbleEditPackObj;
if (ablePack != null)
{
if (ablePack.ValidType == EValidType.IsRequired)
{
if (ablePack.PackValue.Trim() == "")
{
MessageBox.Show(pack.Descript + "不能为空");
return false;
}
};
if (ablePack.PackValue != "" && ablePack.ValidType == EValidType.IsNumber)
{
try
{
int.Parse(ablePack.PackValue);
}
catch (Exception exp)
{
MessageBox.Show(pack.Descript + "不能为空且必须是数值型");
return false;
}
};
if (ablePack.TextLength != 0)
{
if (ablePack.PackValue.Length >= ablePack.TextLength)
{
MessageBox.Show(ablePack.Descript + "长度不能超过" + ablePack.TextLength + "字");
}
}
}
}
return true;
}
#endregion 重写的事件结束
///
/// 设置可编辑组件的显示样式
///
///
private void SetAbleEditView(AbleEditPackObj ableEdit)
{
string span = "";
double spanSum = Math.Round((float)(ableEdit.OneUnitCount / 18));
for (int i = 0; i < spanSum; i++)
{
if (ableEdit.IsHorizontal == ELineType.Horizontal)
{
span += " ";
}
else
{
span += "\n";
}
}
string text = "", value = "";
if (ableEdit != null && ableEdit.CControl != null)
{
switch (ableEdit.ControlType)
{
case EControlType.RadioButtonList:
foreach (Control conl in ableEdit.CControl.Controls)
{
string spanT = span.Clone().ToString();
if (ableEdit.DfArrangement == EIsBool.True)
{
if (spanT.Length - conl.Text.Length >= conl.Text.Length)
{
spanT = spanT.Remove(spanT.Length - conl.Text.Length, conl.Text.Length);
}
}
RadioButton radio = conl as RadioButton;
if (radio.Checked)
{
text += "☑" + conl.Text + spanT;
value = conl.Text;
}
else
{
text += "□" + conl.Text + spanT;
}
}
break;
case EControlType.CheckBox:
foreach (Control conl in ableEdit.CControl.Controls)
{
string spanT = span.Clone().ToString();
if (ableEdit.DfArrangement == EIsBool.True)
{
if (spanT.Length - conl.Text.Length >= conl.Text.Length)
{
spanT = spanT.Remove(spanT.Length - conl.Text.Length, conl.Text.Length);
}
}
CheckBox radio = conl as CheckBox;
if (radio.Checked)
{
text += "☑" + conl.Text + spanT;
value += conl.Text + ",";
}
else
{
text += "□" + conl.Text + spanT;
}
}
value = value.TrimEnd(',');
break;
case EControlType.Directory:
if (ableEdit.ControlTitleText.Contains("模板"))
{
text = ableEdit.CControl.Text;
value = ableEdit.CControl.Text;
}
else
{
value = ableEdit.PackValue;
string typeName = ableEdit.ControlTitleText;
//如果是“人员,2”这种需要把人员取出来
if (ableEdit.ControlTitleText.Contains(",") || ableEdit.ControlTitleText.Contains(","))
{
string[] strs = ableEdit.ControlTitleText.Replace(",", ",").Split(',');
typeName = strs[0];
}
text = DocumentEntityMethod.GetDictionaryValuesById(ableEdit.PackValue, typeName);
}
break;
default:
text = ableEdit.CControl.Text;
value = ableEdit.CControl.Text;
break;
}
//设置属性的值
template.SetObjValue(OpeRecord, ableEdit.ClassDataSourceName, text, value);
//如果有逻辑区域,则区域进行更新。
//template.NotificationAreaBindingUpdate(template.ProjectName + "逻辑");
}
}
private void txt_DoubleClick(object sender, EventArgs e)
{
Control control = (Control)sender;
if (control == null) return;
AbleEditPackObj ableEdit = control.Tag as AbleEditPackObj;
if (ableEdit == null) return;
string DataSourceName = ableEdit.ClassDataSourceName;
try
{
string text = "", value = "";
switch (ableEdit.ControlType)
{
case EControlType.DateTimePicker:
text = DateTime.Now.ToString();
value = DateTime.Now.ToString();
control.Text = text;
break;
default:
text = ableEdit.CControl.Text;
value = ableEdit.CControl.Text;
break;
}
}
catch (Exception ex)
{
}
finally
{
template.ZedControl.Refresh();
}
}
private void radio_click(object sender, EventArgs e)
{
RadioButton control = (RadioButton)sender;
if (control == null) return;
if (!valChang)
{
control.Checked = false;
}
valChang = false;
}
private void txt_Leave(object sender, EventArgs e)
{
Control control = (Control)sender;
if (control == null) return;
AbleEditPackObj ableEdit = control.Tag as AbleEditPackObj;
if (ableEdit == null) return;
//拿到数据源(格式:OperationRecord.PatientRef.Bed)
bool updateOk = true;
try
{
SetAbleEditView(ableEdit);
if (ableEdit.ControlType == EControlType.RadioButtonList)
{
RadioButton rb = (RadioButton)sender;
if (control == null) return;
AbleEditPackObj ableEdit1 = control.Tag as AbleEditPackObj;
AbleEditPackObj selectAbleEdit = null;
//值变了
valChang = true;
}
}
catch (Exception ex)
{
//写日志
updateOk = false;
}
}
//设置打印模式,组件不显示
public override void setPrint(bool isVisible)
{
//预览状态时所可编辑组件的组件隐藏
List ables = PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
foreach (PackObjBase pack1 in ables)
{
AbleEditPackObj ableEdit = pack1 as AbleEditPackObj;
if (ableEdit != null)
{
ableEdit.IsVisible = isVisible;
if (isVisible == true)
ableEdit.IsViewBoard = EIsBool.True;
else
ableEdit.IsViewBoard = EIsBool.False;
}
}
}
public void DelAddObj(string tagName)
{
TextObj text = (TextObj)ZedControl.MasterPane.GraphObjList[tagName];
if (text != null)
ZedControl.MasterPane.GraphObjList.Remove(text);
}
}
}