Files
ATV_STDLabelAttach/Handler/Project_form2/fModelV.cs
2025-07-17 16:11:46 +09:00

354 lines
11 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Project
{
public partial class fModelV : Form
{
public string Value = string.Empty;
public fModelV()
{
InitializeComponent();
this.KeyPreview = true;
this.KeyDown += (s1, e1) => { if (e1.KeyCode == Keys.Escape) this.Close(); };
this.StartPosition = FormStartPosition.CenterScreen;
this.FormClosed += __Closed;
this.dv.CellContentClick += dv_CellContentClick;
this.lbTitle.MouseMove += LbTitle_MouseMove;
this.lbTitle.MouseUp += LbTitle_MouseUp;
this.lbTitle.MouseDown += LbTitle_MouseDown;
this.lbTitle.DoubleClick += LbTitle_DoubleClick;
}
private void __Closed(object sender, FormClosedEventArgs e)
{
//Pub.sm.setNewStep(StateMachine.eSystemStep.IDLE);
this.ds1.Model.TableNewRow -= Model_TableNewRow;
}
private void __Load(object sender, EventArgs e)
{
this.ds1.Clear();
this.ds1.Model.Merge(Pub.mdm.dataSet.Model);
this.ds1.Model.TableNewRow += Model_TableNewRow;
this.tmDisplay.Start();
if (this.ds1.Model.Rows.Count < 1)
{
var newdr = this.ds1.Model.NewModelRow();
newdr.Title = "New Model";
this.ds1.Model.AddModelRow(newdr);
Util.MsgI("신규 모델 정보가 추가되었습니다.\n\n최초 설정 이므로 각 상태값을 확인 하세요.");
}
//dispal current
if (Pub.Result.isSetvModel)
{
arLabel18.Text = Pub.Result.vModel.Title;
//find data
var datas = this.ds1.Model.Select("", this.bs.Sort);
for (int i = 0; i < datas.Length; i++)
{
if (datas[i]["Title"].ToString() == Pub.Result.vModel.Title)
{
this.bs.Position = i;
break;
}
}
}
else arLabel18.Text = "--";
}
#region "Mouse Form Move"
private Boolean fMove = false;
private Point MDownPos;
private void LbTitle_DoubleClick(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Maximized) this.WindowState = FormWindowState.Normal;
else this.WindowState = FormWindowState.Maximized;
}
private void LbTitle_MouseMove(object sender, MouseEventArgs e)
{
if (fMove)
{
Point offset = new Point(e.X - MDownPos.X, e.Y - MDownPos.Y);
this.Left += offset.X;
this.Top += offset.Y;
offset = new Point(0, 0);
}
}
private void LbTitle_MouseUp(object sender, MouseEventArgs e)
{
fMove = false;
}
private void LbTitle_MouseDown(object sender, MouseEventArgs e)
{
MDownPos = new Point(e.X, e.Y);
fMove = true;
}
#endregion
void EntertoTab(Control ctl)
{
if(ctl.HasChildren)
{
foreach(var item in ctl.Controls)
{
if(item.GetType()==typeof(TextBox))
{
var tb = item as TextBox;
tb.KeyDown += (s1, e1) =>
{
if (e1.KeyCode == Keys.Enter) SendKeys.Send("{TAB}");
};
}
}
}
}
void Model_TableNewRow(object sender, DataTableNewRowEventArgs e)
{
e.Row["Title"] = DateTime.Now.ToString("yyMMddHHmmss");
// e.Row["RowCount"] = 5;
// e.Row["ColCount"] = 0;
// e.Row["Light"] = 50;
}
private void modelBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
//button - save
this.Validate();
this.bs.EndEdit();
//z position 영역을 문자로 변환한다.
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.ModelRow;
dr.EndEdit();
this.ds1.AcceptChanges();
Dialog.fPassword f = new Dialog.fPassword();
if (f.ShowDialog() != DialogResult.OK) return;
if (f.tbInput.Text != Pub.setting.Password_Setup)
{
Util.MsgE("Password incorrect");
return;
}
Pub.mdm.dataSet.Model.Clear();
Pub.mdm.dataSet.Model.Merge(this.ds1.Model);
Pub.mdm.dataSet.AcceptChanges();
Pub.mdm.SaveModelV();
}
private void bs_CurrentChanged(object sender, EventArgs e)
{
//z range 을 표시한다.
//z position 영역을 문자로 변환한다.
//this.list
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.MCModelRow;
}
private void tmDisplay_Tick(object sender, EventArgs e)
{
}
private void dv_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
}
private void btSelect_Click(object sender, EventArgs e)
{
selectModel();
}
void selectModel()
{
//select
this.Invalidate();
this.bs.EndEdit();
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.ModelRow;
if (dr.Title == "") return;
this.Value = dr.Title;
DialogResult = System.Windows.Forms.DialogResult.OK;
}
private void toolStripButton2_Click_1(object sender, EventArgs e)
{
//iocontrol
var f = new Dialog.QuickControl();
f.TopMost = true;
f.Opacity = 0.95;
f.Show();
}
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dlg = Util.MsgQ("현재 선택된 자료를 삭제하시겠습니까?");
if (dlg != System.Windows.Forms.DialogResult.Yes) return;
bs.RemoveCurrent();
this.ds1.Model.AcceptChanges();
}
private void tbFind_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
findModel();
}
}
void findModel()
{
try
{
if (this.tbFind.Text.Trim() == "")
{
this.bs.Filter = "";
this.tbFind.BackColor = Color.White;
}
else
{
string filter = "title like '%{0}%'";
filter = string.Format(filter, tbFind.Text.Trim());
this.bs.Filter = filter;
this.tbFind.BackColor = Color.SkyBlue;
this.tbFind.SelectAll();
}
}
catch (Exception Ex)
{
this.bs.Filter = "";
this.tbFind.BackColor = Color.Tomato;
Util.MsgE(Ex.Message);
}
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
var f = new Dialog.fTouchKeyFull("INPUT - ", this.tbFind.Text.Trim());
if (f.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
var inputLot = f.tbInput.Text.Trim().ToUpper();
//if (inputLot == "") return;
tbFind.Text = inputLot;
findModel();
tbFind.Focus();
tbFind.SelectAll();
}
private void button23_Click(object sender, EventArgs e)
{
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.ModelRow;
var dlg = Util.MsgQ(string.Format("다음 모델 정보를 복사하시겠습니까?\n\n모델명 : {0}", dr.Title));
if (dlg != System.Windows.Forms.DialogResult.Yes) return;
var newdr = this.ds1.Model.NewModelRow();
Util.CopyData(dr, newdr);
newdr.Title += "-copy-";
newdr.idx = this.ds1.Model.OrderByDescending(t => t.idx).FirstOrDefault().idx + 1;
newdr.EndEdit();
this.ds1.Model.AddModelRow(newdr);
if (this.bs.Count > 0) this.bs.Position = this.bs.Count - 1;
}
void dv_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if(this.dv.Columns[e.ColumnIndex].DataPropertyName.ToLower()=="spn")
{
//var drv = dv.Rows[e.RowIndex].DataBoundItem as DataRowView;
//var dr = drv.Row as DataSet1.ModelRow;
//var spn = dr.SPN;
//spn = selectSPn(spn);
//if(spn != "")
//{
// dr.SPN = spn;
// dv.EndEdit();
//}
}
}
//string selectSPn(string selectedname)
//{
// var od = new OpenFileDialog();
// od.InitialDirectory = Pub.setting.SPNPath;
// od.FileName = selectedname;
// if (od.ShowDialog() != System.Windows.Forms.DialogResult.OK) return "";
// var fi = new System.IO.FileInfo(od.FileName);
// if (Pub.setting.SPNPath != fi.Directory.FullName)
// {
// Pub.setting.SPNPath = fi.Directory.FullName;
// Pub.setting.Save();
// }
// var SPN = fi.Name.Replace(fi.Extension, "");
// return SPN;
//}
private void toolStripButton3_Click(object sender, EventArgs e)
{
//if(Pub.setting.SPNPath == "")
//{
// Util.MsgE("SEM 파일 저장 경로가 입력되지 않았습니다\n"+
// "환경설정에서 해당 값을 입력할 수 있습니다");
// return;
//}
//Util.RunExplorer(Pub.setting.SPNPath);
//return;
//var drv = this.bs.Current as DataRowView;
//if (drv == null) return;
//var dr = drv.Row as DataSet1.ModelRow;
//var spn = selectSPn(dr.SPN);
//if(spn != "")
//{
// dr.SPN = spn;
// dr.EndEdit();
//}
}
private void tbClose_Click(object sender, EventArgs e)
{
this.Close();
}
}
}