📄 page_gear.cpp
字号:
// Page_Gear.cpp : implementation file
//
#include "stdafx.h"
#include "gear_cutter_database.h"
#include "Page_Gear.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPage_Gear property page
IMPLEMENT_DYNCREATE(CPage_Gear, CPropertyPage)
CPage_Gear::CPage_Gear() : CPropertyPage(CPage_Gear::IDD)
{
//{{AFX_DATA_INIT(CPage_Gear)
// NOTE: the ClassWizard will add member initialization here
m_angle_gear_v = 0.0f;
m_bottom_dia_v = 0.0f;
m_helic_gear_v = 0.0f;
m_margin_gear_v = 0.0f;
m_mn_gear_v = 0.0f;
m_nthick_gear_v = 0.0f;
m_coefficient_gear_v = 0.0f;
m_num_gear_v = _T("");
m_thick_gear_v = 0.0f;
m_top_dia_gear_v = 0.0f;
m_zn_gear_v = 0;
//}}AFX_DATA_INIT
}
CPage_Gear::~CPage_Gear()
{
}
void CPage_Gear::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPage_Gear)
DDX_Control(pDX, IDC_LIST_gear, m_gear_list);
DDX_Control(pDX, IDC_EDIT_zn_gear, m_zn_gear);
DDX_Control(pDX, IDC_EDIT_top_dia_gear, m_top_dia_gear);
DDX_Control(pDX, IDC_EDIT_thick_gear, m_thick_gear);
DDX_Control(pDX, IDC_EDIT_num_gear, m_num_gear);
DDX_Control(pDX, IDC_EDIT_coefficient_gear, m_coefficient_gear);
DDX_Control(pDX, IDC_EDIT_nthick_gear, m_nthick_gear);
DDX_Control(pDX, IDC_EDIT_mn_gear, m_mn_gear);
DDX_Control(pDX, IDC_EDIT_margin_gear, m_margin_gear);
DDX_Control(pDX, IDC_EDIT_helic_gear, m_helic_gear);
DDX_Control(pDX, IDC_EDIT_bottom_dia_gear, m_bottom_dia);
DDX_Control(pDX, IDC_EDIT_angle_gear, m_angle_gear);
DDX_Text(pDX, IDC_EDIT_num_gear, m_num_gear_v);
DDX_Text(pDX, IDC_EDIT_mn_gear, m_mn_gear_v);
DDX_Text(pDX, IDC_EDIT_zn_gear, m_zn_gear_v);
DDX_Text(pDX, IDC_EDIT_angle_gear, m_angle_gear_v);
DDX_Text(pDX, IDC_EDIT_helic_gear, m_helic_gear_v);
DDX_Text(pDX, IDC_EDIT_nthick_gear, m_nthick_gear_v);
DDX_Text(pDX, IDC_EDIT_top_dia_gear, m_top_dia_gear_v);
DDX_Text(pDX, IDC_EDIT_bottom_dia_gear, m_bottom_dia_v);
DDX_Text(pDX, IDC_EDIT_thick_gear, m_thick_gear_v);
DDX_Text(pDX, IDC_EDIT_margin_gear, m_margin_gear_v);
DDX_Text(pDX, IDC_EDIT_coefficient_gear, m_coefficient_gear_v);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPage_Gear, CPropertyPage)
//{{AFX_MSG_MAP(CPage_Gear)
ON_BN_CLICKED(IDC_BTN_append, OnBTNappend)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_BTN_delete, OnBTNdelete)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPage_Gear message handlers
BOOL CPage_Gear::OnInitDialog()
{
CPropertyPage::OnInitDialog();
extern int symbol_gear;
if(symbol_gear==1)
{
GetDlgItem(IDC_STATIC_1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BTN_append)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BTN_delete)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_LIST_gear)->ShowWindow(SW_HIDE);
}
else
{
GetDlgItem(IDC_STATIC_1)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BTN_append)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BTN_delete)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_LIST_gear)->ShowWindow(SW_SHOW);
}
try{
m_pdatabase=new CDatabase();
m_pset=new CRecordset();
m_pdatabase->Open(_T("gear_cutter_database"),FALSE,FALSE,_T("ODBC;DSN=gear_cutter_database"),FALSE);
m_pset->m_pDatabase=m_pdatabase;
}
catch(CDBException* e){
e->ReportError();
e->Delete();
delete m_pset;
delete m_pdatabase;
return TRUE;}
extern int symbol_gear;
if(symbol_gear==0)
{
m_num_gear.EnableWindow(TRUE);
ClearAll();
clear_list();
nCount=0;
CString str;
CString column[]={"齿轮零件号","齿轮模数","齿轮齿数","齿轮压力角","齿轮螺旋角","齿轮分度圆法向齿厚","齿顶圆直径","齿根圆直径","齿轮厚度","齿厚留剃余量","滚刀齿根与齿轮齿顶的径向间隙系数"};
int nWidth;
for(int i=0;i<11;i++)
{
nWidth=column[i].GetLength()+100;
m_gear_list.InsertColumn(i,column[i],LVCFMT_RIGHT,nWidth);
}
}
else
{
m_num_gear.EnableWindow(FALSE);
IniData();
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CPage_Gear::ClearAll()
{
this->m_num_gear.SetWindowText("");
this->m_mn_gear.SetWindowText("");
this->m_zn_gear.SetWindowText("");
this->m_angle_gear.SetWindowText("");
this->m_helic_gear.SetWindowText("");
this->m_nthick_gear.SetWindowText("");
this->m_top_dia_gear.SetWindowText("");
this->m_bottom_dia.SetWindowText("");
this->m_thick_gear.SetWindowText("");
this->m_margin_gear.SetWindowText("");
this->m_coefficient_gear.SetWindowText("");
}
void CPage_Gear::IniData()
{
extern CRecordset m_pset_gear1;
CString str[11];
for(int i=0;i<11;i++)
m_pset_gear1.GetFieldValue(i,str[i]);
this->m_num_gear.SetWindowText(str[0]);
this->m_mn_gear.SetWindowText(str[1]);
this->m_zn_gear.SetWindowText(str[2]);
this->m_angle_gear.SetWindowText(str[3]);
this->m_helic_gear.SetWindowText(str[4]);
this->m_nthick_gear.SetWindowText(str[5]);
this->m_top_dia_gear.SetWindowText(str[6]);
this->m_bottom_dia.SetWindowText(str[7]);
this->m_thick_gear.SetWindowText(str[8]);
this->m_margin_gear.SetWindowText(str[9]);
this->m_coefficient_gear.SetWindowText(str[10]);
}
void CPage_Gear::OnOK()
{
// TODO: Add your specialized code here and/or call the base class
extern int symb;
extern int symbol_gear;
if(symbol_gear==1)
{
symb=1;
if(MessageBox("修改齿轮参数将导致与之对应的刀具参数被删除,是否继续?","提示",MB_ICONQUESTION+MB_OKCANCEL)==IDCANCEL)
symb=0;
}
else
{
}
CPropertyPage::OnOK();
}
void CPage_Gear::checkdata()
{
gear_check_symbol=0;
int i;
CString str[11];
this->m_num_gear.GetWindowText(str[0]);
this->m_mn_gear.GetWindowText(str[1]);
this->m_zn_gear.GetWindowText(str[2]);
this->m_angle_gear.GetWindowText(str[3]);
this->m_helic_gear.GetWindowText(str[4]);
this->m_nthick_gear.GetWindowText(str[5]);
this->m_top_dia_gear.GetWindowText(str[6]);
this->m_bottom_dia.GetWindowText(str[7]);
this->m_thick_gear.GetWindowText(str[8]);
this->m_margin_gear.GetWindowText(str[9]);
this->m_coefficient_gear.GetWindowText(str[10]);
for(i=0;i<11;i++)
{
if(str[i]=="")
{
gear_check_symbol=1;
switch(i)
{
case 0:
strName="齿轮零件号";m_num_gear.SetFocus();return;
case 1:
strName="齿轮模数";m_mn_gear.SetFocus();return;
case 2:
strName="齿轮齿数";m_zn_gear.SetFocus();return;
case 3:
strName="齿轮压力角";m_angle_gear.SetFocus();return;
case 4:
strName="齿轮螺旋角";m_helic_gear.SetFocus();return;
case 5:
strName="齿轮分度圆法向齿厚";m_nthick_gear.SetFocus();return;
case 6:
strName="齿顶圆直径";m_top_dia_gear.SetFocus();return;
case 7:
strName="齿根圆直径 ";m_bottom_dia.SetFocus();return;
case 8:
strName="齿轮厚度";m_thick_gear.SetFocus();return;
case 9:
strName="齿厚留剃余量";m_margin_gear.SetFocus();return;
case 10:
strName="滚刀齿根与齿轮齿顶的径向间隙系数";m_coefficient_gear.SetFocus();return;
}
}
}
}
void CPage_Gear::OnBTNappend()
{
// TODO: Add your control notification handler code here
CString strValue[11];
checkdata();
if(gear_check_symbol==1) {MessageBox(strName+"不能为空!","警告",MB_ICONWARNING+MB_OK);return;}
this->UpdateData();
strValue[0].Format("%s",m_num_gear_v);
strValue[1].Format("%f",m_mn_gear_v);
strValue[2].Format("%d",m_zn_gear_v);
strValue[3].Format("%f",m_angle_gear_v);
strValue[4].Format("%f",m_helic_gear_v);
strValue[5].Format("%f",m_nthick_gear_v);
strValue[6].Format("%f",m_top_dia_gear_v);
strValue[7].Format("%f",m_bottom_dia_v);
strValue[8].Format("%f",m_thick_gear_v);
strValue[9].Format("%f",m_margin_gear_v);
strValue[10].Format("%f",m_coefficient_gear_v);
if(strValue[0]=="") {return;}
int j=1;
m_gear_list.InsertItem(nCount,strValue[0]);
while(j<11)
{
m_gear_list.SetItemText(nCount,j,strValue[j]);
j++;
}
nCount++;
ClearAll();
}
void CPage_Gear::clear_list()
{
//m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
m_gear_list.DeleteAllItems();
while(m_gear_list.DeleteColumn(0));
UpdateWindow();
}
void CPage_Gear::OnDestroy()
{
CPropertyPage::OnDestroy();
// TODO: Add your message handler code here
delete m_pset;
delete m_pdatabase;
}
void CPage_Gear::OnCancel()
{
// TODO: Add your specialized code here and/or call the base class
extern int symbol_gear;
if(symbol_gear==0)
{
int count;
count=m_gear_list.GetItemCount();
if(count==0)
{
return;
}
m_pdatabase->BeginTrans();
try
{
for(int j=0;j<count;j++)
{
CString str[20];
for(int i=0;i<11;i++)
{
str[i]=m_gear_list.GetItemText(j,i);
}
float strValue[10];
CString num=str[0];
for(int m=0;m<10;m++)
{
strValue[m]=atof(str[m+1].GetBuffer(0));
}
CString strsql;
strsql.Format("insert into gear_table(齿轮零件号,齿轮模数,齿轮齿数,齿轮压力角,齿轮螺旋角,齿轮分度圆法向齿厚,齿顶圆直径,齿根圆直径,齿轮厚度,齿厚留剃余量,滚刀齿根与齿轮齿顶的径向间隙系数) values('%s',%f,%d,%f,%f,%f,%f,%f,%f,%f,%f)",num,strValue[0],(int)strValue[1],strValue[2],strValue[3],strValue[4],strValue[5],strValue[6],strValue[7],strValue[8],strValue[9]);
if(m_pdatabase->CanUpdate())
m_pdatabase->ExecuteSQL(strsql);
}
m_pdatabase->CommitTrans();
MessageBox("操作成功!","提示",MB_ICONINFORMATION+MB_OK);
}
catch(CDBException* e)
{
e->Delete();
m_pdatabase->Rollback();
MessageBox("操作失败,可能齿轮零件号重复!","警告",MB_ICONERROR+MB_OK);
return;
}
}
CPropertyPage::OnCancel();
}
void CPage_Gear::OnBTNdelete()
{
// TODO: Add your control notification handler code here
if(m_gear_list.GetSelectedCount()==0)
{
MessageBox("请先选择齿轮参数!","提示",MB_ICONWARNING+MB_OK);
return;
}
if(MessageBox("是否真的要删除这条齿轮参数!","提示",MB_ICONQUESTION+MB_OKCANCEL)!=IDOK)
return;
UINT i,uSelectedCount=m_gear_list.GetSelectedCount();
int nItemSel=0;
if(uSelectedCount>0)
{
for(i=0;i<uSelectedCount;i++)
{
nItemSel=m_gear_list.GetNextItem(nItemSel-1,LVNI_SELECTED);
m_gear_list.DeleteItem(nItemSel);
nCount--;
UpdateWindow();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -