paramill.cpp

来自「基于SQLSERVER2000的机械工艺数据库系统」· C++ 代码 · 共 453 行

CPP
453
字号
// PARAMILL.cpp : implementation file
//

#include "stdafx.h"
#include "knc_mis.h"
#include "PARAMILL.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPARAMILL dialog


CPARAMILL::CPARAMILL(CWnd* pParent /*=NULL*/)
	: CDialog(CPARAMILL::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPARAMILL)
	m_sID = _T("");
	m_sDia = _T("");
	m_sSpindlespeed = _T("");
	m_sMotorspeed = _T("");
	m_sCutdepth = _T("");
	m_sFeedrate = _T("");
	m_sRoughness = _T("");
	m_sPismaterial = _T("");
	m_sTool = _T("");
	m_sDianeed = _T("");
	m_sToolneed = _T("");
	m_sPismaterialneed = _T("");
	//}}AFX_DATA_INIT
}


void CPARAMILL::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPARAMILL)
	DDX_Control(pDX, IDC_LIST1, m_Pmillresultlist);
	DDX_Control(pDX, IDC_LIST2, m_Pmilllist);
	DDX_Text(pDX, IDC_EDIT23, m_sID);
	DDX_Text(pDX, IDC_EDIT1, m_sDia);
	DDX_Text(pDX, IDC_EDIT2, m_sSpindlespeed);
	DDX_Text(pDX, IDC_EDIT5, m_sMotorspeed);
	DDX_Text(pDX, IDC_EDIT3, m_sCutdepth);
	DDX_Text(pDX, IDC_EDIT6, m_sFeedrate);
	DDX_Text(pDX, IDC_EDIT20, m_sRoughness);
	DDX_Text(pDX, IDC_EDIT15, m_sPismaterial);
	DDX_Text(pDX, IDC_EDIT16, m_sTool);
	DDX_Text(pDX, IDC_EDIT12, m_sDianeed);
	DDX_Text(pDX, IDC_EDIT21, m_sToolneed);
	DDX_Text(pDX, IDC_EDIT18, m_sPismaterialneed);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPARAMILL, CDialog)
	//{{AFX_MSG_MAP(CPARAMILL)
	ON_NOTIFY(NM_CLICK, IDC_LIST2, OnClickList2)
	ON_BN_CLICKED(IDC_PmillAdd, OnPmillAdd)
	ON_BN_CLICKED(IDC_PmillDelete, OnPmillDelete)
	ON_BN_CLICKED(IDC_PmillModify, OnPmillModify)
	ON_BN_CLICKED(IDC_PmillQuery, OnPmillQuery)
	ON_BN_CLICKED(IDC_PmillSave, OnPmillSave)
	ON_BN_CLICKED(IDC_PmillClear, OnPmillClear)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPARAMILL message handlers

void CPARAMILL::OnClickList2(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	POSITION pos = m_Pmilllist.GetFirstSelectedItemPosition();
	if(pos)
	{
		int nFirstSelItem = m_Pmilllist.GetNextSelectedItem(pos);
		m_sID=m_Pmilllist.GetItemText(nFirstSelItem,0);
		m_sDia=m_Pmilllist.GetItemText(nFirstSelItem,1);
        m_sSpindlespeed=m_Pmilllist.GetItemText(nFirstSelItem,2);
        m_sMotorspeed=m_Pmilllist.GetItemText(nFirstSelItem,3);
		m_sCutdepth=m_Pmilllist.GetItemText(nFirstSelItem,4);
		m_sFeedrate=m_Pmilllist.GetItemText(nFirstSelItem,5);
        m_sRoughness=m_Pmilllist.GetItemText(nFirstSelItem,6);
		m_sPismaterial=m_Pmilllist.GetItemText(nFirstSelItem,7);
		m_sTool=m_Pmilllist.GetItemText(nFirstSelItem,8);
		//还差一个图片的显示
	}
	//AfxMessageBox(str);
	bt_delete->EnableWindow(true);
	bt_modify->EnableWindow(true);

	UpdateData(false);
	*pResult = 0;
}

void CPARAMILL::OnPmillAdd() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	m_sID="";
	m_sCutdepth="";
	m_sFeedrate="";
	m_sSpindlespeed="";
	m_sMotorspeed="";
   	m_sPismaterial="";
	m_sPismaterialneed="";
	m_sRoughness="";
	m_sTool="";
	m_sToolneed="";
	m_sDia="";
	m_sDianeed="";

    tx_Cutdepth->EnableWindow(true);
	tx_Dia->EnableWindow(true);
	tx_Feedrate->EnableWindow(true);
    tx_Motorspeed->EnableWindow(true);
	tx_Spindlespeed->EnableWindow(true);
	tx_Pismaterial->EnableWindow(true);
	tx_Roughness->EnableWindow(true);
	tx_Tool->EnableWindow(true);
	tx_ID->EnableWindow(true);
	
	flag=1;
	bt_save->EnableWindow(true);
	bt_add->EnableWindow(false);
	bt_modify->EnableWindow(false);
	bt_delete->EnableWindow(false);
	UpdateData(false);	
	
}

void CPARAMILL::OnPmillDelete() 
{
	// TODO: Add your control notification handler code here
		// Del Records
    _variant_t  strQuery;
    strQuery = "select * from paraturnmill";
    theApp.ADOExecute(theApp.m_pADOSet, strQuery);
 	POSITION pos = m_Pmilllist.GetFirstSelectedItemPosition();
    if ( pos == NULL ) 
 	{
 		AfxMessageBox(_T("没有选中的记录!"), MB_ICONEXCLAMATION);
		return;
 	}
     else
	{
 		int iItem;       
		CString sID;
		while (pos)
		{
            iItem = m_Pmilllist.GetNextSelectedItem(pos);
             sID= m_Pmilllist.GetItemText(iItem, 0);
		    strQuery = "delete from paraturnmill where id='"+sID+"'";
	        theApp.ADOExecute(theApp.m_pADOSet, strQuery);
	    	m_Pmilllist.DeleteItem(iItem);
		}
 	}
   	m_sID="";
	m_sCutdepth="";
	m_sFeedrate="";
	m_sSpindlespeed="";
	m_sMotorspeed="";
   	m_sPismaterial="";
	m_sPismaterialneed="";
	m_sRoughness="";
	m_sTool="";
	m_sToolneed="";
	m_sDia="";
	m_sDianeed="";

	bt_delete->EnableWindow(false);
	bt_modify->EnableWindow(false);
 	UpdateData(false);	
}

void CPARAMILL::OnPmillModify() 
{
	// TODO: Add your control notification handler code here
	tx_Cutdepth->EnableWindow(true);
	tx_Dia->EnableWindow(true);
	tx_Feedrate->EnableWindow(true);
    tx_Motorspeed->EnableWindow(true);
	tx_Spindlespeed->EnableWindow(true);
	tx_Pismaterial->EnableWindow(true);
	tx_Roughness->EnableWindow(true);
	tx_Tool->EnableWindow(true);
	tx_ID->EnableWindow(true);
	flag=2;
	bt_save->EnableWindow(true);
	bt_delete->EnableWindow(false);
	bt_modify->EnableWindow(false);
}

void CPARAMILL::OnPmillQuery() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);	
	_variant_t  strQuery,Holder;
    strQuery = "select * from paraturnmill where shaftdia='"+m_sDianeed+"' and wpmaterial='"+m_sPismaterialneed+"' and toolmaterial='"+m_sToolneed+"' order by turnmillra asc";
    theApp.ADOExecute(theApp.m_pADOSet, strQuery);
    CString str;
	int iCounta = theApp.m_pADOSet->GetRecordCount();
	if (0==iCounta) 
	{   AfxMessageBox(_T("没有相关记录!"), MB_ICONEXCLAMATION);
		return;
	}
	theApp.m_pADOSet->MoveFirst();
	for (int k=0; k<iCounta; k++)
    {	// Get spindle
		Holder = theApp.m_pADOSet->GetCollect("spindle");
	    str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
	    m_Pmillresultlist.InsertItem(k, str);
		// Get motorspindle
		Holder = theApp.m_pADOSet->GetCollect("motorspindle");
	    str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
	    m_Pmillresultlist.SetItemText(k, 1, str);
		// Get cutdepth
		Holder = theApp.m_pADOSet->GetCollect("cutdepth");
	    str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
	    m_Pmillresultlist.SetItemText(k, 2, str);
	    // Get feedrate
        Holder = theApp.m_pADOSet->GetCollect("feedrate");
	    str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
      	m_Pmillresultlist.SetItemText(k, 3, str);
		theApp.m_pADOSet->MoveNext();
	}
	UpdateData(false);
}

