//#define isSysEidt using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SQLite; using ryCommon; namespace ryPrint.Mod { public partial class frmAddMod : Form { public frmAddMod() { InitializeComponent(); cbbType.SelectedIndex = 0; } bool isDataChanged = false; #region 添加控件函数 private myLabel AddControl(string name, string title, ClsProperty.En_Type sType, string format, string value) { return AddControl(name, title, sType, format, value,""); } private myLabel AddControl(string name, string title, ClsProperty.En_Type sType, string format, string value,string DataSource) { isDataChanged = true; myLabel ct = new myLabel(); ct.Size = new Size(100, 25); ct.BackColor = Color.Transparent; ct.Text = title; ct.Name = name; ct.Parent = picExpress; //ct.ReadOnly = true; ct.BackColor = Color.Transparent; ct.Cursor = Cursors.Arrow; ct.Font = new Font("黑体",10,FontStyle.Regular); //ct.MouseDown += new MouseEventHandler(ct_MouseDown); ct.KeyUp += Ct_KeyUp; ct.KeyDown += new KeyEventHandler(ct_KeyDown); //ct.MouseMove += new MouseEventHandler(ct_MouseMove); //ct.MouseUp += new MouseEventHandler(ct_MouseUp); ct.SizeChanged += new EventHandler(ct_SizeChanged); ct.Click += new EventHandler(ct_Click); //ct.sType = sType; //ct.title = title; //ct.format = format; //ct.value = value; ct.Property.DataSource = DataSource; ct.Property.Type = sType; ct.Property.Title = title; ct.Property.CustomFormat = format; ct.Property.Value = value; ct.Property.FontSize = ct.Font.Size; ct.Property.Size = new SizeF(rySet.pixeltomm(ct.Size.Width), rySet.pixeltomm(ct.Size.Height)); ct.Property.Postion = new PointF(rySet.pixeltomm(ct.Location.X), rySet.pixeltomm(ct.Location.Y)); new DragControl.MoveControl(ct); picExpress.Controls.Add(ct); return ct; } private void Ct_KeyUp(object sender, KeyEventArgs e) { //if (e.KeyCode == Keys.Up) //{ // isDataChanged = true; // myLabel ct = (myLabel)sender; // ct.Top--; //} //else if (e.KeyCode == Keys.Down) //{ // isDataChanged = true; // myLabel ct = (myLabel)sender; // ct.Top++; //} //else if (e.KeyCode == Keys.Left) //{ // isDataChanged = true; // myLabel ct = (myLabel)sender; // ct.Left--; //} //else if (e.KeyCode == Keys.Right) //{ // isDataChanged = true; // myLabel ct = (myLabel)sender; // ct.Left++; //} } void ct_SizeChanged(object sender, EventArgs e) { isDataChanged = true; myLabel ct = (myLabel)sender; LoadProperty(ct); } void ct_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Delete) { isDataChanged = true; myLabel ct = (myLabel)sender; picExpress.Controls.Remove(ct); propertyGrid1.SelectedObject = null; } } private void AddControl(string name, ClsProperty.En_Type _type) { if (GetControl(name) != null) { MessageBox.Show("该项已经存在", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { AddControl(name, Enum.GetName(typeof(ClsProperty.En_Type), _type), _type, "", ""); } } private myLabel GetControl(string name) { foreach (Control ct in picExpress.Controls) { if (ct.Name == name) { if (ct is myLabel) { return (myLabel)ct; } else { return null; } } } return null; } #endregion private void LoadProperty(myLabel ct) { propertyGrid1.SelectedObject = ct.Property; } void ct_Click(object sender, EventArgs e) { myLabel ct = (myLabel)sender; LoadProperty(ct); } #region 控件拖放 private Point position; private bool capture = false; private void ct_MouseDown(System.Object sender, System.Windows.Forms.MouseEventArgs e) { //左键的话,标志位为true(表示拖拽开始) if ((e.Button == System.Windows.Forms.MouseButtons.Left)) { position = new Point(e.X, e.Y); capture = true; } } private void ct_MouseMove(System.Object sender, System.Windows.Forms.MouseEventArgs e) { if (capture) { if (sender is TextBox) { TextBox ct = (TextBox)sender; ct.Location = new Point(e.X + ct.Left - position.X, e.Y + ct.Top - position.Y); // this.Label1.Location = new Point(this.Label1.Left, this.label1.Top); } else if (sender is myLabel) { myLabel ct = (myLabel)sender; ct.Location = new Point(e.X + ct.Left - position.X, e.Y + ct.Top - position.Y); // this.label1.Location = new Point(this.label1.Left, this.label1.Top); } } } private void ct_MouseUp(System.Object sender, System.Windows.Forms.MouseEventArgs e) { capture = false; } private void picEXpress_DragEnter(object sender, DragEventArgs e) { //当Button被拖拽到WinForm上时候,鼠标效果出现 if ((e.Data.GetDataPresent(typeof(TextBox))) || (e.Data.GetDataPresent(typeof(myLabel)))) { e.Effect = DragDropEffects.Move; } } #endregion private string ResetLocationControl() { ryCommon.clsStorage tStor = new ryCommon.clsStorage(); foreach (Control ct1 in picExpress.Controls) { if (ct1 is myLabel) { myLabel ct = (myLabel)ct1; ct.Size = new Size(rySet.mmtopixel(ct.Property.Size.Width), rySet.mmtopixel(ct.Property.Size.Height)); ct.Location = new Point(rySet.mmtopixel(ct.Property.Postion.X), rySet.mmtopixel(ct.Property.Postion.Y)); } } return tStor.GetXMLText(); } private decimal pixelTomm_Width(int pixel) { return pixel * numWidth.Value / picExpress.Width; } private decimal pixelTomm_Height(int pixel) { return pixel * numHeight.Value / picExpress.Height; } private string SaveControl() { ryCommon.clsStorage tStor = new ryCommon.clsStorage(); foreach (Control ct1 in picExpress.Controls) { if (ct1 is myLabel) { myLabel ct =(myLabel)ct1; tStor.AddNode2("Name",ct.Name); tStor.SetAttrValue("Title", ct.Property.Title); tStor.SetAttrValue("Width", rySet.pixeltomm(ct.Size.Width)); tStor.SetAttrValue("Height", rySet.pixeltomm(ct.Size.Height)); tStor.SetAttrValue("FontSize", ct.Font.Size); tStor.SetAttrValue("Left", rySet.pixeltomm(ct.Location.X)); tStor.SetAttrValue("Top", rySet.pixeltomm(ct.Location.Y)); //tStor.SetAttrValue("Left", ct.Location.X>picExpress.Image.Width?0:ct.Location.X); //tStor.SetAttrValue("Top", ct.Location.Y>picExpress.Image.Height?0:ct.Location.Y); tStor.SetAttrValue("Multiline", ct.Property.Multiline); tStor.SetAttrValue("align", ct.AlignStr); tStor.SetAttrValue("format", ct.Property.CustomFormat); tStor.SetAttrValue("value", ct.Property.Value); tStor.SetAttrValue("sType", (int)ct.Property.Type); tStor.SetAttrValue("LineSpace", ct.Property.LineSpace); tStor.SetAttrValue("DataSource", ct.Property.DataSource); tStor.SetAttrValue("NoPrint", ct.Property.NoPrint); } } return tStor.GetXMLText(); } private void LoadControl(string xml) { ryCommon.clsStorage tStor = new ryCommon.clsStorage(xml); System.Xml.XmlNodeList list = tStor.GetList(); for (int i = 0; i < list.Count; i++) { tStor.SelectNode3(list[i]); myLabel ct = new myLabel(); ct.Font = new Font("黑体", tStor.GetAttrValueByInt("FontSize", 10), FontStyle.Regular); ct.Property.Multiline = tStor.GetAttrValueByBool("Multiline", false); ct.Size = new Size(rySet.mmtopixel(tStor.GetAttrValue("Width", 50f)), rySet.mmtopixel(tStor.GetAttrValue("Height", 10f))); if (ct.Size.Height == 0) { ct.Height = 21; } if (ct.Size.Width == 0) { ct.Width = 100; } ct.Property.Size= new SizeF((float)tStor.GetAttrValue("Width", 50f), (float)tStor.GetAttrValue("Height", 10f)); ct.Location = new Point(rySet.mmtopixel(tStor.GetAttrValue("Left", 0f)), rySet.mmtopixel(tStor.GetAttrValue("Top", 0f))); ct.Property.Postion = new PointF((float)tStor.GetAttrValue("Left", 0f),(float)tStor.GetAttrValue("Top", 0f)); if (ct.Location.Y < 0) { ct.Top = 0; } if (ct.Location.X < 0) { ct.Left = 0; } //ct.Size = new Size(tStor.GetAttrValue("Width", 50), tStor.GetAttrValue("Height", 10)); //if (ct.Size.Height == 0) { ct.Height = 21; } //if (ct.Size.Width == 0) { ct.Width = 100; } //ct.Property.Size = new SizeF((float)pixelTomm_Width(tStor.GetAttrValue("Width", 50)), (float)pixelTomm_Height(tStor.GetAttrValue("Height", 10))); ////ct.Location = new Point((int)pixelTomm_Width(tStor.GetAttrValue("Left", 0)), (int)pixelTomm_Height(tStor.GetAttrValue("Top", 0))); //ct.Property.Postion = new PointF((float)pixelTomm_Width(tStor.GetAttrValue("Left", 0)), (float)pixelTomm_Height(tStor.GetAttrValue("Top", 0))); //ct.Size = new Size(tStor.GetAttrValue("Width", 50),tStor.GetAttrValue("Height", 10)); //ct.Location = new Point(tStor.GetAttrValue("Left", 0),tStor.GetAttrValue("Top", 0)); // Mod.ClsProperty.en_Type _type = Mod.ClsProperty.en_Type.自定义; try { _type = (Mod.ClsProperty.en_Type)tStor.GetAttrValueByInt("sType", 0); } catch { } ct.Property.Type = _type; ct.Property.Title = tStor.GetAttrValue("Title"); ct.Property.LineSpace = tStor.GetAttrValue("LineSpace",0); ct.Name = tStor.GetAttrValue("Name"); ct.Parent = picExpress; //ct.ReadOnly = true; ct.BackColor = Color.Transparent; ct.Cursor = Cursors.Arrow; ct.SetAlign(tStor.GetAttrValue("align")); ct.Property.Value = tStor.GetAttrValue("value"); ct.Property.CustomFormat = tStor.GetAttrValue("format"); ct.Property.DataSource = tStor.GetAttrValue("DataSource"); ct.Property.NoPrint = tStor.GetAttrValue("NoPrint",false); ct.Property.Type = _type; ct.Refresh(); //ct.MouseDown += new MouseEventHandler(ct_MouseDown); //ct.MouseMove += new MouseEventHandler(ct_MouseMove); //ct.MouseUp += new MouseEventHandler(ct_MouseUp); new DragControl.MoveControl(ct); ct.Click += new EventHandler(ct_Click); ct.KeyUp += Ct_KeyUp; ct.KeyDown += new KeyEventHandler(ct_KeyDown); ct.SizeChanged+=new EventHandler(ct_SizeChanged); picExpress.Controls.Add(ct); } } private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e) { isDataChanged = true; ClsProperty item = (ClsProperty)propertyGrid1.SelectedObject; myLabel ct = GetControl(item.Name); if (ct != null) { ct.Property = item; ct.Refresh(); } } private void btnCancel_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; } public int isAdd = 1; public string selectId = "-1"; private void btnOK_Click(object sender, EventArgs e) { if (txtName.Text == "") { MessageBox.Show("请输入名称", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } isDataChanged = false; ryQuickSQL mySQL = new ryQuickSQL(Table.s_Express.TableName); mySQL.AddField(Table.s_Express.Name, txtName.Text); mySQL.AddField(Table.s_Express.PicPath, txtPicPath.Text); mySQL.AddField(Table.s_Express.Width, numWidth.Value); mySQL.AddField(Table.s_Express.Height,numHeight.Value); mySQL.AddField(Table.s_Express.SysId,0); mySQL.AddField(Table.s_Express.billType, cbbType.SelectedIndex); mySQL.AddField(Table.s_Express.ModXML, SaveControl()); mySQL.AddField(Table.s_Express.Des, txtDes.Text); if (isAdd >= 1) { mySQL.AddField(Table.s_Express.AddTime, DateTime.Now); } #if isSysEidt ryCommon.clsDb myDb = new ryCommon.clsDb(clsPram.SysDbPath, clsPram.DbPwd); #else ryCommon.clsDb myDb = new ryCommon.clsDb(clsPram.UserExpressDbPath, clsPram.DbPwd); #endif myDb.ConnOrCreateDb(); if (isAdd >= 1) { myDb.ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL.GetSQLiteParameter()); } else { myDb.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + selectId, mySQL.GetSQLiteParameter()); } this.DialogResult = DialogResult.OK; } private void frmAddMod_Load(object sender, EventArgs e) { #if isSysEidt Text += "(调试模式)"; #endif } public void GetDataInfoById(string id) { #region 数据库 try { #if isSysEidt ryCommon.clsDb myDb = new ryCommon.clsDb(clsPram.SysDbPath, clsPram.DbPwd); #else ryCommon.clsDb myDb = new ryCommon.clsDb(clsPram.UserExpressDbPath, clsPram.DbPwd); #endif myDb.ConnOrCreateDb(); SQLiteCommand cmd = myDb.SQLite_cn.CreateCommand(); cmd.CommandText = "select * from " +Table.s_Express.TableName + " where id=@id"; cmd.Parameters.Add("@id", DbType.Int32); //id cmd.Parameters["@id"].Value = id; SQLiteDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { try { txtName.Text = reader[Table.s_Express.Name].ToString(); txtDes.Text = reader[Table.s_Express.Des].ToString(); txtPicPath.Text = reader[Table.s_Express.PicPath].ToString(); numWidth.Value=Convert.ToDecimal(reader[Table.s_Express.Width]); numHeight.Value = Convert.ToDecimal(reader[Table.s_Express.Height]); try { cbbType.SelectedIndex = Convert.ToInt32(reader[Table.s_Express.billType]); } catch { cbbType.SelectedIndex = 0; } #if isSysEidt string picPath = clsPram.GetTruePath(reader[Table.s_Express.PicPath].ToString(), 1); #else string picPath = clsPram.GetTruePath(reader[Table.s_Express.PicPath].ToString(), Convert.ToInt32(reader[Table.s_Express.SysId])); #endif if (System.IO.File.Exists(picPath)) { Image image = Image.FromFile(picPath); picExpress.Width =rySet.mmtopixel(Convert.ToDouble(reader[Table.s_Express.Width])); picExpress.Height = rySet.mmtopixel(Convert.ToDouble(reader[Table.s_Express.Height])); picExpress.Image = image; //numWidth.Value = Convert.ToDecimal(rySet.InchesTomm(picExpress.Width / Convert.ToDecimal(picExpress.Image.HorizontalResolution))); // numHeight.Value = Convert.ToDecimal(rySet.InchesTomm(picExpress.Height / Convert.ToDecimal(picExpress.Image.VerticalResolution))); } LoadControl(reader[Table.s_Express.ModXML].ToString()); } catch { } break; } reader.Close(); cmd.Dispose(); } catch { } #endregion isDataChanged = false; } #region 添加控件菜单 private void 寄件人姓名ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.寄件人姓名); } private void 寄件人电话ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.寄件人电话); } private void 寄件人地址ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.寄件人地址); } private void 收件人姓名ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.收件人姓名); } private void 收件人电话ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.收件人电话); } private void 收件人地址ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.收件人地址); } private void 寄件人邮编ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.寄件人邮编); } private void 收件人邮编ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.收件人邮编); } private void 寄件人单位ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.寄件人公司); } private void 收件人单位ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.收件人公司); } /// /// 获取新的控件名 /// /// private string GetNewName() { int i = 1; while (true) { if (GetControl("custom" + i.ToString()) == null) { return "custom" + i.ToString(); } i++; } } /// /// 获取新的控件名 /// /// private string GetNewName2() { int i = 1; while (true) { if (GetControl("lbl" + i.ToString()) == null) { return "lbl" + i.ToString(); } i++; } } private void 自定义ToolStripMenuItem_Click(object sender, EventArgs e) { string name = GetNewName(); AddControl(name, "自定义" + name.Replace("custom", ""), ClsProperty.En_Type.自定义, "", ""); } private void btnAddControl_Click(object sender, EventArgs e) { Button ct = (Button)sender; Point p = new Point(0, ct.Height); contextMenuStrip1.Show(ct, p); } #endregion private void btnUpdate_Click(object sender, EventArgs e) { #if isSysEidt string picPath = clsPram.GetTruePath(txtPicPath.Text,1); #else string picPath = clsPram.GetTruePath(txtPicPath.Text,0); #endif if (System.IO.File.Exists(picPath)) { Image image = Image.FromFile(picPath); picExpress.Image = image; numWidth.Value=Convert.ToDecimal(rySet.InchesTomm(image.Width/ Convert.ToDecimal(image.HorizontalResolution))); numHeight.Value = Convert.ToDecimal(rySet.InchesTomm(image.Height / Convert.ToDecimal(image.VerticalResolution))); picExpress.Width =rySet.mmtopixel((float)numWidth.Value); picExpress.Height = rySet.mmtopixel((float)numHeight.Value); ResetLocationControl(); //picExpress. } else { picExpress.Image = null; } } private void txtName_TextChanged(object sender, EventArgs e) { isDataChanged = true; } private void txtPicPath_TextChanged(object sender, EventArgs e) { isDataChanged = true; #if isSysEidt string picPath = clsPram.GetTruePath(txtPicPath.Text, 1); #else string picPath = clsPram.GetTruePath(txtPicPath.Text,0); #endif if (System.IO.File.Exists(picPath)) { Image image = Image.FromFile(picPath); picExpress.Image = image; } else { picExpress.Image = null; } } private void txtDes_TextChanged(object sender, EventArgs e) { isDataChanged = true; } private void frmAddMod_FormClosing(object sender, FormClosingEventArgs e) { if (isDataChanged && DialogResult != DialogResult.OK) { if (MessageBox.Show("数据已经被修改,确定要不保存退出吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { e.Cancel = true; return; } } } private void picExpress_Click(object sender, EventArgs e) { } private void 省份ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.寄件人省份); } private void 寄件人市地址ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.寄件人所在市); } private void 寄件人所在县区ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.寄件人县区); } private void 寄件人详细地址ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.寄件人详细地址); } private void 收件人省份ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.收件人省份); } private void 收件人所在市ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.收件人所在市); } private void 收件人所在县区ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.收件人县区); } private void 收件人详细地址ToolStripMenuItem_Click(object sender, EventArgs e) { AddControl(GetNewName2(), ClsProperty.En_Type.收件人详细地址); } private void propertyGrid1_Click(object sender, EventArgs e) { } private void btnCalcDpi_Click(object sender, EventArgs e) { frmCalcDpi frm = new frmCalcDpi(); frm.Icon = Icon; frm.kd_Width = picExpress.Image.Width; if(frm.ShowDialog()==DialogResult.OK) { numWidth.Value = frm.dpiValue; } } private void btnAddShop_Click(object sender, EventArgs e) { Button ct = (Button)sender; Point p = new Point(0, ct.Height); contextMenuStrip2.Show(ct, p); } private void 货品名称ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl("货品名称"); } private void 货品单位ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl("货品单位"); } private void 货品规格ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl("货品规格"); } private void 货品数量ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl("货品数量"); } private void AddDataControl(string name) { AddControl(GetNewName2(), name, ClsProperty.En_Type.数据字段, "", name); } private void AddDataControl2(string name) { AddControl(GetNewName2(), name, ClsProperty.En_Type.数据字段, "", name,"info"); } private void 货品价格ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl("货品单价"); } private void btnBrowser_Click(object sender, EventArgs e) { if(openFileDialog1.ShowDialog()==DialogResult.OK) { txtPicPath.Text = openFileDialog1.FileName.Replace(Application.StartupPath + "\\Db\\Pics","").Replace(Application.StartupPath, ""); } } private void 货品总价格ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl("货品总价"); } private void 订单单号ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl2("单号"); } private void 发货备注ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl2("发货备注"); } private void 订单优惠前价格ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl2("订单优惠前价格"); } private void 优惠减免ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl2("优惠减免"); } private void 订单优惠后价格ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl2("订单优惠后价格"); } private void 客户姓名ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl2("客户姓名"); } private void 客户电话ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl2("客户电话"); } private void 客户公司ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl2("客户公司"); } private void 客户地址ToolStripMenuItem_Click(object sender, EventArgs e) { AddDataControl2("客户地址"); } } }