?? gear_para_main.cpp
字號:
// Gear_Para_Main.cpp : implementation file
//
#include "stdafx.h"
#include "gear_cutter_database.h"
#include "Gear_Para_Main.h"
#include "Sheet_Gear.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
int symbol_gear;
int symb;
CRecordset m_pset_gear1;
/////////////////////////////////////////////////////////////////////////////
// CGear_Para_Main dialog
CGear_Para_Main::CGear_Para_Main(CWnd* pParent /*=NULL*/)
: CDialog(CGear_Para_Main::IDD, pParent)
{
//{{AFX_DATA_INIT(CGear_Para_Main)
m_edit_value = _T("");
//}}AFX_DATA_INIT
}
void CGear_Para_Main::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGear_Para_Main)
DDX_Control(pDX, IDC_COMBO_rela, m_combo_rela);
DDX_Control(pDX, IDC_COMBO_attri, m_combo_attri);
DDX_Control(pDX, IDC_LIST_gear_para_view, m_list_control);
DDX_Text(pDX, IDC_EDIT_value, m_edit_value);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CGear_Para_Main, CDialog)
//{{AFX_MSG_MAP(CGear_Para_Main)
ON_WM_CREATE()
ON_WM_DESTROY()
ON_COMMAND(ID_BUTTON_append, OnBUTTONappend)
ON_COMMAND(ID_BUTTON_delete, OnBUTTONdelete)
ON_COMMAND(ID_BUTTON_find, OnBUTTONfind)
ON_COMMAND(ID_BUTTON_modify, OnBUTTONmodify)
ON_COMMAND(ID_BUTTON_exit, OnBUTTONexit)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_gear_para_view, OnDblclkLISTgearparaview)
ON_BN_CLICKED(ID_BUTTON_ask, OnBUTTONask)
ON_BN_CLICKED(ID_Button_all_para, OnButtonallpara)
ON_WM_CONTEXTMENU()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGear_Para_Main message handlers
int CGear_Para_Main::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_wndToolBar.ShowWindow(SW_SHOW);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
return 0;
}
BOOL CGear_Para_Main::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
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;
}
ComboxData("gear_table");
DataShow("gear_table");
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CGear_Para_Main::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
delete m_pset;
delete m_pdatabase;
}
BOOL CGear_Para_Main::ShowInformation(CString strSQL)
{
if(!m_pdatabase->IsOpen()) return FALSE;
if(!m_pset) return FALSE;
try{
BeginWaitCursor();
if(m_pset->IsOpen()) m_pset->Close();
m_pset->Open(CRecordset::dynaset,strSQL);
if(!m_pset->IsEOF())
{m_pset->MoveLast();
m_pset->MoveFirst();}
int nFieldCount=m_pset->GetODBCFieldCount();
CODBCFieldInfo fieldinfo;
for(int n=0;n<nFieldCount;n++){
m_pset->GetODBCFieldInfo(n,fieldinfo);
int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
}
CString strValue;
m_pset->MoveFirst();
int nCount=0;
while(!m_pset->IsEOF()){
m_list_control.InsertItem(nCount,strValue);
for(int j=0;j<nFieldCount;j++){
m_pset->GetFieldValue(j,strValue);
m_list_control.SetItemText(nCount,j,strValue);
}
m_pset->MoveNext();
nCount++;
}
EndWaitCursor();
}
catch(CDBException *e){
e->Delete();
EndWaitCursor();
return FALSE;
}
return TRUE;
}
void CGear_Para_Main::ClearList()
{
//m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
m_list_control.DeleteAllItems();
while(m_list_control.DeleteColumn(0));
UpdateWindow();
}
void CGear_Para_Main::DataShow(CString table_name)
{
ClearList();
CString strSQL;
strSQL="select * from "+table_name;
ShowInformation(strSQL);
}
void CGear_Para_Main::DataDelete(CString table_name,CString attri)
{
if(m_list_control.GetSelectedCount()==0)
{
MessageBox("沒有數據,請先選擇齒輪參數!","提示",MB_ICONWARNING+MB_OK);
return;
}
if(MessageBox("是否真的要刪除這條記錄!","提示",MB_ICONQUESTION+MB_OKCANCEL)!=IDOK)
return;
if(!m_pdatabase->IsOpen()) {MessageBox("數據獲取失敗!","提示",MB_ICONERROR+MB_OK);return;}
if(!m_pset) {MessageBox("數據獲取失敗!","提示",MB_ICONERROR+MB_OK);return;}
if(m_pset->IsOpen()) m_pset->Close();
UINT i,uSelectedCount=m_list_control.GetSelectedCount();
int nItemSel=0;
if(uSelectedCount>0)
{
for(i=0;i<uSelectedCount;i++)
{
nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
CString str("");
str=m_list_control.GetItemText(nItemSel,0);
CString strSQL,strSQL1,strSQL2,strSQL3,table_name1="standard_hob_table",table_name2="tiqian_tutai_hob_table",table_name3="tiqian_no_tutai_hob_table";
strSQL="delete from "+table_name+" where "+attri+"="+"'"+str+"'";
strSQL1="delete from "+table_name1+" where "+attri+"="+"'"+str+"'";
strSQL2="delete from "+table_name2+" where "+attri+"="+"'"+str+"'";
strSQL3="delete from "+table_name3+" where "+attri+"="+"'"+str+"'";
try
{
m_pdatabase->ExecuteSQL(strSQL);
m_pdatabase->ExecuteSQL(strSQL1);
m_pdatabase->ExecuteSQL(strSQL2);
m_pdatabase->ExecuteSQL(strSQL3);
}
catch(CDBException* e)
{
e->ReportError();
e->Delete();
return;
}
m_list_control.DeleteItem(nItemSel);
UpdateWindow();
}
}
}
bool CGear_Para_Main::Edit_Data_Gain(CString table_name,CString attri)
{
if(!m_pdatabase->IsOpen()) {MessageBox("數據獲取失敗!","提示",MB_ICONERROR+MB_OK);return FALSE;}
UINT uSelectedCount=m_list_control.GetSelectedCount();
if(uSelectedCount>1||uSelectedCount==0)
{
if(uSelectedCount==0)
{
MessageBox("要選擇一條記錄!","提示",MB_ICONWARNING+MB_OK);
return FALSE;
}
if(uSelectedCount>1)
{
MessageBox("只能選擇一條記錄!","提示",MB_ICONWARNING+MB_OK);
return FALSE;
}
}
else
{
int nItemSel=0;
nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
CString strID,strSQL;
strID=m_list_control.GetItemText(nItemSel,0);
strSQL="select * from "+table_name+" where "+attri+"='"+strID+"'";
try
{
m_pset_gear1.m_pDatabase=m_pdatabase;
if(m_pset_gear1.IsOpen()) m_pset_gear1.Close();
m_pset_gear1.Open(CRecordset::dynaset,strSQL);
}
catch(CDBException* e)
{
e->Delete();
return FALSE;
}
return TRUE;
}
return FALSE;
}
void CGear_Para_Main::Gear_Para_Modify()
{
CSheet_Gear gear_para_modify("修改",this,0);
gear_para_modify.m_psh.dwFlags|=PSH_NOAPPLYNOW;
if(gear_para_modify.DoModal()==1&&symb==1)
{
CString num=gear_para_modify.gear_para_dialog.m_num_gear_v;
float mn=gear_para_modify.gear_para_dialog.m_mn_gear_v;
int zn=gear_para_modify.gear_para_dialog.m_zn_gear_v;
float angle=gear_para_modify.gear_para_dialog.m_angle_gear_v;
float helic_angle=gear_para_modify.gear_para_dialog.m_helic_gear_v;
float nthick=gear_para_modify.gear_para_dialog.m_nthick_gear_v;
float top_dia=gear_para_modify.gear_para_dialog.m_top_dia_gear_v;
float bottom_dia=gear_para_modify.gear_para_dialog.m_bottom_dia_v;
float thick=gear_para_modify.gear_para_dialog.m_thick_gear_v;
float margin=gear_para_modify.gear_para_dialog.m_margin_gear_v;
float coefficient=gear_para_modify.gear_para_dialog.m_coefficient_gear_v;
CString strsql;
strsql.Format("update gear_table set 齒輪模數=%f,齒輪齒數=%d,齒輪壓力角=%f,齒輪螺旋角=%f,齒輪分度圓法向齒厚=%f,齒頂圓直徑=%f,齒根圓直徑=%f,齒輪厚度=%f,齒厚留剃余量=%f,滾刀齒根與齒輪齒頂的徑向間隙系數=%f where 齒輪零件號='%s'",mn,zn,angle,helic_angle,nthick,top_dia,bottom_dia,thick,margin,coefficient,num);
CString strSQL1,strSQL2,strSQL3,table_name1="standard_hob_table",table_name2="tiqian_tutai_hob_table",table_name3="tiqian_no_tutai_hob_table";
strSQL1="delete from "+table_name1+" where 齒輪零件號='"+num+"'";
strSQL2="delete from "+table_name2+" where 齒輪零件號='"+num+"'";
strSQL3="delete from "+table_name3+" where 齒輪零件號='"+num+"'";
try
{
m_pdatabase->BeginTrans();
if(m_pdatabase->CanUpdate())
{
m_pdatabase->ExecuteSQL(strsql);
m_pdatabase->ExecuteSQL(strSQL1);
m_pdatabase->ExecuteSQL(strSQL2);
m_pdatabase->ExecuteSQL(strSQL3);
}
m_pdatabase->CommitTrans();
}
catch(CDBException* e)
{
e->ReportError();
e->Delete();
m_pdatabase->Rollback();
return;
}
DataShow("gear_table");
}
}
void CGear_Para_Main::Gear_Para_Append()
{
CSheet_Gear gear_para_append("添加",this,0);
gear_para_append.m_psh.dwFlags|=PSH_NOAPPLYNOW;
if(gear_para_append.DoModal()!=1)
{
DataShow("gear_table");
}
}
bool CGear_Para_Main::append_combox(CString strSQL)
{
try
{
if(m_pset->IsOpen()) m_pset->Close();
m_pset->Open(CRecordset::dynaset,strSQL);
if(!m_pset->IsEOF())
{m_pset->MoveLast();
m_pset->MoveFirst();}
int nFieldCount=m_pset->GetODBCFieldCount();
CODBCFieldInfo fieldinfo;
for(int n=0;n<nFieldCount;n++){
m_pset->GetODBCFieldInfo(n,fieldinfo);
m_combo_attri.AddString(fieldinfo.m_strName);
}
}
catch(CDBException *e)
{
e->ReportError();
EndWaitCursor();
return FALSE;
}
return TRUE;
}
void CGear_Para_Main::ComboxData(CString table_name)
{
CString strSQL;
m_combo_attri.ResetContent();
strSQL="select * from "+table_name;
if(!append_combox(strSQL)) MessageBox("數據獲取失敗!","提示",MB_ICONERROR+MB_OK);
}
void CGear_Para_Main::OnBUTTONappend()
{
// TODO: Add your command handler code here
symbol_gear=0;
Gear_Para_Append();
return;
}
void CGear_Para_Main::OnBUTTONdelete()
{
// TODO: Add your command handler code here
DataDelete("gear_table","齒輪零件號");
}
void CGear_Para_Main::OnBUTTONexit()
{
// TODO: Add your command handler code here
CGear_Para_Main::EndDialog(0);
}
void CGear_Para_Main::OnBUTTONfind()
{
// TODO: Add your command handler code here
OnBUTTONask() ;
}
void CGear_Para_Main::OnBUTTONmodify()
{
// TODO: Add your command handler code here
symbol_gear=1;
if(Edit_Data_Gain("gear_table","齒輪零件號")==FALSE) return;
Gear_Para_Modify();
return;
}
void CGear_Para_Main::OnDblclkLISTgearparaview(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
OnBUTTONmodify();
*pResult = 0;
}
void CGear_Para_Main::OnBUTTONask()
{
// TODO: Add your control notification handler code here
ClearList();
CString strSQL;
CString table_name="gear_table";
CString attri,rela;
m_combo_attri.GetWindowText(attri);
m_combo_rela.GetWindowText(rela);
this->UpdateData(TRUE);
if(attri.IsEmpty()||rela.IsEmpty())
{
if(attri.IsEmpty())
{
MessageBox("屬性不能為空,查詢失敗!","提示",MB_ICONERROR+MB_OK);
return;
}
else
{
MessageBox("關系不能為空,查詢失敗!","提示",MB_ICONERROR+MB_OK);
return;
}
}
if(attri=="齒輪零件號")
strSQL="select * from "+table_name+" where "+attri+rela+"'"+m_edit_value+"'";
else
strSQL="select * from "+table_name+" where "+attri+rela+m_edit_value;
if(!ShowInformation(strSQL)) MessageBox("對不起,沒有您所要的數據!","提示",MB_ICONWARNING+MB_OK);
return;
}
void CGear_Para_Main::OnButtonallpara()
{
// TODO: Add your control notification handler code here
ClearList();
CString table_name="gear_table";
CString strSQL;
strSQL="select * from "+table_name;
ShowInformation(strSQL);
return;
}
void CGear_Para_Main::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
CMenu MyMenu;
if(MyMenu.CreatePopupMenu())
{
MyMenu.AppendMenu(MF_STRING,ID_Button_all_para,"全部顯示");
MyMenu.AppendMenu(MF_STRING,ID_BUTTON_append,"齒輪參數添加");
MyMenu.AppendMenu(MF_STRING,ID_BUTTON_modify,"齒輪參數修改");
MyMenu.AppendMenu(MF_STRING,ID_BUTTON_delete,"齒輪參數刪除");
MyMenu.AppendMenu(MF_STRING,ID_BUTTON_ask,"齒輪參數查詢");
MyMenu.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
}
else
{
MessageBox("菜單加載失敗!","提示",MB_ICONWARNING+MB_OK);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -