LayoutMstBaseFor.cs 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746
  1. 
  2. using Cksoft.Unity;
  3. using DllEapEntity;
  4. using DllHsms;
  5. using DllPubInfo;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.ComponentModel;
  9. using System.Data;
  10. using System.Drawing;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using System.Windows.Forms;
  15. namespace DllXqManager
  16. {
  17. public partial class LayoutMstBaseFor : Form
  18. {
  19. private LayoutMst CurrEntity = null;
  20. private List<LayoutDetail> CurrDs = null;
  21. //private List<MoveControl> CurrMoveControl = new List<MoveControl>();
  22. private MachineQuery CurrMachineQuery = null;
  23. private const int LocX = 20;
  24. private const int LocY = 20;
  25. private LayoutDetailBase CurrLayoutDetailBase = null;
  26. private DataSet ds = null;
  27. public LayoutMstBaseFor(LayoutMst id)
  28. {
  29. InitializeComponent();
  30. CurrEntity = id;
  31. //SetCurrID(id);
  32. ds = GetPcode();
  33. }
  34. public void SetCurrID(LayoutMst id)
  35. {
  36. //CurrEntity = id;
  37. InitForm(id);
  38. }
  39. private void InitForm(LayoutMst id)
  40. {
  41. //foreach (Control item in panel2.Controls)
  42. //{
  43. // panel2.Controls.Remove(item);
  44. // item.Dispose();
  45. //}
  46. //panel2.Controls.Clear();
  47. //panel2.Refresh();
  48. CurrEntity = id;
  49. if (CurrEntity == null)
  50. {
  51. CurrEntity = new LayoutMst();
  52. }
  53. //用实体的值去赋值界面控件显示的值
  54. string errorinfo = "";
  55. int result = DllPubInfo.PubInfo.InitFormControl<LayoutMst>(panel1, CurrEntity, null, ref errorinfo);
  56. if (result < 0)
  57. MessageBox.Show(errorinfo);
  58. Filldgvmain(" and a.preid=" + CurrEntity.ID);
  59. MoveControl.CurrParent = panel2;
  60. ShowAllEntity();
  61. Rectory = new SetControlRectangle(panel2);
  62. Rectory.SetRectangel += new SetControlRectangle.SelectRectangel(Rectory_SetRectangel);
  63. PubInfo.DefaultLayout = editFCode.Text.Trim();
  64. }
  65. private DataSet GetPcode()
  66. {
  67. string strsql = $@"SELECT a.FCode FCode,s.FName regionNmae
  68. from Machine a
  69. left outer join staff b on a.RecCode =b.FCode
  70. left outer join staff c on a.ModCode =c.FCode
  71. left outer join macmodel d on a.MModeID =d.id
  72. left outer join supplier e on d.SupplierID =e.id
  73. left outer join mactprocess f on a.id =f.macid
  74. left outer join tprocess g on f.PCode =g.FCode
  75. left outer join constitem h on a.CallPMode =h.subid and h.preid=14
  76. left outer join factoryregion i on a.factoryid =i.id
  77. left outer join macstatus01 j on a.FCode =j.MacCode
  78. LEFT JOIN factoryregion s on a.regionid =s.id";
  79. string error = "";
  80. DataSet ds = PubInfo.Select(strsql, "layoutmst", ref error);
  81. return ds;
  82. }
  83. private void ShowAllEntity()
  84. {
  85. if (CurrDs == null)
  86. return;
  87. MoveControl.ClearAllControl();
  88. //显示实体
  89. foreach (var temprow in CurrDs)
  90. ShowSingleEntity(temprow);
  91. MoveControl.AddFrameControl();
  92. }
  93. private void Filldgvmain(string condition)
  94. {
  95. try
  96. {
  97. Cursor = Cursors.WaitCursor;
  98. string errorinfo = "";
  99. CurrDs = PubInfo.SelectForCondition<LayoutDetail>(condition, ref errorinfo).ToList();
  100. if (CurrDs == null)
  101. {
  102. MessageBox.Show(errorinfo);
  103. return;
  104. }
  105. }
  106. catch (Exception ex)
  107. {
  108. MessageBox.Show("操作发生错误,错误信息为:" + ex.Message.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  109. }
  110. finally
  111. {
  112. Cursor = Cursors.Default;
  113. }
  114. //dgvmain.Columns["选择"].ReadOnly = false;
  115. }
  116. //将实体显示在面板上
  117. private int ShowSingleEntity(LayoutDetail row)
  118. {
  119. //先查找是否已经显示
  120. foreach (Control tempcontrol in panel2.Controls)
  121. {
  122. if (!(tempcontrol is TEntityControl))
  123. continue;
  124. LayoutDetail temprow = (tempcontrol as TEntityControl).CurrEntity;
  125. if (temprow.ID == row.ID)
  126. return 1;
  127. }
  128. //row["报警代码"] = "AlarmCode";
  129. //row["status"] = "100";
  130. if (ds != null)
  131. {
  132. //var ds = dsp.Tables[0].AsEnumerable().Where(l => l.Field<string>("FCode")==maccode).Select(l=>l.Field<string>("PCode")).FirstOrDefault();// PubInfo.Select(pcondition, "MacTProcess", ref errorinfo);
  133. DataRow[] temprows = ds.Tables[0].Select($"FCode='{row.FCode}'", "");
  134. if (temprows.Length > 0)
  135. {
  136. row.FName = temprows[0]["regionNmae"].ToString().Trim();
  137. }
  138. }
  139. TEntityControl control = new TEntityControl(row);
  140. //计算坐标和大小
  141. int w = (int)(panel2.Width * decimal.Parse(row.SizeW.ToString()));
  142. int h = (int)(panel2.Height * decimal.Parse(row.SizeH.ToString()));
  143. int x = (int)(panel2.Width * decimal.Parse(row.LocX.ToString()));
  144. int y = (int)(panel2.Height * decimal.Parse(row.LocY.ToString()));
  145. control.Size = new Size(w, h);
  146. control.Location = new Point(x, y);
  147. control.BackColor = Color.Gray;
  148. // control.SetFontColor(Color.Black);
  149. control.DoubleClick += Control_DoubleClick;
  150. panel2.Controls.Add(control);
  151. MoveControl movecontrol = new MoveControl(control, cms);
  152. return 1;
  153. }
  154. private void ShowLayoutDetailBase(LayoutDetail row)
  155. {
  156. if (CurrLayoutDetailBase == null)
  157. {
  158. CurrLayoutDetailBase = new LayoutDetailBase(row);
  159. CurrLayoutDetailBase.Owner = this;
  160. CurrLayoutDetailBase.eventcloseForm += CurrLayoutDetailBase_eventcloseForm;
  161. CurrLayoutDetailBase.eventModifyEntity += CurrLayoutDetailBase_eventModifyEntity;
  162. CurrLayoutDetailBase.Show();
  163. }
  164. else
  165. {
  166. CurrLayoutDetailBase.SetCurrID(row);
  167. }
  168. }
  169. private void CurrLayoutDetailBase_eventModifyEntity(LayoutDetail entity)
  170. {
  171. //throw new NotImplementedException();
  172. foreach (var item in panel2.Controls)
  173. {
  174. if (!(item is TEntityControl))
  175. continue;
  176. TEntityControl temp = item as TEntityControl;
  177. if (temp.CurrEntity.ID == entity.ID)
  178. {
  179. temp.CurrEntity.ModifyEntity();
  180. temp.Refresh();
  181. return;
  182. }
  183. }
  184. }
  185. private void CurrLayoutDetailBase_eventcloseForm()
  186. {
  187. CurrLayoutDetailBase = null;
  188. }
  189. private void Control_DoubleClick(object sender, EventArgs e)
  190. {
  191. //throw new NotImplementedException();
  192. TEntityControl control = sender as TEntityControl;
  193. ShowLayoutDetailBase(control.CurrEntity);
  194. }
  195. //将实体显示在面板上
  196. private int ShowSingleEntityFor(LayoutDetail row, Point pt)
  197. {
  198. //先查找是否已经显示
  199. foreach (Control tempcontrol in panel2.Controls)
  200. {
  201. if (!(tempcontrol is TEntityControl))
  202. continue;
  203. if (row.EntityTypeID != EntityType.Machine)
  204. continue;
  205. LayoutDetail temprow = (tempcontrol as TEntityControl).CurrEntity;
  206. if (temprow.EntityID == row.EntityID)
  207. return 1;
  208. }
  209. TEntityControl control = new TEntityControl(row);
  210. //计算坐标和大小
  211. int w = (int)(panel2.Width * decimal.Parse(row.SizeW.ToString()));
  212. int h = (int)(panel2.Height * decimal.Parse(row.SizeH.ToString()));
  213. //int x = (int)(panel2.Width * decimal.Parse(row.LocX.ToString()));
  214. //int y = (int)(panel2.Height * decimal.Parse(row.LocY.ToString()));
  215. control.Size = new Size(w, h);
  216. control.Location = pt;
  217. control.BackColor = Color.White;
  218. control.DoubleClick += Control_DoubleClick;
  219. panel2.Controls.Add(control);
  220. //将move实例添加到列表,以便以后操作
  221. MoveControl movecontrol = new MoveControl(control, cms);
  222. return 1;
  223. }
  224. private void button1_Click(object sender, EventArgs e)
  225. {
  226. InitForm(null);
  227. }
  228. private void button2_Click(object sender, EventArgs e)
  229. {
  230. //if(edit代码.Text.Trim()=="")
  231. //{
  232. // MessageBox.Show("代码不能为空,请填写!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  233. // edit代码.Focus();
  234. // return;
  235. //}
  236. if (editFName.Text.Trim() == "")
  237. {
  238. MessageBox.Show("名称不能为空,请填写!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  239. editFName.Focus();
  240. return;
  241. }
  242. string errorinfo = "";
  243. int result = PubInfo.UpdateRowFormControl(panel1, CurrEntity, ref errorinfo);
  244. if (result < 0)
  245. {
  246. MessageBox.Show("更新数据发生错误:" + errorinfo);
  247. return;
  248. }
  249. UpdateRow();
  250. List<LayoutDetail> changes = EntityHelper.GetEntityChange<LayoutDetail>(CurrDs);
  251. LayoutMst resultentity = CallFunction.CallIULayoutMst(CurrEntity, changes);
  252. if (resultentity != null)
  253. {
  254. MessageBox.Show("操作成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  255. InitForm(resultentity);
  256. }
  257. }
  258. //更新所有实体参数
  259. private int UpdateRow()
  260. {
  261. foreach (Control tempcontrol in panel2.Controls)
  262. {
  263. if (!(tempcontrol is TEntityControl))
  264. continue;
  265. LayoutDetail row = (tempcontrol as TEntityControl).CurrEntity;
  266. double w = (double)tempcontrol.Width / (double)panel2.Width;
  267. double h = (double)tempcontrol.Height / (double)panel2.Height;
  268. double x = (double)tempcontrol.Left / (double)panel2.Width;
  269. double y = (double)tempcontrol.Top / (double)panel2.Height;
  270. row.SizeW = w;
  271. row.SizeH = h;
  272. row.LocX = x;
  273. row.LocY = y;
  274. row.ModifyEntity();
  275. }
  276. return 1;
  277. }
  278. private void button3_Click(object sender, EventArgs e)
  279. {
  280. //if (CurrDs == null)
  281. //{
  282. // InitForm(0);
  283. // return;
  284. //}
  285. //CurrID = 0;
  286. //CurrDs.Tables[0].Rows[0]["id"] = 0;
  287. editFCode.Text = "";
  288. CurrEntity = new LayoutMst();
  289. }
  290. private void button4_Click(object sender, EventArgs e)
  291. {
  292. //TEntityQuery temp = new TEntityQuery("");
  293. //temp.eventSelRow += Temp_eventSelRow;
  294. //temp.ShowDialog();
  295. if (CurrMachineQuery != null)
  296. return;
  297. CurrMachineQuery = new MachineQuery(CurrDs);
  298. //temp.eventSelRow += Temp_eventSelRow;
  299. CurrMachineQuery.eventCloseForm += CurrMachineQuery_eventCloseForm;
  300. CurrMachineQuery.Owner = this;
  301. CurrMachineQuery.Show();
  302. }
  303. private void CurrMachineQuery_eventCloseForm()
  304. {
  305. CurrMachineQuery = null;
  306. }
  307. private void Temp_eventSelRow(List<TEntity> rows, int seltype)
  308. {
  309. double x = 0;
  310. double y = 0;
  311. foreach (var temprow in rows)
  312. {
  313. List<LayoutDetail> templist = CurrDs.Where(t => t.EntityID == temprow.ID).ToList();
  314. if (templist.Count > 0)
  315. continue;
  316. x += 0.01;
  317. y += 0.01;
  318. LayoutDetail addrow = AddDetail(temprow);
  319. addrow.LocX = x;
  320. addrow.LocY = y;
  321. ShowSingleEntity(addrow);
  322. }
  323. //Binddgvmain();
  324. }
  325. private LayoutDetail AddDetail(TEntity row)
  326. {
  327. LayoutDetail addrow = new LayoutDetail();
  328. CurrDs.Add(addrow);
  329. int? minid = CurrDs.Where(t => t.ID < 0).Min(t => (int?)t.ID);
  330. int id = minid == null ? -1 : minid.Value - 1;
  331. addrow.ID = id;
  332. addrow.EntityID = row.ID;
  333. addrow.FCode = row.FCode;
  334. addrow.FName = row.FName;
  335. addrow.IPAddress = row.FIP;
  336. addrow.LocX = 0;
  337. addrow.LocY = 0;
  338. addrow.SizeW = 0.1;
  339. addrow.SizeH = 0.1;
  340. addrow.FontSize = 9;
  341. addrow.FColor = "";
  342. return addrow;
  343. }
  344. private LayoutDetail AddDetailFor(LayoutDetail addrow)
  345. {
  346. List<MoveControl> sels = MoveControl.FindSelControl();
  347. //LayoutDetail addrow = new LayoutDetail();
  348. CurrDs.Add(addrow);
  349. int? minid = CurrDs.Where(t => t.ID < 0).Min(t => (int?)t.ID);
  350. int id = minid == null ? -1 : minid.Value - 1;
  351. addrow.ID = id;
  352. //addrow.EntityTypeID = EntityType.Machine;
  353. //addrow.EntityID = row.ID;
  354. //addrow.FCode = row.FCode;
  355. //addrow.FName = row.FName;
  356. //addrow.IPAddress = row.IPAddress;
  357. addrow.LocX = 0;
  358. addrow.LocY = 0;
  359. addrow.SizeW = 0.1;
  360. addrow.SizeH = 0.1;
  361. if (sels.Count > 0)
  362. {
  363. addrow.SizeW = (double)(sels[0].currentControl as TEntityControl).Width / (double)panel2.Width;
  364. addrow.SizeH = (double)(sels[0].currentControl as TEntityControl).Height / (double)panel2.Height;
  365. }
  366. addrow.FontSize = 9;
  367. addrow.FColor = "";
  368. return addrow;
  369. }
  370. //private DataRow AddDetail(DataRow row)
  371. //{
  372. // DataRow addrow = CurrDs.Tables[CurrDetailTableName].NewRow();
  373. // CurrDs.Tables[CurrDetailTableName].Rows.Add(addrow);
  374. // object obj = CurrDs.Tables[CurrDetailTableName].Compute("min(id)", "id<0");
  375. // int id = obj.ToString() == "" ? -1 : int.Parse(obj.ToString()) - 1;
  376. // addrow["id"] = id;
  377. // addrow["EntityID"] = row["ID"];
  378. // addrow["实体代码"] = row["代码"];
  379. // addrow["实体名称"] = row["名称"];
  380. // addrow["IP地址"] = row["IP地址"];
  381. // addrow["X坐标"] = 0;
  382. // addrow["Y坐标"] = 0;
  383. // addrow["宽度"] = 100;
  384. // addrow["高度"] = 100;
  385. // addrow["字体大小"] = 9;
  386. // addrow["字体颜色"] = "";
  387. // // public static string LayoutDetail = "select 0 选择,b.FCode 实体代码,b.FName 实体名称,b.FIP IP地址,a.LocX X坐标,a.LocY Y坐标,a.SizeW 宽度"
  388. // //+ ",a.SizeH 高度,a.FontSize 字体大小,a.FColor 字体颜色,a.remark 备注"
  389. // return addrow;
  390. //}
  391. private void LayoutMstBaseFor_Shown(object sender, EventArgs e)
  392. {
  393. InitForm(CurrEntity);
  394. }
  395. //获取选中的控件
  396. private Control GetSelControl()
  397. {
  398. foreach (Control tempcontrol in panel2.Controls)
  399. {
  400. if (tempcontrol is FrameControl)
  401. {
  402. return (tempcontrol as FrameControl).baseControl;
  403. }
  404. }
  405. return null;
  406. }
  407. private Form CurrForm = null;
  408. public void CloseCurrForm()
  409. {
  410. CurrForm = null;
  411. }
  412. private void 属性ToolStripMenuItem_Click(object sender, EventArgs e)
  413. {
  414. //TEntityControl temp = (TEntityControl)GetSelControl();
  415. //if (temp == null)
  416. // return;
  417. //ShowBase(temp);
  418. }
  419. private SetControlRectangle Rectory;
  420. void Rectory_SetRectangel(object sneder, Rectangle e)
  421. {
  422. this.Text = e.ToString();
  423. int x = e.X;
  424. int w = e.Width;
  425. int y = e.Y;
  426. int h = e.Height;
  427. if (e.Width < 0)
  428. {
  429. x = x - e.Width * -1;
  430. w = w * -1;
  431. }
  432. if (h < 0)
  433. {
  434. y = y - h * -1;
  435. h = h * -1;
  436. }
  437. Rectangle selrect = new Rectangle(x, y, w, h);
  438. foreach (MoveControl item in MoveControl.CurrList)
  439. {
  440. Rectangle temp = new Rectangle(item.currentControl.Location.X, item.currentControl.Location.Y, item.currentControl.Size.Width, item.currentControl.Size.Height);
  441. if (selrect.IntersectsWith(temp))
  442. {
  443. item.IsSelected = true;
  444. }
  445. }
  446. MoveControl.AddFrameControl();
  447. }
  448. private void LayoutMstBaseFor_Load(object sender, EventArgs e)
  449. {
  450. }
  451. private void 顶端对齐ToolStripMenuItem_Click(object sender, EventArgs e)
  452. {
  453. List<MoveControl> sels = MoveControl.FindSelControl();
  454. if (sels.Count <= 1)
  455. return;
  456. MoveControl.ClearFrameControl();
  457. //panel2.Refresh();
  458. TEntityControl descontrol = cms.Tag as TEntityControl;
  459. foreach (var item in sels)
  460. {
  461. item.currentControl.Location = new Point(item.currentControl.Location.X, descontrol.Location.Y);
  462. }
  463. MoveControl.AddFrameControl();
  464. }
  465. private void panel2_Paint(object sender, PaintEventArgs e)
  466. {
  467. //ShowAllEntity();
  468. }
  469. private void button5_Click(object sender, EventArgs e)
  470. {
  471. List<MoveControl> sels = MoveControl.FindSelControl();
  472. foreach (MoveControl item in sels)
  473. {
  474. if (item.fc != null)
  475. {
  476. panel2.Controls.Remove(item.fc);
  477. item.fc.Dispose();
  478. item.fc = null;
  479. }
  480. }
  481. panel2.Refresh();
  482. //for(int i=panel2.Controls.Count-1;i>=0;i--)
  483. //{
  484. // panel2.Controls.Remove(panel2.Controls[i]);
  485. //}
  486. //panel2.Controls.Clear();
  487. //for(int i=MoveControl.CurrList.Count-1;i>=0;i--)
  488. //{
  489. // MoveControl.CurrList[i].ClearControl();
  490. //}
  491. //panel2.Refresh();
  492. //MoveControl.ClearAllControl();
  493. //panel2.Refresh();
  494. //foreach (MoveControl item in MoveControl.CurrList)
  495. //{
  496. // if(item.fc!=null)
  497. // {
  498. // panel2.Controls.Remove(item.fc);
  499. // item.fc = null;
  500. // }
  501. // item.currentControl.Refresh();
  502. //}
  503. //panel2.Refresh();
  504. //List<FrameControl> fclist = new List<FrameControl>();
  505. //foreach(Control item in panel2.Controls)
  506. //{
  507. // //if (item is TEntityControl)
  508. // // continue;
  509. // //panel2.Controls.Remove()
  510. // if (item is FrameControl)
  511. // fclist.Add(item as FrameControl);
  512. //}
  513. //foreach (FrameControl fc in fclist)
  514. // panel2.Controls.Remove(fc);
  515. //panel2.Refresh();
  516. }
  517. private void toolStripMenuItem1_Click(object sender, EventArgs e)
  518. {
  519. List<MoveControl> sels = MoveControl.FindSelControl();
  520. if (sels.Count <= 1)
  521. return;
  522. MoveControl.ClearFrameControl();
  523. //panel2.Refresh();
  524. TEntityControl descontrol = cms.Tag as TEntityControl;
  525. int desy = descontrol.Location.Y;
  526. int desh = descontrol.Size.Height;
  527. int y = 0;
  528. foreach (var item in sels)
  529. {
  530. y = desy + desh - item.currentControl.Size.Height;
  531. if (y < 0)
  532. y = 0;
  533. item.currentControl.Location = new Point(item.currentControl.Location.X, y);
  534. }
  535. MoveControl.AddFrameControl();
  536. }
  537. private void 左对齐ToolStripMenuItem_Click(object sender, EventArgs e)
  538. {
  539. List<MoveControl> sels = MoveControl.FindSelControl();
  540. if (sels.Count <= 1)
  541. return;
  542. MoveControl.ClearFrameControl();
  543. //panel2.Refresh();
  544. TEntityControl descontrol = cms.Tag as TEntityControl;
  545. int desx = descontrol.Location.X;
  546. //int desh = descontrol.Size.Height;
  547. int y = 0;
  548. foreach (var item in sels)
  549. {
  550. item.currentControl.Location = new Point(desx, item.currentControl.Location.Y);
  551. }
  552. MoveControl.AddFrameControl();
  553. }
  554. private void 右对齐ToolStripMenuItem_Click(object sender, EventArgs e)
  555. {
  556. List<MoveControl> sels = MoveControl.FindSelControl();
  557. if (sels.Count <= 1)
  558. return;
  559. MoveControl.ClearFrameControl();
  560. //panel2.Refresh();
  561. TEntityControl descontrol = cms.Tag as TEntityControl;
  562. int desx = descontrol.Location.X;
  563. int desw = descontrol.Size.Width;
  564. int x = 0;
  565. foreach (var item in sels)
  566. {
  567. x = desx + desw - item.currentControl.Size.Width;
  568. item.currentControl.Location = new Point(x, item.currentControl.Location.Y);
  569. }
  570. MoveControl.AddFrameControl();
  571. }
  572. private void 相同宽度ToolStripMenuItem_Click(object sender, EventArgs e)
  573. {
  574. List<MoveControl> sels = MoveControl.FindSelControl();
  575. if (sels.Count <= 1)
  576. return;
  577. MoveControl.ClearFrameControl();
  578. //panel2.Refresh();
  579. TEntityControl descontrol = cms.Tag as TEntityControl;
  580. //int desx = descontrol.Location.X;
  581. int desw = descontrol.Size.Width;
  582. foreach (var item in sels)
  583. {
  584. item.currentControl.Size = new Size(desw, item.currentControl.Height);
  585. }
  586. MoveControl.AddFrameControl();
  587. }
  588. private void 相同高度ToolStripMenuItem_Click(object sender, EventArgs e)
  589. {
  590. List<MoveControl> sels = MoveControl.FindSelControl();
  591. if (sels.Count <= 1)
  592. return;
  593. MoveControl.ClearFrameControl();
  594. //panel2.Refresh();
  595. TEntityControl descontrol = cms.Tag as TEntityControl;
  596. //int desx = descontrol.Location.X;
  597. int desh = descontrol.Size.Height;
  598. foreach (var item in sels)
  599. {
  600. item.currentControl.Size = new Size(item.currentControl.Width, desh);
  601. }
  602. MoveControl.AddFrameControl();
  603. }
  604. private void 相同大小ToolStripMenuItem_Click(object sender, EventArgs e)
  605. {
  606. List<MoveControl> sels = MoveControl.FindSelControl();
  607. if (sels.Count <= 1)
  608. return;
  609. MoveControl.ClearFrameControl();
  610. //panel2.Refresh();
  611. TEntityControl descontrol = cms.Tag as TEntityControl;
  612. foreach (var item in sels)
  613. {
  614. item.currentControl.Size = new Size(descontrol.Size.Width, descontrol.Size.Height);
  615. }
  616. MoveControl.AddFrameControl();
  617. }
  618. private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
  619. {
  620. List<MoveControl> sels = MoveControl.FindSelControl();
  621. if (sels.Count <= 0)
  622. return;
  623. MoveControl.ClearFrameControl();
  624. foreach (var item in sels)
  625. {
  626. LayoutDetail tempentity = (item.currentControl as TEntityControl).CurrEntity;
  627. tempentity.DeleteEntity(CurrDs);
  628. panel2.Controls.Remove(item.currentControl);
  629. MoveControl.CurrList.Remove(item);
  630. }
  631. MoveControl.ClearFrameControl();
  632. panel2.Refresh();
  633. }
  634. private void 水平等距离ToolStripMenuItem_Click(object sender, EventArgs e)
  635. {
  636. List<MoveControl> sels = MoveControl.FindSelControl().OrderBy(t => t.currentControl.Location.X).ToList();
  637. if (sels.Count <= 1)
  638. return;
  639. int count = sels.Count;
  640. int spacing = sels[count - 1].currentControl.Location.X - sels[0].currentControl.Location.X;
  641. for (int i = 0; i < count - 1; i++)
  642. {
  643. spacing = spacing - sels[i].currentControl.Size.Width;
  644. }
  645. int avgspacing = spacing / (count - 1);
  646. int x = sels[0].currentControl.Location.X;
  647. for (int i = 1; i < count; i++)
  648. {
  649. x += sels[i - 1].currentControl.Size.Width + avgspacing;
  650. sels[i].currentControl.Location = new Point(x, sels[i].currentControl.Location.Y);
  651. }
  652. MoveControl.AddFrameControl();
  653. }
  654. private void panel2_DragEnter(object sender, DragEventArgs e)
  655. {
  656. e.Effect = DragDropEffects.Move;
  657. }
  658. private void panel2_DragDrop(object sender, DragEventArgs e)
  659. {
  660. Type mactype = typeof(List<LayoutDetail>);
  661. List<LayoutDetail> details = (List<LayoutDetail>)e.Data.GetData(mactype);
  662. Point pt = panel2.PointToClient(new Point(e.X, e.Y));
  663. details = details.OrderBy(t => t.FCode).ToList();
  664. foreach (LayoutDetail detail in details)
  665. {
  666. AddDetailFor(detail);
  667. ShowSingleEntityFor(detail, pt);
  668. pt.X += LocX;
  669. pt.Y += LocY;
  670. }
  671. CurrMachineQuery.Binddgvmain();
  672. }
  673. private void button6_Click(object sender, EventArgs e)
  674. {
  675. List<MoveControl> sels = MoveControl.FindSelControl();
  676. foreach (MoveControl item in sels)
  677. {
  678. item.fc = new FrameControl(item.currentControl);
  679. panel2.Controls.Add(item.fc);
  680. //item.currentControl.BringToFront();
  681. item.fc.BringToFront();
  682. item.fc.Visible = true;
  683. item.fc.Draw();
  684. }
  685. }
  686. private void panel2_Resize(object sender, EventArgs e)
  687. {
  688. //ShowAllEntity();
  689. }
  690. private void toolStripMenuItem2_Click(object sender, EventArgs e)
  691. {
  692. List<MoveControl> sels = MoveControl.FindSelControl().OrderBy(t => t.currentControl.Location.Y).ToList();
  693. if (sels.Count <= 1)
  694. return;
  695. int count = sels.Count;
  696. int spacing = sels[count - 1].currentControl.Location.Y - sels[0].currentControl.Location.Y;
  697. for (int i = 0; i < count - 1; i++)
  698. {
  699. spacing = spacing - sels[i].currentControl.Size.Height;
  700. }
  701. int avgspacing = spacing / (count - 1);
  702. int y = sels[0].currentControl.Location.Y;
  703. for (int i = 1; i < count; i++)
  704. {
  705. y += sels[i - 1].currentControl.Size.Height + avgspacing;
  706. sels[i].currentControl.Location = new Point(sels[i].currentControl.Location.X, y);
  707. }
  708. MoveControl.AddFrameControl();
  709. }
  710. }
  711. }