using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml; using CoreFS.CA06; using Core.LZMes.Client.UIM.comm; namespace Core.LZMes.Client.UIM { public partial class UIM010220 : FrmBase { private int areaType = 1;//原料库 private string _StockNo = "";//库存编号 private int _MinRow = 1;//最小行数 private int _MaxRow = 1;//最大行数 private Bitmap _CoilBitmap = new Bitmap("./images/OTHER/coil1.gif"); private Bitmap _YardBitmap = new Bitmap("./images/OTHER/yard.png"); public UIM010220() { InitializeComponent(); } public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "Query": this.DoQuery(); break; case "Exit": this.Close(); break; } } private void DoQuery() { } private void UIM010220_Load(object sender, EventArgs e) { OutlookBar outlookBar = new OutlookBar(); outlookBar.Location = new Point(0, 0); outlookBar.Size = new Size(150, this.ClientSize.Height); outlookBar.Dock = DockStyle.Fill; outlookBar.BorderStyle = BorderStyle.FixedSingle; panel3.Controls.Add(outlookBar); outlookBar.Initialize(); IconPanel iconPanel1 = new IconPanel(); IconPanel iconPanel2 = new IconPanel(); IconPanel iconPanel3 = new IconPanel(); outlookBar.AddBand("连退后库", iconPanel1, new EventHandler(ButtonEvent)); outlookBar.AddBand("重卷前库", iconPanel2, new EventHandler(ButtonEvent)); outlookBar.AddBand("重卷后库", iconPanel3, new EventHandler(ButtonEvent)); Image rowIcon = Image.FromFile("./images/OTHER/img1.ico"); iconPanel1.AddIcon("一区(1-10)", rowIcon, new EventHandler(PanelEvent)); iconPanel1.AddIcon("二区(11-20)", rowIcon, new EventHandler(PanelEvent)); iconPanel1.AddIcon("三区(21-30)", rowIcon, new EventHandler(PanelEvent)); iconPanel1.AddIcon("四区(31-40)", rowIcon, new EventHandler(PanelEvent)); iconPanel1.AddIcon("五区(41-57)", rowIcon, new EventHandler(PanelEvent)); iconPanel1.AddIcon("六区(58-74)", rowIcon, new EventHandler(PanelEvent)); iconPanel1.AddIcon("七区(75-91)", rowIcon, new EventHandler(PanelEvent)); iconPanel1.AddIcon("八区(92-108)", rowIcon, new EventHandler(PanelEvent)); iconPanel2.AddIcon("一区(1-10)", rowIcon, new EventHandler(PanelEvent)); iconPanel2.AddIcon("二区(11-21)", rowIcon, new EventHandler(PanelEvent)); iconPanel2.AddIcon("三区(22-32)", rowIcon, new EventHandler(PanelEvent)); iconPanel2.AddIcon("四区(33-43)", rowIcon, new EventHandler(PanelEvent)); iconPanel2.AddIcon("五区(44-54)", rowIcon, new EventHandler(PanelEvent)); iconPanel2.AddIcon("六区(55-65)", rowIcon, new EventHandler(PanelEvent)); iconPanel2.AddIcon("七区(66-76)", rowIcon, new EventHandler(PanelEvent)); iconPanel2.AddIcon("八区(77-87)", rowIcon, new EventHandler(PanelEvent)); iconPanel2.AddIcon("九区(88-100)", rowIcon, new EventHandler(PanelEvent)); iconPanel3.AddIcon("一区(1-15)", rowIcon, new EventHandler(PanelEvent)); iconPanel3.AddIcon("二区(16-35)", rowIcon, new EventHandler(PanelEvent)); iconPanel3.AddIcon("三区(36-50)", rowIcon, new EventHandler(PanelEvent)); iconPanel3.AddIcon("四区(51-65)", rowIcon, new EventHandler(PanelEvent)); iconPanel3.AddIcon("五区(66-80)", rowIcon, new EventHandler(PanelEvent)); iconPanel3.AddIcon("六区(81-102)", rowIcon, new EventHandler(PanelEvent)); outlookBar.SelectBand(0); ShowStockCount("10"); } public void ButtonEvent(object sender, EventArgs e) { Control ctrl = (Control)sender; BandButton bandButton = ctrl as BandButton; string stockNo = ""; switch(bandButton.Text) { case "连退后库": stockNo = "10"; break; case "重卷前库": stockNo = "11"; break; case "重卷后库": stockNo = "12"; break; } ShowStockCount(stockNo); } public void PanelEvent(object sender, EventArgs e) { Control ctrl = (Control)sender; PanelIcon panelIcon = ctrl.Tag as PanelIcon; string text = panelIcon.Text; string rowRange = text.Substring(text.IndexOf("(")+1, text.IndexOf(")") - text.IndexOf("(") - 1); //MessageBox.Show(panelIcon.Parent.Parent.Text + " " + rowRange); string[] rowRanges = rowRange.Split(new char[] { '-' }); ShowYard(panelIcon.Parent.Parent.Text, int.Parse(rowRanges[0]), int.Parse(rowRanges[1])); } private void ShowStockCount(string stockNo) { this.dataSet1.Tables["STOCK_COUNT"].Clear(); CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = "UIM.UIM010220"; ccp.MethodName = "queryStockCount"; ccp.ServerParams = new object[] { stockNo }; ccp.SourceDataTable = this.dataSet1.Tables["STOCK_COUNT"]; this.ExecuteQueryToDataTable(ccp, CoreInvokeType.Internal); if (dataSet1.Tables["STOCK_COUNT"].Rows.Count > 0) { textBox1.Text = dataSet1.Tables["STOCK_COUNT"].Rows[0]["YARD_COUNT"].ToString(); textBox2.Text = dataSet1.Tables["STOCK_COUNT"].Rows[0]["COIL_COUNT"].ToString(); textBox3.Text = dataSet1.Tables["STOCK_COUNT"].Rows[0]["WEIGHT_SUM"].ToString(); } while (panel2.Controls.Count > 0) { panel2.Controls.RemoveAt(0); } } private void ShowYard(string stockNo, int minRow, int maxRow) { while(panel2.Controls.Count > 0) { panel2.Controls.RemoveAt(0); } if (stockNo == "连退后库") { _StockNo = "10"; } else if(stockNo == "重卷前库") { _StockNo = "11"; } else if(stockNo == "重卷后库") { _StockNo = "12"; } _MinRow = minRow; _MaxRow = maxRow; Panel panel = new Panel(); panel.Dock = DockStyle.Fill; panel.AutoScroll = true; panel.Visible = false; panel.MouseClick += new MouseEventHandler(pnl_MouseClick); panel2.Controls.Add(panel); panel.VisibleChanged +=new EventHandler(panel_Paint); panel.Visible = true; //.DrawLine(new Pen(Color.LightBlue,2),new Point(0,100),new Point(1000,100)); } private void panel_Paint(object sender, EventArgs e) { Panel pnl = ((Panel)sender); for (int i = 0; i <= _MaxRow - _MinRow; i++) { //e.Graphics.DrawPolygon(new Pen(Color.LightBlue, 6), new Point[] { new Point(50, 110 + (i * 80)), new Point(1000, 110 + (i * 80)), new Point(990, 115 + (i * 80)), new Point(40, 115 + (i * 80)) }); CoilPictureBox yard = new CoilPictureBox(); yard.Image = _YardBitmap; //BitmapRegion.CreateControlRegion(yard, new Bitmap("./images/OTHER/yard.png")); yard.Top = 110 + (i * 80); yard.Left = 50; yard.Width = 920; yard.Height = 17; yard.SizeMode = PictureBoxSizeMode.StretchImage; yard.SendToBack(); pnl.Controls.Add(yard); } DataTable dt = dataSet1.Tables["AREA_COILS"]; dt.Clear(); CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = "UIM.UIM010220"; ccp.MethodName = "queryAreaCoils"; ccp.ServerParams = new object[] { _StockNo,_MinRow,_MaxRow }; ccp.SourceDataTable = dt; this.ExecuteQueryToDataTable(ccp, CoreInvokeType.Internal); if (dt.Rows.Count > 0) { int rowIndex, columnIndex, layerIndex, columnHead = 0, rowHead = 0,rowI = 0,colI = 0; string coilNo = string.Empty,clfNo = string.Empty; foreach (DataRow dr in dt.Rows) { rowIndex = Convert.ToInt32(dr["CLF_ROW"]); columnIndex = Convert.ToInt32(dr["CLF_COL"]); layerIndex = Convert.ToInt32(dr["CLF_FL"]); coilNo = Convert.ToString(dr["OLD_SAMPL_NO"]); clfNo = Convert.ToString(dr["CLF_NO"]); if (rowIndex > rowHead) { rowHead++; if (rowHead >= _MinRow) { Label lblRow = new Label(); lblRow.Name = "ROW_" + Convert.ToString(rowHead) + "_" + clfNo; lblRow.Text = rowHead.ToString(); lblRow.Size = new Size(25, 20); lblRow.Location = new Point(10, 110 + (rowHead - _MinRow) * 80); lblRow.TextAlign = ContentAlignment.MiddleCenter; //lblRow.BackColor = Color.SkyBlue; pnl.Controls.Add(lblRow); lblRow.BringToFront(); } } if (columnIndex > columnHead) { columnHead++; Label lblColumn = new Label(); lblColumn.Name = "COL_"+ Convert.ToString(columnHead)+"_"+clfNo; lblColumn.Text = Convert.ToString(columnHead); lblColumn.Size = new Size(30, 20); lblColumn.Location = new Point(columnHead * 60 + 13, 25); lblColumn.TextAlign = ContentAlignment.MiddleCenter; //lblColumn.BackColor = Color.SkyBlue; pnl.Controls.Add(lblColumn); lblColumn.BringToFront(); } //if (layerIndex == 1) //{ // PictureBox yard = new PictureBox(); // yard.Name = Convert.ToString(dr["BUTTRESS_NO"]); // yard.Image = y_Image; // yard.Width = 40; // yard.Height = 14; // yard.Left = columnIndex * 60 + 8; // yard.Top = rowIndex * 60 + 12; // yard.SizeMode = PictureBoxSizeMode.StretchImage; // pnl.Controls.Add(yard); // yard.SendToBack(); //} if (!string.IsNullOrEmpty(coilNo)) { string loadLoc = Convert.ToString(dr["CUR_LOAD_LOC"]); Control []ctrls = new Control[3]; int i = 0; foreach (Control ctrl in pnl.Controls) { if (ctrl is CoilPictureBox && ((CoilPictureBox)ctrl).CurLoadLoc == loadLoc) { ctrls[i] = ctrl; if (i++ == 3) { break; } } } if (i >= 3) { break; } CoilPictureBox coil = new CoilPictureBox(); BitmapRegion.CreateControlRegion(coil, _CoilBitmap); coil.Name = coilNo; coil.Width = 50; coil.Height = 50; coil.Left = columnIndex * 60 + 6 + (layerIndex - 1) * 30; coil.Top = 80 + (rowIndex-_MinRow) * 80 - (layerIndex - 1) * 5; coil.CurLoadLoc = loadLoc; string text = "钢卷详细信息\r\n"; text = string.Format("{0}钢卷号: {1}\r\n", text, coilNo); text = string.Format("{0}垛位 : {1}\r\n", text, loadLoc); text = string.Format("{0}牌号 : {1}\r\n", text, Convert.ToString(dr["SPEC_STL_GRD"])); text = string.Format("{0}厚度 : {1}\r\n", text, Convert.ToString(dr["COIL_THK"])); text = string.Format("{0}宽度 : {1}\r\n", text, Convert.ToString(dr["COIL_WTH"])); text = string.Format("{0}重量 : {1}KG\r\n", text, Convert.ToString(dr["ACT_WGT"])); text = string.Format("{0}合同号: {1}\r\n", text, Convert.ToString(dr["ORD_NO"])); text = string.Format("{0}订单号: {1}", text, Convert.ToString(dr["ORD_SEQ"])); coil.ToolTipText = text; coil.Cursor = Cursors.Hand; coil.SizeMode = PictureBoxSizeMode.StretchImage; coil.MouseEnter += new EventHandler(picBox_MouseEnter); coil.MouseLeave += new EventHandler(picBox_MouseLeave); //同一垛位钢卷移动位置 foreach (Control ctrl in ctrls) { if (ctrl != null) { ctrl.Left -= 30 / 2; } } coil.Left += 30 / 2 * i; pnl.Controls.Add(coil); coil.BringToFront(); } } //PictureBox pb1 = new PictureBox(); //BitmapRegion.CreateControlRegion(pb1, bitmap); //pb1.Left = 60; //pb1.Top = 73; //pb1.Width = 50; //pb1.Height = 50; //pb1.BackColor = Color.Transparent; //((Panel)sender).Controls.Add(pb1); //e.Graphics.DrawImage(Image.FromFile("./images/OTHER/coil1.gif"), 40, 73, 50, 50); } } private void pnl_MouseClick(object sender, MouseEventArgs e) { ((Panel)sender).Focus(); } private void picBox_MouseEnter(object sender, EventArgs e) { CoilPictureBox picBox = (CoilPictureBox)sender; toolTip1.Show(picBox.ToolTipText, picBox); } private void picBox_MouseLeave(object sender, EventArgs e) { toolTip1.Hide((IWin32Window)sender); } } }