编程与数学 03-008 《看潮企业管理软件》项目开发 15 工序统计 4-3
摘要:本文介绍了基于DevExpress WinForms开发的"看潮企业管理软件"工序统计模块(Uf07Gzjj)。该系统采用C#语言和.NET Framework技术栈,实现计件工作量统计表的全生命周期管理,支持数据录入、审核、登账等核心业务流程。系统创新性地采用动态列生成技术,根据部门工序自动构建统计表格,支持横向与纵向双模式数据录入。通过Ribbon界面整合打印预览、XML数据交换、批量审核等高级功能,配合完整的权限控制体系(编辑/审核/打印分级授权)和智能窗口布局记忆机制,为制造型企业提供了高效、灵活的计件工资管理解决方案。
关键词:计件工作量统计;DevExpress WinForms;工序管理;数据审核流程;动态列生成;权限控制;XML数据交换
人工智能助手:DeepSeek、Kimi
三、窗体功能代码
第二部分
csharp
private void Djbuttonedit_keydown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter || mtgv.OptionsBehavior.ReadOnly) return;
ButtonEdit be = sender as ButtonEdit;
FmSRCK fmck = new FmSRCK();
{
Gdbuttonedit_srck(ref fmck, this, ref mtgv, ref be, fgnbh, fgnmc, ft2, "", dqbmdh, true);
}
object bv = be.EditValue;
be.EditValue = null;
be.EditValue = bv;
}
private void Djload()
{
try
{
sfzj = 0;
dqdjs = dt1.Rows.Count;
loadfm = true;
if (dqdjh < 0)
{
Fmxmrw(true);
dt2.DefaultView.RowFilter = "false";
Lczs.Text = "0/0";
Lctz.Text = "填制:";
Lcdj.Text = "审核:";
Lcsh.Text = "签批:";
}
else
{
Gvclear(ref mtgv);
Baroid.EditValue = dt1.Rows[dqdjh][ft1oid].ToString();
Fmxmload();
dt2.DefaultView.RowFilter = ft2oid + "='" + Baroid.EditValue.ToString() + "'";
dt2.DefaultView.RowStateFilter = (DataViewRowState.CurrentRows);
sfsp = dt1.Rows[dqdjh][ft1sh].ToString() != "";
sfdj = dt1.Rows[dqdjh][ft1dj].ToString() != "";
Lctz.Text = "填制:" + dt1.Rows[dqdjh][ft1tz].ToString();
Lcsh.Text = "审核:" + dt1.Rows[dqdjh][ft1sh].ToString();
Lcdj.Text = "签批:" + dt1.Rows[dqdjh][ft1dj].ToString();
if (dt2.DefaultView.Count > 0)
{
string gxstr = "";
string gxlost = "";
for (int c = 0; c < dtbmgx.Rows.Count; c++)
{
gxstr += "`" + dtbmgx.Rows[c]["gxmc"] + "`";
}
dqdt2.Rows.Clear();
dqdt2.AcceptChanges();
DataRow[] nrow;
DataRow nrow2;
string rybh = "";
string ryxm = "";
string gxmc;
double tjsl = 0;
int dqh = -1;
for (int r = 0; r < dt2.DefaultView.Count; r++)
{
if (rybh != dt2.DefaultView[r]["rybh"].ToString())
{
nrow = dqdt2.Select("rybh='" + dt2.DefaultView[r]["rybh"] + "'");
if (nrow.Length > 0)
{
dqh = dqdt2.Rows.IndexOf(nrow[0]);
}
else
{
nrow2 = dqdt2.NewRow();
nrow2["rybh"] = dt2.DefaultView[r]["rybh"];
nrow2["ryxm"] = dt2.DefaultView[r]["ryxm"];
dqdt2.Rows.Add(nrow2);
nrow = dqdt2.Select("rybh='" + dt2.DefaultView[r]["rybh"] + "'");
if (nrow.Length > 0)
{
dqh = dqdt2.Rows.IndexOf(nrow[0]);
}
}
}
rybh = dt2.DefaultView[r]["rybh"].ToString();
gxmc = dt2.DefaultView[r]["gxmc"].ToString();
if (gxstr.IndexOf("`" + gxmc + "`") > -1)
{
if (dqh >= 0)
{
tjsl = Convert.ToDouble(dt2.DefaultView[r]["tjsl"]);
if (tjsl != 0)
{
dqdt2.Rows[dqh][gxmc] = dt2.DefaultView[r]["tjsl"];
}
}
}
else
{
if (gxlost == "")
{
gxlost = gxmc;
}
else
{
if (gxlost.IndexOf(gxmc) <= -1)
{
gxlost += "," + gxmc;
}
}
}
}
dqdt2.AcceptChanges();
if (gxlost.Length > 0)
{
MsgXxShow("工序名称:" + gxlost + " 在当前工作中不存在!\r\n" +
"这些数据在数据库中依然存在,这将导致严重的数据错误,请删除后重新输入!\r\n" +
"文件导入数据时,需要区分工作中心。");
}
nrow = null;
nrow2 = null;
}
else
{
Dqdt2cs();
dqdt2.AcceptChanges();
}
}
mtgv.RefreshData();
mtgv.OptionsBehavior.ReadOnly = true;
if (dt1.Rows.Count > 0)
{
if (mtgv.RowCount <= 0)
{
Lczs.Text = "[" + (dqdjh + 1).ToString().Trim() + "/" + dt1.Rows.Count.ToString().Trim() + "张][0/0行]";
}
else
{
Lczs.Text = "[" + (dqdjh + 1).ToString().Trim() + "/" + dt1.Rows.Count.ToString().Trim() + "张][" + (mtgv.FocusedRowHandle + 1).ToString().Trim() + "/" + mtgv.RowCount.ToString().Trim() + "行]";
}
}
dqoid = Baroid.EditValue.ToString();
Barenabled();
loadfm = false;
}
catch (Exception ex)
{
MsgExShow("加载单记录[" + dqoid + "]", ex.Message, ex.Source, ex.StackTrace);
}
}
private void Djtab_selectedpagechanged(object sender, DevExpress.XtraTab.TabPageChangedEventArgs e)
{
try
{
if (DJTab.TabPages.Count == 0 || DJTab.SelectedTabPage == null) return;
if (DJTab.SelectedTabPage.Controls.Count <= 0) return;
int pg = DJTab.SelectedTabPageIndex;
if (firstedit?[pg] != null)
firstedit[pg].Focus();
}
catch (Exception ex)
{
MsgExShow("选项卡切换", ex.Message, ex.Source, ex.StackTrace);
}
}
private void Djview_keydown(object sender, KeyEventArgs e)
{
if (sfzj <= 0 || mtgv.OptionsBehavior.ReadOnly || mtgv.RowCount <= 2) return;
if (e.KeyCode == Keys.Delete && e.Modifiers == Keys.Control)
{
if (MsgSfShow("确定要删除当前行吗?") == DialogResult.OK)
{
try
{
int dqrow = mtgv.FocusedRowHandle;
mtgv.DeleteRow(dqrow);
mtgv.FocusedRowHandle = dqrow;
mtgv.FocusedColumn = mtgv.VisibleColumns[0];
}
catch (Exception ex)
{
MsgExShow("删除当前行", ex.Message, ex.Source, ex.StackTrace);
}
}
}
}
private void Djview_keyup(object sender, System.Windows.Forms.KeyEventArgs e)
{
//处理键盘移动焦点单元格
try
{
if (e.KeyCode == Keys.Enter)
{
SendKeys.Send("{enter}");
if (fzxsr)
{
SendKeys.Send("{down}");
}
else
{
SendKeys.Send("{tab}");
}
return;
}
}
catch (Exception ex)
{
}
}
private void Doprintdj()
{
try
{
//直接打印
mtgv.OptionsPrint.AllowCancelPrintExport = true;
mtgv.OptionsPrint.PrintHeader = true;
mtgv.OptionsPrint.RtfPageHeader = Lctt.Text;
mtgv.ShowRibbonPrintPreview();
}
catch (Exception ex)
{
MsgExShow("数据打印", ex.Message, ex.Source, ex.StackTrace);
}
}
private void Dqdt2cs()
{
// 初始计件工作统计表数据
DataRow nrow;
dqdt2.Rows.Clear();
dqdt2.AcceptChanges();
for (int r = 0; r < dtbmry.Rows.Count; r++)
{
nrow = dqdt2.NewRow();
nrow["rybh"] = dtbmry.Rows[r]["rybh"];
nrow["ryxm"] = dtbmry.Rows[r]["ryxm"];
dqdt2.Rows.Add(nrow);
}
dqdt2.AcceptChanges();
}
private void Dttj()
{
if (sftj) return;
if (!sfzr) return;
try
{
if (pYWQJ != KcDb.DBString("select max(ny) as ny from mlny"))
{
MsgOxShow("系统业务期间已经发生变化,当前编辑无法提交,请重新启动本软件后再继续使用!");
sftj = true;
return;
}
KcDb.DBopen();
// 提交前单象状态验证
DataTable dt1yz = dt1.GetChanges(DataRowState.Modified);
if (dt1yz != null)
{
foreach (DataRow row in dt1yz.Rows)
{
string yzstr = KcDb.DBexec($"select dbo.x9_tj_when('{pDQYH}','{fdjmc}','{row[ft1oid]}')");
if (yzstr.Trim() != pDQYH)
{
MsgOxShow(yzstr + "\r\n");
return;
}
}
}
DataTable udt1 = dt1.GetChanges();
DataTable udt2 = dt2.GetChanges();
string xxstr = "";
string bmstr = "";
if (udt1 != null)
{
foreach (DataRow row in udt1.Rows)
{
if (row.RowState != DataRowState.Deleted)
{
bmstr += $"({row[ft1oid]})";
}
}
xxstr += $"单象头数据提交:{udt1.Rows.Count}行\r\n";
}
if (udt2 != null)
{
xxstr += $"单象体数据提交:{udt2.Rows.Count}行\r\n";
}
if (KcDb.GetDtSaven(ft1, udt1, ft2, udt2, "", null, "", "", ""))
{
dt1.AcceptChanges();
dt2.AcceptChanges();
}
if (!string.IsNullOrEmpty(xxstr))
{
string tjstr = KcDb.DBexec($"select x9_tj_4djsr('{pDQYH}','{fdjmc}','{bmstr}')");
xxstr += tjstr;
}
sfzr = true;
sftj = true;
sfzj = 0;
Barenabled();
if (!string.IsNullOrEmpty(xxstr))
{
MsgXxShow($"数据提交已经完成\r\n{xxstr}\r\n{ft1tjts}");
}
KcDb.DBclose();
}
catch (Exception ex)
{
MsgExShow("数据提交", ex.Message, ex.Source, ex.StackTrace);
sftj = false;
}
}
private void Dtzr()
{
if (sfzr && !sftj)
{
if (MsgSfShow("当前数据尚未提交,重新载入将放弃所有编辑,是否继续?") != DialogResult.OK)
{
return;
}
}
if (sfzr)
{
SaveFmSet();
}
loading = true;
try
{
KcDb.DBopen();
string sqltj1 = $"select dyid,tjxh,tjmc,tjjg,tjsm,tjedit,rxkz from x9_gn_0zrtj nolock where gnbh='{fgnbh}' and yhmc='{pDQYH}' order by tjxh";
dttj1 = KcDb.DtRead(sqltj1);
if (dttj1.Rows.Count <= 0)
{
KcDb.DBexec($"select x9_zrtjcs('{fgnbh}','{pDQYH}')");
dttj1 = KcDb.DtRead(sqltj1);
}
if (dttj1.Rows.Count > 0)
{
FmZRTJ fmtj = new FmZRTJ();
fmtj.Text = fgnmc + "载入条件";
fmtj.fgnbh = fgnbh;
fmtj.fgnmc = fgnmc;
fmtj.Loadtjfm();
fmtj.Tjedit(ref dttj1);
dttj1.AcceptChanges();
fmtj.ShowDialog(this);
if (!fmtj.sfok)
{
if (!sfzr)
{
sftj = true;
this.Close();
}
return;
}
Zrtjsave(fmtj.tjlc, ref dttj1);
DataTable udt1 = dttj1.GetChanges();
if (udt1 != null && KcDb.GetDtSavev("x9_gn_0zrtj", ref udt1, "tjjg"))
{
dttj1.AcceptChanges();
}
}
Baroid.EditValue = "";
Lczs.Text = "";
dt1 = new DataTable();
dt2 = new DataTable();
dqdjh = -1;
dqdjs = 0;
string ybmdh = dqbmdh;
string ygymc = dqgymc;
zrtjstr = "";
foreach (DataRow row in dttj1.Rows)
{
string tjedit = row["tjedit"].ToString();
switch (tjedit)
{
case "dateedit":
DateTime tjdate;
try
{
tjdate = Convert.ToDateTime(row["tjjg"]);
}
catch
{
tjdate = Getywdate();
}
zrtjstr += $"{row["tjmc"]}@{tjdate:yyyy-MM-dd}@";
break;
default:
string tjmc = row["tjmc"].ToString();
string tjjg = row["tjjg"].ToString();
if (tjmc == "生产部门代号") dqbmdh = tjjg;
if (tjmc == "生产部门名称") dqbmmc = tjjg;
if (tjmc == "业务期间") dqywqj = tjjg;
if (tjmc == "工艺名称") dqgymc = tjjg.Trim();
if (tjmc == "计件种类") dqjjzl = tjjg.Trim();
if (tjmc == "是否钉扎") dqsfdj = tjjg;
zrtjstr += $"{tjmc}@{tjjg}@";
break;
}
}
string xxcx0 = KcDb.DBString($"select x9_jjgzlsj('ft1oidqz','{pYHJS}',{(dqsfdj == "1" ? "true" : "false")})");
if (!string.IsNullOrEmpty(xxcx0))
{
ft1oidqz = xxcx0.Replace("`", "'");
}
oidqz = Xttj(ft1oidqz);
oidqz = TjStr(ref dttj1, oidqz);
ywqj = dqywqj;
Barywqj.EditValue = ywqj;
string xxcx1 = KcDb.DBString($"select x9_jjgzlsj('ft1where','{pYHJS}',{(dqsfdj == "1" ? "true" : "false")})");
if (!string.IsNullOrEmpty(xxcx1))
{
ft1where = xxcx1.Replace("`", "'");
}
string xxcx2 = KcDb.DBString($"select x9_jjgzlsj('ft2where','{pYHJS}',{(dqsfdj == "1" ? "true" : "false")})");
if (!string.IsNullOrEmpty(xxcx2))
{
ft2where = xxcx2.Replace("`", "'");
}
string fttj1 = TjStr(ref dttj1, ft1where);
string fttj2 = TjStr(ref dttj1, ft2where);
fttj1 = Xttj(fttj1);
fttj2 = Xttj(fttj2);
sql1 = $"select {ft1list} from {ft1}{(fttj1.Trim() != "" ? " where " + fttj1 : "")} order by {ft1order}";
dt1 = KcDb.DtRead(sql1);
sql2 = $"select {ft2list} from {ft2}{(fttj2.Trim() != "" ? " where " + fttj2 : "")} order by {ft2order}";
dt2 = KcDb.DtRead(sql2);
if (dt1 == null || dt2 == null)
{
MsgXxShow("数据未能正确载入,请检查功能定义是否完整或载入过程是否正确");
sftj = true;
if (!sfzr) this.Close();
return;
}
if (pSFSJ)
{
string t1 = sql1.Replace("'", "`");
string t2 = sql2.Replace("'", "`");
string d1 = ($"select * from x9_sjzd where tname='{ft1}' and zdbb ='{ftbb}'").Replace("'", "`");
string d2 = ($"select * from x9_sjzd where tname='{ft2}' and zdbb ='{ftbb}'").Replace("'", "`");
KcDb.DBexec($"update x9_gn_0dymb set t1='{t1}',t2='{t2}',d1='{d1}',d2='{d2}' where gnbh='{fgnbh}' and sjsd=false");
StringBuilder strhelp = new StringBuilder();
strhelp.AppendLine();
strhelp.AppendLine(fgnmc);
strhelp.AppendLine(new string('=', fgnmc.Length * 2));
strhelp.AppendLine();
strhelp.AppendLine("一、功能用途");
strhelp.AppendLine();
StringBuilder dt1xm = new StringBuilder("二、单象头项目\r\n");
foreach (DataColumn col in dt1.Columns)
{
DataRow[] dr = dtzd1.Select($"tname='{ft1}' and fname='{col.ColumnName}'");
if (dr.Length > 0)
{
dt1xm.AppendLine($"{dr[0]["fmemo"]}({dr[0]["fname"]})。");
}
}
StringBuilder dt2xm = new StringBuilder("\r\n三、单象体项目\r\n");
foreach (DataColumn col in dt2.Columns)
{
DataRow[] dr = dtzd2.Select($"tname='{ft2}' and fname='{col.ColumnName}'");
if (dr.Length > 0)
{
dt2xm.AppendLine($"{dr[0]["fmemo"]}({dr[0]["fname"]})。");
}
}
strhelp.Append(dt1xm);
strhelp.Append(dt2xm);
strhelp.AppendLine("\r\n四、注意事项");
strhelp.AppendLine("\r\n五、操作方法(参见单象输入功能操作方法)");
KcDb.DBexec($"update x9_help_yy set mbhelp='{strhelp}' where ztbh='{fgnbh}'");
}
Lctt.Text = $"{dqywqj} {dqbmdh} {dqbmmc} {dqjjzl} {dqgymc} {(xzbj ? "编辑" : "无编辑权限")} {(xzsh ? "审核" : "无审核权限")}";
if (dqbmdh != ybmdh || dqgymc != ygymc)
{
try
{
if (string.IsNullOrEmpty(dqgymc))
{
dtbmgx = KcDb.DtRead($"select gxxh,gxmc from mlscgx where bmdh='{dqbmdh}' order by gxxh");
}
else
{
dqjjzl = "工艺价格";
dtbmgx = KcDb.DtRead($"select gxxh,gxmc from mlgygx where gymc='{dqgymc}' order by gxxh");
}
dtbmry = KcDb.DtRead($"select rybh,ryxm from mlbmry where bmdh='{dqbmdh}' order by rybh");
dqdt2 = new DataTable();
// 添加列
DataColumn colsr = new DataColumn
{
DataType = typeof(string),
ColumnName = "rybh",
DefaultValue = ""
};
dqdt2.Columns.Add(colsr);
colsr = new DataColumn
{
DataType = typeof(string),
ColumnName = "ryxm",
DefaultValue = ""
};
dqdt2.Columns.Add(colsr);
foreach (DataRow row in dtbmgx.Rows)
{
colsr = new DataColumn
{
DataType = typeof(double),
ColumnName = row["gxmc"].ToString().Trim(),
DefaultValue = 0
};
dqdt2.Columns.Add(colsr);
}
dqdt2.PrimaryKey = new DataColumn[] { dqdt2.Columns["rybh"] };
Loaddjgv();
}
catch (Exception ex)
{
loaderr = true;
MsgExShow("加载窗口,初始单象体组件", ex.Message, ex.Source, ex.StackTrace);
}
}
dqdjs = dt1.Rows.Count;
dqdjh = dqdjs > 0 ? 0 : -1;
sfzr = true;
sftj = true;
dqdjs = dt1.Rows.Count;
KcDb.DBString($"select x9_djoid(5,'{ft1}','{ft1oid}','{oidqz}')");
loading = false;
if (!string.IsNullOrEmpty(dyoid))
{
bool czjg = false;
for (int r = 0; r < dt1.Rows.Count; r++)
{
if (dt1.Rows[r][ft1oid].ToString() == dyoid)
{
czjg = true;
dqdjh = r;
Djload();
break;
}
}
if (!czjg)
{
Btpg4_ItemClick(null, null);
}
}
else
{
Btpg4_ItemClick(null, null);
}
try
{
string fmset = FmRead(fgnmc + dqbmmc);
string[] fmay = fmset.Split(',');
if (fmay.Length >= 5)
{
short ws = fmay.Length == 6 ? Convert.ToInt16(fmay[5]) : (short)0;
if (ws == 2)
{
this.WindowState = FormWindowState.Maximized;
}
else if (ws == 0)
{
if (Convert.ToInt32(fmay[0]) > 0) this.Top = Convert.ToInt32(fmay[0]);
if (Convert.ToInt32(fmay[1]) > 0) this.Left = Convert.ToInt32(fmay[1]);
if (Convert.ToInt32(fmay[2]) > 50) this.Width = Convert.ToInt32(fmay[2]);
if (Convert.ToInt32(fmay[3]) > 50) this.Height = Convert.ToInt32(fmay[3]);
}
if (Convert.ToInt32(fmay[4]) > 50) Sp1.SplitterPosition = Convert.ToInt32(fmay[4]);
}
fmset = FmRead(fgnmc + dqbmmc + "单象体");
fmay = fmset.Split(',');
if (mtgv != null && fmay.Length == mtgv.Columns.Count + 1)
{
for (int c = 0; c < mtgv.Columns.Count; c++)
{
int cw = Convert.ToInt32(fmay[c]);
if (cw <= 0)
{
mtgv.Columns[c].Visible = false;
}
else
{
mtgv.Columns[c].Width = cw;
}
}
mtgv.RowHeight = Convert.ToInt32(fmay[mtgv.Columns.Count]);
}
else if (mtgv != null)
{
Gvoptionwith(ref mtgv, GridDM.Width);
}
}
catch (Exception ex)
{
MsgExShow("应用保存的窗口参数", ex.Message, ex.Source, ex.StackTrace);
}
KcDb.DBclose();
}
catch (Exception ex)
{
MsgExShow("数据载入", ex.Message, ex.Source, ex.StackTrace);
this.Close();
}
}
private void Dxmenuclick(object sender, EventArgs e)
{
Gvoptionwith(ref mtgv, GridDM.Width);
}
private BaseEdit Findgsx(string fname)
{
BaseEdit eb = null;
for (int k = 0; k <= DJTab.TabPages.Count - 1; k++)
{
LayoutControl lc = DJTab.TabPages[k].Controls[0] as LayoutControl;
string[] itag;
foreach (LayoutControlItem lit in lc.Root.Items)
{
itag = lit.Tag.ToString().Split(',');
if (itag.Length == 5)
{
if (itag[2] == fname)
{
eb = lit.Control as BaseEdit;
}
}
}
}
return eb;
}
private BaseEdit Findlastedit(LayoutControlGroup lc)
{
bool fl = false;
LayoutControlItem maxci = null;
int xym = 0;
int xyc = 0;
BaseEdit be = null;
for (int l = 0; l <= lc.Items.ItemCount - 1; l++)
{
if (!((!lc.Items[l].Visible) || lc.Items[l].IsHidden || lc.Items[l].Name.Substring(0, 1) == "e"))
{
LayoutControlItem ci = lc.Items[l] as LayoutControlItem;
if (ci == null)
{
continue;
}
else
{
be = ci.Control as BaseEdit;
if (be != null)
{
be.EnterMoveNextControl = true;
be.KeyDown -= Fmlastedit_keydown;
if (maxci == null)
{
maxci = ci;
}
else
{
if (be.Name.Substring(0, 1) == "t")
{
xym = maxci.Location.Y * 1000 + maxci.Location.X;
xyc = ci.Location.Y * 1000 + ci.Location.X;
if (xym < xyc)
{
maxci = ci;
}
}
else
{
continue;
}
continue;
}
}
}
}
}
if (maxci == null)
{
be = null;
}
else
{
be = maxci.Control as BaseEdit;
be.EnterMoveNextControl = false;
}
return be;
}
private void Fm_visiblechanged(object sender, System.EventArgs e)
{
if (fh && this.Visible)
{
sfzr = false;
Dtzr();
fh = false;
}
}
private void Fmbuttonedit_buttonclick(object sender, ButtonPressedEventArgs e)
{
ButtonEdit be = sender as ButtonEdit;
string cktj = zrtjstr;
using (FmSRCK fmck = new FmSRCK())
{
Fmbuttonedit_srck(fmck, this, ref be, fgnbh, fgnmc, ft1, true, cktj);
}
}
private void Fmbuttonedit_keydown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter) return;
ButtonEdit be = sender as ButtonEdit;
string cktj = zrtjstr;
using (FmSRCK fmck = new FmSRCK())
{
Fmbuttonedit_srck(fmck, this, ref be, fgnbh, fgnmc, ft1, false, cktj);
}
}
private void Fmlastedit_keydown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter) return;
int tabidx = DJTab.SelectedTabPageIndex;
if (tabidx < DJTab.TabPages.Count - 1)
{
// 下一页
DJTab.SelectedTabPageIndex = tabidx + 1;
}
else
{
// 第一页
entermtgv = true;
mtgv.Focus();
}
}
private void Fmxmclear(bool rw)
{
// 编辑项目清空
for (int k = 0; k < DJTab.TabPages.Count; k++)
{
LayoutControl lc = DJTab.TabPages[k].Controls[0] as LayoutControl;
Fmxmcls(ref lc, ref rw);
}
Lczs.Text = "";
}
private void Fmxmload()
{
// 数据表值
if (loading) return;
if (saving) return;
try
{
sfzj = -1;
DataRow dr;
string dqbm = dt1.Rows[dqdjh][ft1oid].ToString();
dr = dt1.Rows[dqdjh];
if (dr != null)
{
for (int k = 0; k < DJTab.TabPages.Count; k++)
{
LayoutControl lc = DJTab.TabPages[k].Controls[0] as LayoutControl;
Fmecload(ref lc, ref dr);
}
}
else
{
Fmxmclear(true);
}
sfzj = 0;
Barenabled();
}
catch (Exception ex)
{
MsgExShow("加载单记录头数据", ex.Message, ex.Source, ex.StackTrace);
}
}
private void Fmxmrw(bool rw)
{
// 项目只读属性设置
for (int k = 0; k < DJTab.TabPages.Count; k++)
{
LayoutControl lc = DJTab.TabPages[k].Controls[0] as LayoutControl;
Fmxmec(ref lc, ref rw);
}
}
private void Form_disposed(object sender, EventArgs e)
{
try
{
for (int i = 0; i < DJTab.TabPages.Count; i++)
{
DJTab.TabPages[i].Controls.Clear();
}
ft1 = null; //string = "gzjjo" //功能表1
ft2 = null; //string = "gzjjm" //功能表2
ftbb = null; //string = "" //功能表版本
fgnbh = null; //string
fgnmc = null; //string
fdjmc = null; //string = "计件工作量统计表"
ft1list = null; //string = "oid,ny,bmdh,bmmc,jjzl,rq,chxh,chdh,chhc,scdh,jhsl,bz,tzr,shr,djr"
ft1oid = null; //string = "oid"
ft1oidqz = null; //string = "gzjj{ppcxh}_{pywqj}_"
ft1tz = null; //string = "tzr"
ft1sh = null; //string = "shr"
ft1dj = null; //string = "djr"
ft1qj = null; //string = "ny"
ft1where = null; //string = "oid like 'gzjj{ppcxh}%' and bmdh='{生产部门代号}' and ny='{业务期间}' and {是否登记}=iif(djr<>'',1,0)"
ft1order = null; //string = "oid"
ft1tjts = null; //string = ""
ft2mid = null; //string = "mid"
ft2oid = null; //string = "oid"
ft2qj = null; //string = "ny"
ft2list = null; //string = "mid,oid,ny,bmdh,bmmc,rybh,ryxm,gxmc,tjsl,sfgx,sfsh,sfdj"
ft2where = null; //string = "oid like 'gzjj{ppcxh}%' and bmdh='{生产部门代号}' and ny='{业务期间}' and sfdj={是否登记}"
ft2order = null; //string = "oid,rybh,mid"
ft2shbjzd = null; //string = "sfsh"
ft2djbjzd = null; //string = "sfdj"
fzxsr = false; //boolean
xzbj = false; //boolean
xzdy = false; //boolean
xzck = false; //boolean
xzwj = false; //boolean
xzdc = false; //boolean
dt1 = null; //datatable
dtzd1 = null; //datatable
dttj1 = null; //datatable
dt2 = null; //datatable
dtzd2 = null; //datatable
ywqj = null; //string //业务期间
oidqz = null; //string //编码前缀
sfzj = 0; //integer //是否增加 1添加同级 2添加下级 3修改
sfzr = false; //boolean //是否载入
sftj = false; //boolean //是否提交
sfsp = false; //boolean //是否审核
sfdj = false; //boolean //是否登记
dqdt2 = null; //datatable
ft1fd = null; //string //字段列表数组
ft2fd = null; //string
firstedit = null; //baseedit //首控件
mtgv = null; //new gridview //单据体主数据表视图
dqdjh = -1; //integer = -1
dqdjs = 0; //integer = 0
dqoid = ""; //string = ""
dqmid = ""; //string = ""
dqmrow = -1; //integer = -1
zrtjstr = ""; //string = ""
jszdstr = ""; //string = ""
loading = false; //boolean = false //单据装入中
loadfm = false; //boolean = false //表单装入中
saving = false; //boolean = false //单据保存中
drsjz = false; //boolean = false //数据调入中
gsjsz = false; //boolean = false //计算中
djenter = false;
fh = false;
entermtgv = false;
adding = false;
savem = false;
sql1 = null; //string
sql2 = null; //string
loaderr = false; //boolean = false
dqbmdh = ""; //string = "" //当前部门代号
dqbmmc = ""; //string = "" //当前部门名称
dqgymc = ""; //string = "" //计件种类
dqjjzl = ""; //string = "" //计件种类
dqywqj = ""; //string = "" //载入年月
dtbmgx = null; //datatable //部门工序
dtbmry = null; //datatable //部门人员
RibbonControl = null; //devexpress.xtrabars.ribbon.ribboncontrol
RibbonPage1 = null; //devexpress.xtrabars.ribbon.ribbonpage
Rpg1 = null; //devexpress.xtrabars.ribbon.ribbonpagegroup
Rpg7 = null; //devexpress.xtrabars.ribbon.ribbonpagegroup
Rpg2 = null; //devexpress.xtrabars.ribbon.ribbonpagegroup
Rpg9 = null; //devexpress.xtrabars.ribbon.ribbonpagegroup
RibbonStatusBar = null; //devexpress.xtrabars.ribbon.ribbonstatusbar
BarZR = null; //devexpress.xtrabars.barbuttonitem
BarTJ = null; //devexpress.xtrabars.barbuttonitem
BardjTJ = null; //devexpress.xtrabars.barbuttonitem
L1 = null; //devexpress.xtrabars.barstaticitem
L2 = null; //devexpress.xtrabars.barstaticitem
Sp1 = null; //devexpress.xtraeditors.splitcontainercontrol
BardjSC = null; //devexpress.xtrabars.barbuttonitem
DJTab = null; //devexpress.xtratab.xtratabcontrol
BarPrint = null; //devexpress.xtrabars.barbuttonitem
BarPreview = null; //devexpress.xtrabars.barbuttonitem
BarHelp = null; //devexpress.xtrabars.barbuttonitem
BackgroundWorker1 = null; //system.componentmodel.backgroundworker
OpenFileDialog1 = null; //system.windows.forms.openfiledialog
RcCZJL = null; //devexpress.xtraeditors.repository.repositoryitemcombobox
BardjXG = null; //devexpress.xtrabars.barbuttonitem
BardjOK = null; //devexpress.xtrabars.barbuttonitem
GridDM = null; //devexpress.xtragrid.gridcontrol
GridView1 = null; //devexpress.xtragrid.views.grid.gridview
BardjDR = null; //devexpress.xtrabars.barbuttonitem
RC1 = null; //devexpress.xtraeditors.repository.repositoryitemcombobox
BarBJ = null; //devexpress.xtrabars.barbuttonitem
BarEditDJMC = null; //devexpress.xtrabars.baredititem
RepositoryItemTextEdit1 = null; //devexpress.xtraeditors.repository.repositoryitemtextedit
Rpgdjmc = null; //devexpress.xtrabars.ribbon.ribbonpagegroup
Barexit = null; //devexpress.xtrabars.barbuttonitem
BardjCancel = null; //devexpress.xtrabars.barbuttonitem
R1 = null; //devexpress.xtrabars.barstaticitem
Btpg4 = null; //devexpress.xtraeditors.simplebutton
Btpg3 = null; //devexpress.xtraeditors.simplebutton
Btpg2 = null; //devexpress.xtraeditors.simplebutton
Btpg1 = null; //devexpress.xtraeditors.simplebutton
Lctt = null; //devexpress.xtraeditors.labelcontrol
Lctz = null; //devexpress.xtraeditors.labelcontrol
RepositoryItemComboBox1 = null; //devexpress.xtraeditors.repository.repositoryitemcombobox
RepositoryItemRadioGroup1 = null; //devexpress.xtraeditors.repository.repositoryitemradiogroup
RepositoryItemRadioGroup2 = null; //devexpress.xtraeditors.repository.repositoryitemradiogroup
BarCheckItem1 = null; //devexpress.xtrabars.barcheckitem
RRg3 = null; //devexpress.xtraeditors.repository.repositoryitemradiogroup
Baroid = null; //devexpress.xtrabars.baredititem
Rtoid = null; //devexpress.xtraeditors.repository.repositoryitemtextedit
Barywqj = null; //devexpress.xtrabars.baredititem
Rtywqj = null; //devexpress.xtraeditors.repository.repositoryitemtextedit
RepositoryItemTextEdit2 = null; //devexpress.xtraeditors.repository.repositoryitemtextedit
R2 = null; //devexpress.xtrabars.barstaticitem
R3 = null; //devexpress.xtrabars.barstaticitem
Lczs = null; //devexpress.xtraeditors.labelcontrol
BarSH = null; //devexpress.xtrabars.barbuttonitem
Rp6 = null; //devexpress.xtrabars.ribbon.ribbonpagegroup
BarDJ = null; //devexpress.xtrabars.barbuttonitem
Lcdj = null; //labelcontrol
Lcsh = null; //labelcontrol
BarCZ = null;
BarFx = null; //xtrabars.baredititem
RcSrfx = null; //repositoryitemcombobox
BarTCRY = null; //xtrabars.barbuttonitem
Bardcwj = null; //xtrabars.barbuttonitem
Bardrwj = null; //xtrabars.barbuttonitem
Rpg8 = null; //ribbonpagegroup
BarFullsh = null; //xtrabars.barbuttonitem
BarFulldj = null; //xtrabars.barbuttonitem
GC.Collect();
}
catch (Exception ex)
{
MsgExShow("析构窗口对象", ex.Message, ex.Source, ex.StackTrace);
}
}
private void Form_FormClosed(object sender, FormClosedEventArgs e)
{
Form dqfm = null;
foreach (Form opfm in Application.OpenForms)
{
opfm.WindowState = FormWindowState.Normal;
dqfm = opfm;
}
if (dqfm != null)
{
dqfm.Activate();
}
}
private void Loaddjgv()
{
try
{
if (GridDM == null)
{
loaderr = true;
return;
}
GridDM.ViewCollection.Clear();
mtgv = new GridView(GridDM);
mtgv.BeginUpdate();
mtgv.Name = "mtgv";
mtgv.OptionsBehavior.AutoPopulateColumns = false;
GridDM.DataSource = dqdt2;
GridDM.ForceInitialize();
GridDM.MainView = mtgv;
mtgv.PopulateColumns(dqdt2);
SetGv(ref mtgv, false);
mtgv.ColumnPanelRowHeight = PanelRowHeightJj;
mtgv.OptionsFind.AllowFindPanel = false;
mtgv.OptionsBehavior.AutoUpdateTotalSummary = false;
mtgv.PopupMenuShowing += Mtgv_popupmenushowing;
// 人员编号列
RepositoryItemButtonEdit rcb = new RepositoryItemButtonEdit
{
TextEditStyle = TextEditStyles.Standard,
MaxLength = 10
};
rcb.KeyDown += Djbuttonedit_keydown;
rcb.ButtonClick += Djbuttonedit_buttonclick;
GridDM.RepositoryItems.Add(rcb);
mtgv.Columns["rybh"].Caption = "人员编号";
mtgv.Columns["rybh"].ColumnEdit = rcb;
mtgv.Columns["rybh"].ToolTip = "";
mtgv.Columns["rybh"].AppearanceHeader.Options.UseTextOptions = true;
mtgv.Columns["rybh"].AppearanceCell.TextOptions.HAlignment = HorzAlignment.Near;
mtgv.Columns["rybh"].AppearanceCell.TextOptions.VAlignment = VertAlignment.Center;
mtgv.Columns["rybh"].AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center;
mtgv.Columns["rybh"].AppearanceHeader.TextOptions.VAlignment = VertAlignment.Center;
mtgv.Columns["rybh"].AppearanceHeader.TextOptions.WordWrap = WordWrap.Wrap;
mtgv.Columns["rybh"].OptionsColumn.AllowSort = DefaultBoolean.False;
mtgv.Columns["rybh"].OptionsColumn.AllowMove = false;
mtgv.Columns["rybh"].OptionsColumn.AllowShowHide = false;
mtgv.Columns["rybh"].OptionsFilter.AllowFilter = false;
mtgv.Columns["rybh"].OptionsColumn.ReadOnly = false;
mtgv.Columns["rybh"].Fixed = FixedStyle.Left;
// 人员名列
RepositoryItemTextEdit rct = new RepositoryItemTextEdit
{
ReadOnly = true
};
GridDM.RepositoryItems.Add(rct);
mtgv.Columns["ryxm"].Caption = "人员姓名";
mtgv.Columns["ryxm"].ColumnEdit = rct;
mtgv.Columns["ryxm"].ToolTip = "";
mtgv.Columns["ryxm"].AppearanceHeader.Options.UseTextOptions = true;
mtgv.Columns["ryxm"].AppearanceCell.TextOptions.HAlignment = HorzAlignment.Center;
mtgv.Columns["ryxm"].AppearanceCell.TextOptions.VAlignment = VertAlignment.Center;
mtgv.Columns["ryxm"].AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center;
mtgv.Columns["ryxm"].AppearanceHeader.TextOptions.VAlignment = VertAlignment.Center;
mtgv.Columns["ryxm"].AppearanceHeader.TextOptions.WordWrap = WordWrap.Wrap;
mtgv.Columns["ryxm"].OptionsColumn.AllowSort = DefaultBoolean.False;
mtgv.Columns["ryxm"].OptionsColumn.AllowMove = false;
mtgv.Columns["ryxm"].OptionsColumn.AllowShowHide = false;
mtgv.Columns["ryxm"].OptionsFilter.AllowFilter = true;
mtgv.Columns["ryxm"].OptionsColumn.ReadOnly = true;
mtgv.Columns["ryxm"].Fixed = FixedStyle.Left;
GridColumnSummaryItem sitotal = new GridColumnSummaryItem
{
SummaryType = SummaryItemType.Count,
DisplayFormat = "共 {0} 行 "
};
mtgv.Columns["ryxm"].Summary.Add(sitotal);
// 工序列
foreach (DataRow row in dtbmgx.Rows)
{
string gxmc = row["gxmc"].ToString().Trim();
RepositoryItemTextEdit rc = new RepositoryItemTextEdit
{
MaxLength = 12,
};
rc.DisplayFormat.FormatType = FormatType.Numeric;
rc.DisplayFormat.FormatString = "#";
rc.EditFormat.FormatType = FormatType.Numeric;
rc.EditFormat.FormatString = "#";
rc.KeyDown += Djview_keydown;
GridDM.RepositoryItems.Add(rc);
mtgv.Columns[gxmc].Caption = gxmc;
mtgv.Columns[gxmc].ColumnEdit = rc;
mtgv.Columns[gxmc].ToolTip = "";
mtgv.Columns[gxmc].AppearanceHeader.Options.UseTextOptions = true;
mtgv.Columns[gxmc].AppearanceCell.TextOptions.HAlignment = HorzAlignment.Center;
mtgv.Columns[gxmc].AppearanceCell.TextOptions.VAlignment = VertAlignment.Center;
mtgv.Columns[gxmc].AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center;
mtgv.Columns[gxmc].AppearanceHeader.TextOptions.VAlignment = VertAlignment.Center;
mtgv.Columns[gxmc].AppearanceHeader.TextOptions.WordWrap = WordWrap.Wrap;
mtgv.Columns[gxmc].OptionsColumn.AllowSort = DefaultBoolean.False;
mtgv.Columns[gxmc].OptionsFilter.AllowFilter = false;
mtgv.Columns[gxmc].OptionsColumn.ReadOnly = false;
mtgv.Columns[gxmc].SummaryItem.DisplayFormat = " {0:#} ";
mtgv.Columns[gxmc].SummaryItem.FieldName = gxmc;
mtgv.Columns[gxmc].SummaryItem.SummaryType = SummaryItemType.Sum;
}
mtgv.OptionsView.ShowFooter = true;
mtgv.OptionsMenu.ShowFooterItem = true;
mtgv.OptionsView.EnableAppearanceEvenRow = true;
mtgv.OptionsView.EnableAppearanceOddRow = true;
// 添加事件
mtgv.KeyUp += Djview_keyup;
mtgv.FocusedRowChanged += Dj_focusedrowchanged;
mtgv.CellValueChanged += Dj_cellvaluechanged;
// 计算合计列表达式
StringBuilder strhj = new StringBuilder();
foreach (GridColumn col in mtgv.Columns)
{
string tyname = col.ColumnType.Name.ToLower();
if (tyname == "int16" || tyname == "int32" || tyname == "int64" ||
tyname == "byte" || tyname == "sbyte" || tyname == "uint16" ||
tyname == "uint32" || tyname == "uint64" || tyname == "decimal" ||
tyname == "double" || tyname == "single")
{
strhj.Append($"[{col.FieldName}]+");
}
}
if (strhj.Length > 0)
{
strhj.Length--; // 移除最后一个+
}
// 添加合计列
GridColumn unbcolumn = mtgv.Columns.AddField("total");
unbcolumn.Caption = "合计";
unbcolumn.AppearanceHeader.Options.UseTextOptions = true;
unbcolumn.AppearanceCell.TextOptions.HAlignment = HorzAlignment.Center;
unbcolumn.AppearanceCell.TextOptions.VAlignment = VertAlignment.Center;
unbcolumn.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center;
unbcolumn.AppearanceHeader.TextOptions.VAlignment = VertAlignment.Center;
unbcolumn.AppearanceHeader.TextOptions.WordWrap = WordWrap.Wrap;
unbcolumn.VisibleIndex = mtgv.Columns.Count;
unbcolumn.UnboundType = UnboundColumnType.Decimal;
unbcolumn.UnboundExpression = strhj.ToString();
unbcolumn.OptionsColumn.AllowEdit = false;
unbcolumn.DisplayFormat.FormatType = FormatType.Numeric;
unbcolumn.DisplayFormat.FormatString = " {0:#} ";
mtgv.EndUpdate();
GridDM.Tag = "gvend";
GridDM.UseEmbeddedNavigator = false;
GridDM.Visible = true;
}
catch (Exception ex)
{
loaderr = true;
MsgExShow("初始单象体视图", ex.Message, ex.Source, ex.StackTrace);
}
}
private void Loaddrtext(DataRow dr, string[] tc)
{
//加载单据头部信息
try
{
if (dr != null)
{
for (int k = 0; k <= DJTab.TabPages.Count - 1; k++)
{
LayoutControl lc = DJTab.TabPages[k].Controls[0] as LayoutControl;
string[] itag;
int coltch;
BaseEdit ec;
foreach (LayoutControlItem lit in lc.Root.Items)
{
itag = lit.Tag.ToString().Split(',');
if (itag.Length == 5)
{
coltch = Array.IndexOf(tc, itag[2]);
if (coltch >= 0)
{
ec = lit.Control as BaseEdit;
ec.EditValue = dr[itag[2]];
}
}
}
}
}
KcDb.DBclose();
}
catch (Exception ex)
{
MsgExShow("加载单据头部信息失败", ex.Message, ex.Source, ex.StackTrace);
}
}
private void Mtgv_popupmenushowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e)
{
try
{
if (e.Menu == null) return;
if (e.HitInfo.InColumnPanel)
{
DXMenuItem dxmenu = new DXMenuItem
{
Caption = "自动配置列宽"
};
dxmenu.Click += Dxmenuclick;
e.Menu.Items.Add(dxmenu);
}
}
catch (Exception ex)
{
MsgExShow("增加配置列宽右键菜单", ex.Message, ex.Source, ex.StackTrace);
}
}
private void Refx(object sender, EventArgs e)
{
if (BarFx.EditValue.ToString() == "纵向输入")
{
fzxsr = true;
}
else
{
fzxsr = false;
}
}
private void Form_formclosing(object sender, FormClosingEventArgs e)
{
if (sfzj > 0)
{
MsgOxShow("正在编辑数据,请确定或取消后退出");
e.Cancel = true;
return;
}
if (!sftj)
{
Dttj();
}
}
private void Form_load(object sender, System.EventArgs e)
{
try
{
if (KcDb.KcCn.State != ConnectionState.Open)
{
KcDb.DBLJ();
if (!KcDb.SFlj)
{
MsgXxShow("帐套数据库未能连接,请在主窗口重试!");
this.Close();
return;
}
}
//该功能字段为固定,不能更改,不能限制权限,单据体为需要时载入
//未完成:打印相关
SetDg(this, 1450, 680, true);
RibbonControl.ApplicationCaption = fgnmc;
RibbonPage1.Text = fgnmc;
GridDM.Tag = "";
if (pCdimage.Images.Count > 0)
{
foreach (BarItem item in RibbonControl.Items)
{
if (item.GetType().Name.ToLower() == "barbuttonitem" || item.GetType().Name.ToLower() == "barcheckitem")
{
if (pCdimage.Images.Keys.IndexOf(item.Caption) > -1)
{
item.LargeGlyph = pCdimage.Images[item.Caption];
}
}
}
}
}
catch (Exception ex)
{
loaderr = true;
MsgExShow("加载菜单图标", ex.Message, ex.Source, ex.StackTrace);
}
try
{
RcCZJL.Items.Clear();
L1.Caption = "[" + fgnmc + "]";
L2.Caption = "[当前用户:" + pDQYH + "]";
R1.Caption = "";
R2.Caption = "[" + pZTMC + "]";
R3.Caption = "";
//加载窗口图标
string gnsql;
gnsql = "select xzbj from x9_gnyhqx " +
"where gnbh='" + fgnbh + "' and xzbj=true and (position(yhjs in '" + pYHJS + "') > 0) and (sfsq = true) ";
xzbj = (KcDb.DBInteger(gnsql) == 0) ? false : true;
gnsql = "select xzsh from x9_gnyhqx " +
"where gnbh='" + fgnbh + "' and xzsh=true and (position(yhjs in '" + pYHJS + "') > 0) and (sfsq = true) ";
xzsh = (KcDb.DBInteger(gnsql) == 0) ? false : true;
if (pYHJS == "系统管理员")
{
xzbj = true;
xzsh = true;
}
xzdy = true;
xzck = true;
xzwj = true;
xzdc = true;
Baroid.EditValue = "";
Barywqj.EditValue = "";
if (fdjmc.Length < 8)
{
BarEditDJMC.Width = 150;
}
else
{
BarEditDJMC.Width = 150 + (fdjmc.Length - 7) * 20;
}
Baroid.EditValue = "";
Lctt.Text = "";
Lczs.Text = "";
string xxcx = "";
xxcx = KcDb.DBString("select x9_jjgzlsj('ft1list','" + pYHJS + "',false)");
if (xxcx != "")
{
ft1list = xxcx;
}
xxcx = KcDb.DBString("select x9_jjgzlsj('ft2list','" + pYHJS + "',false)");
if (xxcx != "")
{
ft2list = xxcx;
}
ft1fd = ft1list.Split(',');
ft2fd = ft2list.Split(',');
dtzd1 = new DataTable();
string sqlzd1;
sqlzd1 = "select * from x9_sjzd nolock where zdbb='" + ftbb + "' and tname='" + ft1 + "' order by fxh";
dtzd1 = KcDb.DtRead(sqlzd1);
//查询分组情况
DataTable dtfz1 = new DataTable();
string sqlfz1;
sqlfz1 = "select distinct fzmc from x9_sjzd nolock where zdbb='" + ftbb + "' and tname='" + ft1 + "' order by fzmc";
dtfz1 = KcDb.DtRead(sqlfz1);
DJTab.TabPages.Clear();
string fzstr = "";
if (dtfz1.Rows.Count > 0)
{
firstedit = new BaseEdit[dtfz1.Rows.Count];
}
for (int k = 0; k < dtfz1.Rows.Count; k++)
{
fzstr = dtfz1.Rows[k]["fzmc"].ToString();
DataRow[] fzzdrow = dtzd1.Select("fzmc='" + fzstr + "'");
string[] zdlist = ft1list.Split(',');
bool fzzdhave = false;
for (int l = 0; l < fzzdrow.Length; l++)
{
if (Array.IndexOf(zdlist, fzzdrow[l]["fname"].ToString()) >= 0)
{
fzzdhave = true;
break;
}
}
if (!fzzdhave)
{
continue;
}
XtraTabPage pgfz = DJTab.TabPages.Add();
pgfz.Text = fzstr;
LayoutControl pglc = new LayoutControl();
pglc.Name = fzstr;
pglc.BeginUpdate();
pgfz.Controls.Add(pglc);
pglc.Dock = DockStyle.Fill;
pglc.OptionsCustomizationForm.ShowLoadButton = false;
pglc.OptionsCustomizationForm.ShowSaveButton = false;
pglc.OptionsCustomizationForm.AllowHandleDeleteKey = true;
pglc.OptionsCustomizationForm.ShowPropertyGrid = true;
pglc.AllowCustomization = false;
Control ctl = GridDM as Control;
string lft = ft1list;
lft = lft.Replace(ft1oid, "");
lft = lft.Replace(ft1tz, "");
lft = lft.Replace(ft1sh, "");
lft = lft.Replace(ft1dj, "");
lft = lft.Replace(ft1qj, "");
lft = lft.Replace("bmdh", "");
lft = lft.Replace("bmmc", "");
lft = lft.Replace("jjzl", "");
lft = lft.Replace("gymc", "");
// dim fmx as new xform(fgnbh, fgnmc, fzstr, ft1, lft, xztp, xzwd, xzwj, dtzd1, djtab, pglc, k, 4, me)
int ecol = 4;
Fmloedit(ref pglc, ref dtzd1, fgnbh, fgnmc, fzstr, lft, k, ecol, true, xzwj);
string[] artag = "buttonedit,fileedit,fileread,buttontextedit,buttontextread".Split(',');
foreach (LayoutControlItem litem in pglc.Root.Items)
{
string[] ltag = litem.Tag.ToString().Split(',');
if (ltag.Length == 5)
{
string ei = ltag[1];
if (Array.IndexOf(artag, ei) < 0)
{
continue;
}
switch (ei)
{
case "buttonedit":
ButtonEdit xc = litem.Control as ButtonEdit;
xc.KeyDown += Fmbuttonedit_keydown;
xc.ButtonClick += Fmbuttonedit_buttonclick;
break;
case "buttontextedit":
case "buttontextread":
ButtonEdit xc1 = litem.Control as ButtonEdit;
xc1.ButtonClick += Text_buttonclick;
break;
}
}
}
firstedit[k] = Findfirstedit(ref pglc);
BaseEdit lastbe = Findlastedit(pglc.Root);
if (lastbe != null)
{
lastbe.KeyDown += Fmlastedit_keydown;
}
pglc.EndUpdate();
}
SetTab(ref DJTab, TabHeaderLocation.Top, TabOrientation.Horizontal);
}
catch (Exception ex)
{
loaderr = true;
MsgExShow("加载窗口,初始单据头控件", ex.Message, ex.Source, ex.StackTrace);
}
try
{
RcSrfx.Items.Clear();
RcSrfx.TextEditStyle = TextEditStyles.DisableTextEditor;
RcSrfx.Items.Add("横向输入");
RcSrfx.Items.Add("纵向输入");
if (fzxsr)
{
BarFx.EditValue = "纵向输入";
}
else
{
BarFx.EditValue = "横向输入";
}
BarFx.EditValueChanged += Refx;
if (loaderr)
{
MsgXxShow("加载功能时出错,请检查功能设计的正确性");
this.Close();
return;
}
string zdsql;
zdsql = "select * from x9_sjzd where zdbb='" + ftbb + "' and tname='" + ft2 + "' and fmemo<>'' order by fxh";
dtzd2 = KcDb.DtRead(zdsql);
}
catch (Exception ex)
{
MsgExShow("加载窗口,载入数据字典", ex.Message, ex.Source, ex.StackTrace);
}
Dtzr();
}
private void Savedjm()
{
// 保存数据到记录集
try
{
savem = true;
//mid,oid,ny,bmdh,rybh,rymc,gxmc,tjsl
dqoid = Baroid.EditValue.ToString();
int midc = 0;
DataTable dt2c = new DataTable();
DataRow[] mrow;
DataRow nmrow;
dt2.DefaultView.RowFilter = ft2oid + "='" + dqoid + "'";
dt2.DefaultView.RowStateFilter = (DataViewRowState.CurrentRows);
for (int r = dt2.DefaultView.Count - 1; r >= 0; r--)
{
dt2.DefaultView[r]["sfgx"] = 0;
}
for (int r = 0; r < mtgv.RowCount; r++)
{
int dqh;
string gxmc;
string dqbh = mtgv.GetRowCellValue(r, mtgv.Columns["rybh"]).ToString();
string dqxm = mtgv.GetRowCellValue(r, mtgv.Columns["ryxm"]).ToString();
double tjsl;
for (int c = 2; c < mtgv.Columns.Count - 2; c++) // 最后一列为合计列
{
gxmc = mtgv.Columns[c].FieldName;
if (!Convert.IsDBNull(mtgv.GetRowCellValue(r, mtgv.Columns[gxmc])))
{
tjsl = Convert.ToDouble(mtgv.GetRowCellValue(r, mtgv.Columns[gxmc]));
}
else
{
tjsl = 0;
}
if (tjsl == 0 && c != 2)
{
continue;
}
mrow = dt2.Select("oid='" + dqoid + "' and rybh='" + dqbh + "' and gxmc='" + gxmc + "'");
if (mrow.Length > 0)
{
dqh = dt2.Rows.IndexOf(mrow[0]);
dt2.Rows[dqh]["tjsl"] = tjsl;
dt2.Rows[dqh]["sfgx"] = 1;
}
else
{
nmrow = dt2.NewRow();
nmrow["mid"] = KcDb.DBInteger("select x9_djmid('" + ft2 + "','" + ft2mid + "')");
nmrow["oid"] = dqoid;
nmrow["ny"] = dqywqj;
nmrow["bmdh"] = dqbmdh;
nmrow["bmmc"] = dqbmmc;
nmrow["gymc"] = dqgymc;
nmrow[ft2shbjzd] = 0;
nmrow[ft2djbjzd] = 0;
nmrow["rybh"] = dqbh;
nmrow["ryxm"] = dqxm;
nmrow["gxmc"] = gxmc;
nmrow["tjsl"] = tjsl;
nmrow["sfgx"] = 1;
dt2.Rows.Add(nmrow);
}
}
}
for (int r = dt2.DefaultView.Count - 1; r >= 0; r--)
{
if (Convert.ToInt32(dt2.DefaultView[r]["sfgx"]) == 0)
{
dt2.DefaultView[r].Delete();
}
}
savem = false;
KcDb.DBclose();
}
catch (Exception ex)
{
MsgExShow("保存单记录体数据", ex.Message, ex.Source, ex.StackTrace);
savem = false;
}
}
private void Savedjo()
{
try
{
// 数据表值
saving = true;
switch (sfzj)
{
case 1: // 添加
Baroid.EditValue = KcDb.DBString("select x9_djoid(1,'" + ft1 + "','" + ft1oid + "','" + oidqz + "')");
DataRow tjrow = dt1.NewRow();
Fmtexttorow(this, ref DJTab, ref tjrow, false);
tjrow[ft1oid] = Baroid.EditValue.ToString();
tjrow[ft1qj] = ywqj;
tjrow[ft1tz] = pDQYH;
tjrow[ft1sh] = "";
tjrow[ft1dj] = "";
tjrow["bmdh"] = dqbmdh;
tjrow["bmmc"] = dqbmmc;
tjrow["jjzl"] = dqjjzl;
tjrow["gymc"] = dqgymc;
dt1.Rows.Add(tjrow);
tjrow = null;
dqdjh = dt1.Rows.Count - 1;
break;
case 2: // 修改
case 3:
DataRow dr = dt1.Rows[dqdjh];
Fmtexttorow(this, ref DJTab, ref dr, false);
dt1.Rows[dqdjh].ItemArray = dr.ItemArray;
dt1.Rows[dqdjh][ft1qj] = ywqj;
dt1.Rows[dqdjh][ft1tz] = pDQYH;
dt1.Rows[dqdjh][ft1sh] = "";
dt1.Rows[dqdjh][ft1dj] = "";
dt1.Rows[dqdjh]["bmdh"] = dqbmdh;
dt1.Rows[dqdjh]["bmmc"] = dqbmmc;
dt1.Rows[dqdjh]["jjzl"] = dqjjzl;
dt1.Rows[dqdjh]["gymc"] = dqgymc;
break;
}
saving = false;
KcDb.DBclose();
}
catch (Exception ex)
{
saving = false;
MsgExShow("保存单记录头数据", ex.Message, ex.Source, ex.StackTrace);
}
}
private void SaveFmSet()
{
try
{
if (!sfzr)
{
return;
}
string fmset = "";
fmset = this.Top.ToString().Trim() + "," + this.Left.ToString().Trim() + "," + this.Width.ToString().Trim() + "," + this.Height.ToString().Trim() + "," +
Sp1.SplitterPosition.ToString().Trim() + "," + Convert.ToInt32(this.WindowState).ToString();
FmSave(fgnmc + dqbmmc, fmset);
if (mtgv != null)
{
if (mtgv.RowCount > 0)
{
fmset = mtgv.Columns[0].Width.ToString();
for (int g = 1; g <= mtgv.Columns.Count - 1; g++)
{
int cw = -1;
if (mtgv.Columns[g].Visible)
{
cw = mtgv.Columns[g].Width;
}
fmset = fmset + "," + cw.ToString();
}
FmSave(fgnmc + dqbmmc + "单据体", fmset + "," + mtgv.RowHeight.ToString());
}
}
}
catch (Exception ex)
{
MsgExShow("保存窗口参数", ex.Message, ex.Source, ex.StackTrace);
}
}
private void Text_buttonclick(object sender, ButtonPressedEventArgs e)
{
if (dqdjh > -1 || sfzj > 0)
{
ButtonEdit be = sender as ButtonEdit;
using (FmTEXT fmrt = new FmTEXT())
{
Text_edit(fmrt, this, ref be, e.Button.Caption);
}
}
}
private void Textss(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
try
{
string czstr = "";
czstr = XtraInputBox.Show("请输入单据号后四位的数值或其他字符:", pZTMC, "");
if (czstr == "")
{
return;
}
string czoid = "";
if (IsNumeric(czstr))
{
for (int r = dqdjh + 1; r <= dt1.Rows.Count - 1; r++)
{
czoid = dt1.Rows[r][ft1oid].ToString();
if (Convert.ToInt32(czstr) == Convert.ToInt32(czoid.Substring(czoid.Length - 4, 4)))
{
dqdjh = r;
Djload();
return;
}
}
for (int r = 0; r <= dqdjh - 1; r++)
{
czoid = dt1.Rows[r][ft1oid].ToString();
if (Convert.ToInt32(czstr) == Convert.ToInt32(czoid.Substring(czoid.Length - 4, 4)))
{
dqdjh = r;
Djload();
return;
}
}
}
if (czstr.Length < dqoid.Length)
{
for (int r = dqdjh + 1; r <= dt1.Rows.Count - 1; r++)
{
czoid = dt1.Rows[r][ft1oid].ToString();
if (czoid.IndexOf(czstr) > 0)
{
dqdjh = r;
Djload();
return;
}
}
for (int r = 0; r <= dqdjh - 1; r++)
{
czoid = dt1.Rows[r][ft1oid].ToString();
if (czoid.IndexOf(czstr) > 0)
{
dqdjh = r;
Djload();
return;
}
}
}
}
catch (Exception ex)
{
MsgExShow("单据查找", ex.Message, ex.Source, ex.StackTrace);
}
}
}
}