void CPARAMILL::OnPmillSave() 
{
	// TODO: Add your control notification handler code here
		UpdateData(true);
	// Make sure all needed info is available
	CString sWarning="";
	if ( ""==m_sID ) sWarning=_T("编号");
    else if ( ""==m_sCutdepth) sWarning=_T("切削深度");
	else if ( ""==m_sFeedrate) sWarning=_T("进给量");
	else if ( ""==m_sSpindlespeed) sWarning=_T("电主轴转速");
	else if ( ""==m_sDia) sWarning=_T("轴径尺寸");


    if ( ""!=sWarning ) 
	{
	   sWarning += _T("不能为空");
	   AfxMessageBox(sWarning, MB_ICONEXCLAMATION);
	   return;
	}
	_variant_t strQuery;
	if(flag==1)  //添加记录
	{
		// Judge ID is unique
	    strQuery = "select * from paraturnmill where id='"+m_sID+"'";
	    theApp.ADOExecute(theApp.m_pADOSet, strQuery);
	    int iCount = theApp.m_pADOSet->GetRecordCount();
	    if ( 0!=iCount )
		{
	       AfxMessageBox(_T("已经存在此刀具记录!"), MB_ICONEXCLAMATION);
	       return;
		}
	}
else if(flag==2)//修改
	{  //删除旧记录
		strQuery = "delete from paraturnmill where id='"+m_sID+"'";
	    theApp.ADOExecute(theApp.m_pADOSet, strQuery);
	}
	// Insert Record
	strQuery = "insert paraturnmill (id,shaftdia, spindle,motorspindle, cutdepth,feedrate,turnmillra,wpmaterial,toolmaterial) \
		        values ('"+m_sID+"', '"+m_sDia+"','"+m_sSpindlespeed+"','"+m_sMotorspeed+"', '"+m_sCutdepth+"','"+m_sFeedrate+"','"+m_sRoughness+"','"+m_sPismaterial+"','"+m_sTool+"')";
   int iItem;
  POSITION pos = m_Pmilllist.GetFirstSelectedItemPosition();
  iItem = m_Pmilllist.GetNextSelectedItem(pos);
	m_Pmilllist.DeleteItem(iItem); 
	//更新列表框数据
	int j;
	j=m_Pmilllist.GetItemCount();
	m_Pmilllist.InsertItem(j, m_sID);
	m_Pmilllist.SetItemText(j, 1 , m_sDia);
    m_Pmilllist.SetItemText(j, 2 , m_sSpindlespeed);
	m_Pmilllist.SetItemText(j, 3 , m_sMotorspeed);
    m_Pmilllist.SetItemText(j, 4 , m_sCutdepth);
	m_Pmilllist.SetItemText(j, 5 , m_sFeedrate);
    m_Pmilllist.SetItemText(j, 6 , m_sRoughness);
    m_Pmilllist.SetItemText(j, 7 , m_sPismaterial);
	m_Pmilllist.SetItemText(j, 8 , m_sTool);


	if ( theApp.ADOExecute(theApp.m_pADOSet, strQuery) ) 
	{
	    if (flag==1) 
		{
			AfxMessageBox(_T("添加加工用量信息成功!"), MB_ICONINFORMATION);
	        // Clear all input
       m_sID=m_sDia=m_sSpindlespeed=m_sMotorspeed=m_sCutdepth=m_sFeedrate=m_sRoughness=m_sPismaterial=m_sTool="";
            UpdateData(false);
		}
		else AfxMessageBox(_T("修改加工用量信息成功!"), MB_ICONINFORMATION);
	}
	else 
	{
		if (flag==1) AfxMessageBox(_T("添加加工用量信息失败!"), MB_ICONEXCLAMATION);
		else AfxMessageBox(_T("修改加工用量信息失败!"), MB_ICONEXCLAMATION);
	}
   	tx_Cutdepth->EnableWindow(false);
	tx_Dia->EnableWindow(false);
	tx_Feedrate->EnableWindow(false);
    tx_Motorspeed->EnableWindow(false);
	tx_Spindlespeed->EnableWindow(false);
	tx_Pismaterial->EnableWindow(false);
	tx_Roughness->EnableWindow(false);
	tx_Tool->EnableWindow(false);
	tx_ID->EnableWindow(false);
	
	bt_add->EnableWindow(true);
	bt_save->EnableWindow(false);
	bt_modify->EnableWindow(false);
	bt_delete->EnableWindow(false);
}

BOOL CPARAMILL::OnInitDialog() 
{
	CDialog::OnInitDialog();
	_variant_t strQuery, Holder;
	CString str;
	DWORD style;
	style=m_Pmilllist.GetExStyle();
	style=(style|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT)&(~LVS_EX_CHECKBOXES) ;
	m_Pmilllist.SetExtendedStyle(style);
	m_Pmillresultlist.SetExtendedStyle(style);
	m_sOldID = m_sID;
	// Set Color
	//m_Codelist.SetBkColor(RGB(177, 151, 240));
//	m_Codelist.SetTextColor(RGB(0,0,0));
//	m_Codelist.SetTextBkColor(RGB(177, 151, 240));
    // 设置表字段
	m_Pmilllist.InsertColumn(0,"编号",LVCFMT_LEFT,100);
	m_Pmilllist.InsertColumn(1,"轴径大小",LVCFMT_LEFT,100);
	m_Pmilllist.InsertColumn(2,"车削主轴转速",LVCFMT_LEFT,100);
    m_Pmilllist.InsertColumn(3,"电主轴转速",LVCFMT_LEFT,100);
 	m_Pmilllist.InsertColumn(4,"切削深度",LVCFMT_LEFT,100);
    m_Pmilllist.InsertColumn(5,"进给速度",LVCFMT_LEFT,100);
	m_Pmilllist.InsertColumn(6,"表面精度",LVCFMT_LEFT,100);
	m_Pmilllist.InsertColumn(7,"工件材料",LVCFMT_LEFT,100);
	m_Pmilllist.InsertColumn(8,"刀具",LVCFMT_LEFT,100);

    m_Pmillresultlist.InsertColumn(0,"车削主轴转速",LVCFMT_LEFT,100);
	m_Pmillresultlist.InsertColumn(1,"电主轴转速",LVCFMT_LEFT,85);
	m_Pmillresultlist.InsertColumn(2,"切削深度",LVCFMT_LEFT,80);
 	m_Pmillresultlist.InsertColumn(3,"进给速度",LVCFMT_LEFT,80);
	flag=0;
	
	tx_Cutdepth=GetDlgItem(IDC_EDIT3);
	tx_Dia=GetDlgItem(IDC_EDIT1);
	tx_Feedrate=GetDlgItem(IDC_EDIT6);
    tx_Motorspeed=GetDlgItem(IDC_EDIT5);
	tx_Spindlespeed=GetDlgItem(IDC_EDIT2);
	tx_Pismaterial=GetDlgItem(IDC_EDIT15);
	tx_Roughness=GetDlgItem(IDC_EDIT20);
	tx_Tool=GetDlgItem(IDC_EDIT16);
	tx_ID=GetDlgItem(IDC_EDIT23);

	bt_add=GetDlgItem(IDC_PmillAdd);
	bt_save=GetDlgItem(IDC_PmillSave);
	bt_modify=GetDlgItem(IDC_PmillModify);
	bt_delete=GetDlgItem(IDC_PmillDelete);
    bt_query=GetDlgItem(IDC_PmillQuery);

    tx_Cutdepth->EnableWindow(false);
	tx_Dia->EnableWindow(false);
	tx_Feedrate->EnableWindow(false);
    tx_Motorspeed->EnableWindow(false);
	tx_Spindlespeed->EnableWindow(false);
	tx_Pismaterial->EnableWindow(false);
	tx_Roughness->EnableWindow(false);
	tx_Tool->EnableWindow(false);
	tx_ID->EnableWindow(false);

  	
	bt_add->EnableWindow(true);
	bt_save->EnableWindow(false);
	bt_modify->EnableWindow(false);
	bt_delete->EnableWindow(false);



//列表框数据初始化
	strQuery = "select * from paraturnmill";
	theApp.ADOExecute(theApp.m_pADOSet, strQuery);
    int iCount = theApp.m_pADOSet->GetRecordCount();
	if (0==iCount) return 0;
	theApp.m_pADOSet->MoveFirst();
	for (int i=0; i<iCount; i++)
    {	// Get id
		Holder = theApp.m_pADOSet->GetCollect("id");
	    str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
	    m_Pmilllist.InsertItem(i, str);
		// Get shaftdia
		Holder = theApp.m_pADOSet->GetCollect("shaftdia");
	    str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
	    m_Pmilllist.SetItemText(i, 1, str);
	    // Get spinldespindle
        Holder = theApp.m_pADOSet->GetCollect("spindle");
	    str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
	    m_Pmilllist.SetItemText(i, 2, str);
		// Get motorspindle
        Holder = theApp.m_pADOSet->GetCollect("motorspindle");
	    str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
	    m_Pmilllist.SetItemText(i, 3, str);
		// Get cutdepth
        Holder = theApp.m_pADOSet->GetCollect("cutdepth");
	   	str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
	    m_Pmilllist.SetItemText(i, 4, str);
		// Get feedrate
        Holder = theApp.m_pADOSet->GetCollect("feedrate");
	   	str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
	    m_Pmilllist.SetItemText(i, 5, str);
		// Get turnmillra
        Holder = theApp.m_pADOSet->GetCollect("turnmillra");
	   	str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
	    m_Pmilllist.SetItemText(i, 6, str);
		// Get wpmaterial
        Holder = theApp.m_pADOSet->GetCollect("wpmaterial");
	   	str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
	    m_Pmilllist.SetItemText(i, 7, str);
		// Get toolmaterial
        Holder = theApp.m_pADOSet->GetCollect("toolmaterial");
	   	str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
	    m_Pmilllist.SetItemText(i, 8, str);

		theApp.m_pADOSet->MoveNext();
	}
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPARAMILL::OnPmillClear() 
{
	// TODO: Add your control notification handler code here
	m_sDianeed="";
	m_sPismaterialneed="";
	m_sToolneed="";

	while ( m_Pmillresultlist.DeleteItem (0))
    UpdateData(false);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?