using DrawGraph;
using DrawGraph.AreaManage;
using DrawGraph.BoardPack;
using DrawGraph.GUtil;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace AIMS.EF
{
public class RemarkManage : AreaManageBase
{
public RectangleFramePackObj remarkPpack;
public LinePackObj H3pack;
public LinePackObj H4pack;
public LinePackObj H5pack;
public LinePackObj H6pack;
///
/// 当前手术对象
///
private OperationRecord myOpeRecord = null;
#region 初始化备注区域
public RemarkManage() { }
public RemarkManage(object _operationRecor, ZedGraphControl _zedControl, TemplateManage _template, string _name) : base(_operationRecor, _zedControl, _template, _name)
{ init(); }
public void init()
{
//自己要用的手术对象
myOpeRecord = OpeRecord as OperationRecord;
}
///
/// 初始画的后置方法
///
public override void FollowUpMethod()
{
H3pack = template.GetPackObjectOTag("RemarkManage_LinePackObj_4");
H4pack = template.GetPackObjectOTag("RemarkManage_LinePackObj_5");
H5pack = template.GetPackObjectOTag("RemarkManage_LinePackObj_8");
H6pack = template.GetPackObjectOTag("RemarkManage_LinePackObj_9");
remarkPpack = template.GetPackObjectOTag("RemarkManage_RectangleFramePackObj_2");
}
#endregion
#region 重写的事件
///
/// 鼠标点击画板
///
///
///
public override void MouseDown(ZedGraphControl sender, MouseEventArgs e)
{
//if (e.Button == System.Windows.Forms.MouseButtons.Left)
//{
// MessageBox.Show(this.GetType().Name + "is Click Left Button");
//}
}
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)
{
}
#endregion 重写的事件结束
public override void Bind()
{
init();
//DrawRemarkDate();
}
public static List stringformat(string str, int n)
{
///
///格式化字符串长度,超出部分显示省略号,区分汉字跟字母。汉字2个字节,字母数字一个字节
///
List strList = new List();
string temp = string.Empty;
if (System.Text.Encoding.Default.GetByteCount(str) <= n)//如果长度比需要的长度n小,返回原字符串
{
strList.Add(str);
}
else
{
int t = 0;
char[] q = str.ToCharArray();
for (int i = 0; i <= q.Length; i++)
{
if (t > n)
{
strList.Add(temp);
temp = "";
t = 0;
}
if (i == q.Length)// - 1
{
strList.Add(temp);
break;
}
//判断是否汉字:
if ((int)q[i] >= 0x4E00 && (int)q[i] <= 0x9FA5)
{
temp += q[i];
t += 2;
}
//判断半角如下:
else if (q[i].ToString().Length == Encoding.Default.GetByteCount(q[i].ToString()))
{
temp += q[i];
t++;
}
//判断全角如下:
else if (2 * q[i].ToString().Length == Encoding.Default.GetByteCount(q[i].ToString()))
{
temp += q[i];
t += 2;
}
else
{
temp += q[i];
t++;
}
}
}
return strList;
}
///
/// 根据顶部加药序号,确定加药的纵向位置(以1为单位)
///
///
///
public double getYPositionByListIndex(double index, double yTop, double yBottom, int rowCount)
{
double heightT = ZedControl.Height * (yBottom - yTop);
double setpTemp = heightT / rowCount;
//求一格在实际高度中的百分比
double bfb = (setpTemp / heightT);
//两线之间度*百分比得到一格的百分比高度
double ygBFB = (yBottom - yTop) * bfb;
double y = ygBFB * index;
return y;
}
///
/// 响应可编辑区域的点击事件
///
///
///
public override void editAr_Click(object sender, EventArgs e)
{
try
{
//传过来的数据是不是可编辑的
AbleEditPackObj aEdit1S = sender as AbleEditPackObj;
if (aEdit1S == null) return;
//先把所有WINFORM组件隐藏
foreach (PackObjBase pack in PackManage.ListPob)
{
AbleEditPackObj aEdit = pack as AbleEditPackObj;
if (aEdit != null)
{
aEdit.IsVisible = false;
}
}
//这句话很重要,只操作自己管理器里的组件
AbleEditPackObj aEdit1 = PackManage.ListPob.FirstOrDefault(s => s.PackTag == aEdit1S.PackTag) as AbleEditPackObj;
//指定的组件显示
if (aEdit1 != null)
{
aEdit1.IsVisible = !aEdit1.IsVisible;
Control conl = aEdit1.CControl;
conl.Leave -= new EventHandler(txt_Leave);
conl.DoubleClick -= Conl_DoubleClick;
//根据数据源名称进行不同的事件处理
switch (aEdit1.ClassDataSourceName)
{
case "OperationRecord.Remark": //特殊情况
//TYZD_Click(aEdit1, e);
conl.Leave += new EventHandler(txt_Leave);
conl.DoubleClick += Conl_DoubleClick;
break;
}
}
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}
finally
{
}
}
private void Conl_DoubleClick(object sender, EventArgs e)
{
//frmSelectDictionary fsd = new frmSelectDictionary();
//fsd._control = sender as TextBox;
//fsd._dictionaryName = "特殊情况";
//fsd.isRadio = false;
//fsd.isShowText = true;
//fsd.ShowDialog();
}
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;
try
{
string DataSourceName = ableEdit.ClassDataSourceName;
Console.WriteLine(DataSourceName);
//拿到数据源(格式:OperationRecord.PatientRef.Bed)
bool updateOk = true;
string text = control.Text.Trim();
string value = control.Text.Trim();
if (!updateOk)
{
ableEdit.IsVisible = !ableEdit.IsVisible;
}
else
{
//设置属性的值
ableEdit.IsVisible = !ableEdit.IsVisible;
template.SetObjValue(OpeRecord, DataSourceName, text, value, true);
}
}
catch (Exception ex)
{
}
finally
{
}
}
}
}