WinFormTools/WinformGeneralDeveloperFrame/FrmBaseForm.cs

460 lines
16 KiB
C#

using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.Utils.Extensions;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraLayout;
using DevExpress.XtraTab;
using MES.Entity;
using WinformGeneralDeveloperFrame.Commons;
using MES;
namespace WinformGeneralDeveloperFrame
{
public partial class FrmBaseForm : XtraForm
{
public string ID = string.Empty; // 主键
private XtraTabControl xtraTab;
private GridControl gridControl;
private GridView gridView;
private LayoutControlGroup[] controlGroups;
private object DataType;
public string menucode;
public FrmBaseForm()
{
InitializeComponent();
}
public void InitFrom(XtraTabControl xtraTab, GridControl gridControl, GridView gridView, LayoutControlGroup[] controlGroups, object DataType)
{
initTools();
InitFrom(xtraTab, gridControl, gridView, controlGroups);
this.DataType = DataType;
}
public void InitFrom(XtraTabControl xtraTab, GridControl gridControl, GridView gridView, LayoutControlGroup[] controlGroups)
{
this.xtraTab = xtraTab;
this.gridControl = gridControl;
this.gridView = gridView;
this.controlGroups = controlGroups;
InitToolBtntatus(EFormStatus.eInit);
InitEvent();
}
public void InitEvent()
{
xtraTab.SelectedPageChanged += xtraTabControl1_SelectedPageChanged;
gridControl.MouseDoubleClick += gridControl_MouseDoubleClick;
}
private void xtraTabControl1_SelectedPageChanged(object sender, DevExpress.XtraTab.TabPageChangedEventArgs e)
{
}
private void gridControl_MouseDoubleClick(object sender, EventArgs e)
{
var dr = this.gridView.GetFocusedRow();
if (dr != null)
{
this.ModelDataToControl(dr);
gridControlMouseDoubleClickFunction(sender, e);
xtraTab.SelectedTabPageIndex = 1;
SetControlStatus(controlGroups, true);
InitToolBtntatus(EFormStatus.eView);
}
}
public virtual void gridControlMouseDoubleClickFunction(object sender, EventArgs e)
{
}
private void btnAdd_Click(object sender, EventArgs e)
{
xtraTab.SelectedTabPageIndex = 1;
xtraTab.TabPages[0].PageEnabled = false;
ClearScreen();
DateEdit dt = (DateEdit)this.getControl("txtcreateTime");
if (dt != null)
dt.DateTime = DateTime.Now;
LookUpEditBase look= (LookUpEditBase)this.getControl("txtcreatorId");
DateEdit dt1 = (DateEdit)this.getControl("txteditTime");
if (dt1 != null)
dt1.DateTime = DateTime.Now;
LookUpEditBase look1 = (LookUpEditBase)this.getControl("txteditorId");
if (look1 != null)
look1.EditValue = AppInfo.LoginUserInfo.id;
if (look != null)
look.EditValue = AppInfo.LoginUserInfo.id;
SetControlStatus(controlGroups, false);
InitToolBtntatus(EFormStatus.eAdd);
AddFunction();
}
public virtual void AddFunction()
{
}
private void btnEdit_Click(object sender, EventArgs e)
{
xtraTab.TabPages[0].PageEnabled = false;
DateEdit dt =(DateEdit) this.getControl("txteditTime");
if(dt!=null)
dt.DateTime=DateTime.Now;
LookUpEditBase look = (LookUpEditBase)this.getControl("txteditorId");
if (look != null)
look.EditValue = AppInfo.LoginUserInfo.id;
SetControlStatus(controlGroups, false);
InitToolBtntatus(EFormStatus.eEdit);
EditFunction();
}
public virtual void EditFunction()
{
}
private void btnSave_Click(object sender, EventArgs e)
{
xtraTab.TabPages[0].PageEnabled = true;
if (CheckInput()&&SaveFunction())
{
"保存成功!".ShowTips();
InitToolBtntatus(EFormStatus.eView);
InitgrdListDataSource();
SetControlStatus(controlGroups, true);
}
}
public void initTools()
{
List<sysToolButtonInfo> list = null;
using (var db=new MESDB())
{
list = db.sysToolButtonInfo.ToList();
}
int i = 1;
int width = 0;
foreach (sysToolButtonInfo info in list)
{
if (AppInfo.FunctionList.Contains(menucode+"-"+info.btnCode))
{
SimpleButton button = new SimpleButton();
button.Name = "btn" + info.btnCode;
button.Text = info.btnName;
button.Location = new Point(width, 5);
button.PaintStyle = PaintStyles.Light;
button.AutoSize = true;
button.ImageOptions.Image = Image.FromFile(Application.StartupPath + "\\" + info.btnIcon);
button.Click += (sender, e) =>
{
ToolFunction(sender, e);
};
this.panelControl1.AddControl(button);
width += button.Width;
}
}
}
public virtual void ToolFunction(object sender, EventArgs e)
{
string FunctionId = ((SimpleButton)sender).Name;
switch (FunctionId)
{
case "btnAdd": btnAdd_Click(sender,e); break;
case "btnEdit": btnEdit_Click(sender, e); break;
case "btnSearch": btnSearch_Click(sender, e); break;
case "btnCanle": btnCanel_Click(sender, e); break;
case "btnSave": btnSave_Click(sender,e); break;
case "btnDel": btnDel_Click(sender, e); break;
}
}
public virtual void InitgrdListDataSource()
{
}
public virtual bool SaveFunction()
{
return true;
}
private void btnSearch_Click(object sender, EventArgs e)
{
//InitToolBtntatus(EFormStatus.e);
SearchFunction();
}
public virtual void SearchFunction()
{
}
private void btnCanel_Click(object sender, EventArgs e)
{
xtraTab.TabPages[0].PageEnabled = true;
InitToolBtntatus(EFormStatus.eCanel);
CanelFunction();
SetControlStatus(controlGroups, true);
}
public virtual void CanelFunction()
{
}
public virtual bool CheckInput()
{
return true;
}
private void btnDel_Click(object sender, EventArgs e)
{
if ("确定删除?".ShowYesNoAndTips() == DialogResult.Yes)
{
if (DelFunction())
{
InitToolBtntatus(EFormStatus.eDelete);
InitgrdListDataSource();
ClearScreen();
}
}
}
public virtual bool DelFunction()
{
return true;
}
public void SetControlStatus( LayoutControlGroup[] controlGroups, bool flag)
{
if (controlGroups != null)
{
foreach (LayoutControlGroup col in controlGroups)
{
SetLayoutControlReadOnly(flag, col);
}
}
}
public void InitToolBtntatus(EFormStatus status)
{
switch (status)
{
case EFormStatus.eInit:
{
foreach (var button in panelControl1.Controls)
{
if (button.GetType().Name == "SimpleButton")
{
var btn = (SimpleButton)button;
if (btn.Name == "btnAdd" || btn.Name == "btnSearch" )
{
btn.Enabled = true;
}
else
{
btn.Enabled = false;
}
}
}
}; break;
case EFormStatus.eView:
{
foreach (var button in panelControl1.Controls)
{
if (button.GetType().Name == "SimpleButton")
{
var btn = (SimpleButton)button;
if (btn.Name == "btnAdd" || btn.Name == "btnDel" || btn.Name == "btnEdit")
{
btn.Enabled = true;
}
else
{
btn.Enabled = false;
}
}
}
}; break;
case EFormStatus.eViewTab:
{
foreach (var button in panelControl1.Controls)
{
if (button.GetType().Name == "SimpleButton")
{
var btn = (SimpleButton)button;
if (btn.Name == "btnAdd")
{
btn.Enabled = true;
}
else
{
btn.Enabled = false;
}
}
}
}; break;
case EFormStatus.eAdd:
{
foreach (var button in panelControl1.Controls)
{
if (button.GetType().Name == "SimpleButton")
{
var btn = (SimpleButton)button;
if (btn.Name == "btnCanle" || btn.Name == "btnSave" )
{
btn.Enabled = true;
}
else
{
btn.Enabled = false;
}
}
}
}; break;
case EFormStatus.eDelete:
{
foreach (var button in panelControl1.Controls)
{
if (button.GetType().Name == "SimpleButton")
{
var btn = (SimpleButton)button;
if (btn.Name == "btnAdd" || btn.Name == "btnSearch" )
{
btn.Enabled = true;
}
else
{
btn.Enabled = false;
}
}
}
}; break;
case EFormStatus.eEdit:
{
foreach (var button in panelControl1.Controls)
{
if (button.GetType().Name == "SimpleButton")
{
var btn = (SimpleButton)button;
if (btn.Name == "btnCanle" || btn.Name == "btnSave")
{
btn.Enabled = true;
}
else
{
btn.Enabled = false;
}
}
}
}; break;
case EFormStatus.eCanel:
{
foreach (var button in panelControl1.Controls)
{
if (button.GetType().Name == "SimpleButton")
{
var btn = (SimpleButton)button;
if (btn.Name == "btnAdd" || btn.Name == "btnDel"||btn.Name== "btnEdit")
{
btn.Enabled = true;
}
else
{
btn.Enabled = false;
}
}
}
}; break;
}
}
public void SetLayoutControlReadOnly(bool flag, LayoutControlGroup col)
{
foreach (var con1 in col.Items)
{
if (con1.GetType().Name == "LayoutControlItem")
{
LayoutControlItem con = con1 as LayoutControlItem;
if (con.Control == null) continue;
{
DevExpress.XtraEditors.BaseEdit d = con.Control as BaseEdit;
if (d != null && !string.IsNullOrEmpty(d.Name))
{
if (d.Name.Substring(3) == "creatorId" || d.Name.Substring(3) == "createTime" || d.Name.Substring(3) == "editorId" || d.Name.Substring(3) == "editTime" || d.Name.Substring(3) == "id")
{
d.ReadOnly = true;
}
else
{
d.ReadOnly = flag;
}
}
}
}
}
}
public void ClearScreen()
{
this.ID = "";////需要设置为空,表示新增
ClearControlValue(this);
}
public void ClearControlValue(System.Windows.Forms.Control ctrl)
{
ClearSinglelValue(ctrl);
if (ctrl.Controls.Count > 0)
{
foreach (System.Windows.Forms.Control control in ctrl.Controls)
{
ClearControlValue(control);
}
}
}
public void ClearSinglelValue(System.Windows.Forms.Control ctrl)
{
switch (ctrl.GetType().Name)
{
case "TextEdit":
case "MemoEdit":
(ctrl).Text = "";
break;
case "LookUpEdit":
((LookUpEdit)ctrl).EditValue="";
break;
case "CheckEdit":
((CheckEdit)ctrl).Checked = false;
break;
case "ComboBoxEdit":
((ComboBoxEdit)ctrl).EditValue = "";
break;
case "TreeListLookUpEdit":
((TreeListLookUpEdit)ctrl).EditValue = "";
break;
case "CheckedComboBoxEdit":
((CheckedComboBoxEdit)ctrl).SetEditValue("");
break;
case "DateEdit":
((DateEdit)ctrl).EditValue=null;
break;
}
}
private void FrmBaseForm_Load(object sender, EventArgs e)
{
InitgrdListDataSource();
}
}
/// <summary>
/// 窗体状态
/// </summary>
public enum EFormStatus
{
eViewTab = 5,//tab切换
eView = 0,//详情
eAdd = 1,//新增
eEdit = 2,//编辑
eDelete = 3,//删除
eCanel = 6,//取消
eInit=7//初始化
}
}