【VC开源代码栏目提醒】:网学会员为需要VC开源代码的朋友们搜集整理了ClassDlg.cpp相关资料,希望对各位网友有所帮助!
// ClassDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MyPos.h"
#include "ClassDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CClassDlg dialog
extern CMyPosApp theApp;
CClassDlg::CClassDlg(CWnd* pParent /*=NULL*/)
: CDialog(CClassDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CClassDlg)
m_classname = _T("");
m_radiodiscount = -1;
m_tempid = 0;
//}}AFX_DATA_INIT
}
void CClassDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CClassDlg)
DDX_Control(pDX, IDC_RADIO1_DISCOUNT, m_oRadiodiscount);
DDX_Control(pDX, IDC_EDIT_CLASSNAME, m_oClassname);
DDX_Control(pDX, IDC_TREE_CLASS, m_oTreeclass);
DDX_Text(pDX, IDC_EDIT_CLASSNAME, m_classname);
DDX_Radio(pDX, IDC_RADIO1_DISCOUNT, m_radiodiscount);
DDX_Text(pDX, IDC_TEMPID, m_tempid);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CClassDlg, CDialog)
//{{AFX_MSG_MAP(CClassDlg)
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE_CLASS, OnSelchangedTreeClass)
ON_BN_CLICKED(IDC_BUTTON_ADDSAME, OnButtonAddsame)
ON_BN_CLICKED(IDC_BUTTON_ADDSUB, OnButtonAddsub)
ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CClassDlg message handlers
void CClassDlg::OnSelchangedTreeClass(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
CString sql;
CString curtext;
_RecordsetPtr m_pRecordset; //Must define it in function!!!
HTREEITEM hCurItem;
hCurItem=m_oTreeclass.GetSelectedItem ();//Get Current item and its sub items.
curtext=m_oTreeclass.GetItemText(hCurItem);//Read current item text into edit control.
m_classname=curtext;
sql="SELECT * FROM MATERIELCLASS where NAME='"+curtext+"'";
try
{
m_tempid=0;
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdText);
if(!m_pRecordset->adoEOF)
{
m_tempid=(long)(m_pRecordset->GetCollect("ID"));
Curpar=VariantToCString(m_pRecordset->GetCollect("PARENT"));
if((float)(m_pRecordset->GetCollect("DISCOUNT"))==0)
m_radiodiscount=0;
if((float)(m_pRecordset->GetCollect("DISCOUNT"))==1)
m_radiodiscount=1;
}
m_pRecordset->Close();
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
MessageBox("读取单选按钮出错!",m_classname);
}
UpdateData(false);
*pResult = 0;
}
void CClassDlg::AddSubTree(CString ParTree, HTREEITEM hPartItem)
{
HTREEITEM hCurrent;
CString sql;
CString curID;
_RecordsetPtr m_pTRecordset; //Must define it in function!!!Becourse this is a RECURSION function.
sql="SELECT * FROM MATERIELCLASS where PARENT='";
sql=sql+ParTree+"'";//The 1st time Partree="1".
try
{
m_pTRecordset.CreateInstance("ADODB.Recordset");
m_pTRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdText);
m_pTRecordset->MoveFirst();
if(!m_pTRecordset->adoEOF)
{
while(!m_pTRecordset->adoEOF)
{
hCurrent = m_oTreeclass.InsertItem((LPCTSTR)(_bstr_t)(m_pTRecordset->GetCollect("NAME")), hPartItem, NULL);//Insert an item into current parent.
curID=VariantToCString(m_pTRecordset->GetCollect("ID"));
if (TreeSumRecordCount(curID)>0)
AddSubTree(VariantToCString(m_pTRecordset->GetCollect("ID")),hCurrent);//Recursion.
if (!m_pTRecordset->adoEOF)
m_pTRecordset->MoveNext();
}
}
m_pTRecordset->Close();
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
MessageBox("读取类别子树出错!",ParTree);
}
}
void CClassDlg::AddTree()
{
TVINSERTSTRUCT tvInsert;
HTREEITEM hParent;
_RecordsetPtr m_pTRecordset; //Must define it in function!!!Becourse this is a RECURSION function.
CString sroot,sql;
tvInsert.hParent = NULL;
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT;
sql="SELECT * FROM MATERIELCLASS where ID=1";
try
{
m_pTRecordset.CreateInstance("ADODB.Recordset");
m_pTRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdText);
if(!m_pTRecordset->adoEOF)
sroot=(LPTSTR)(_bstr_t)m_pTRecordset->GetCollect("NAME");//Insert an item into current parent.
m_pTRecordset->Close();
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("读取类别树出错:%s",e.ErrorMessage());
AfxMessageBox(errormessage);
}
// tvInsert.item.pszText = _T("root");
if(sroot!="")
{
// tvInsert.item.pszText =_T("");//User this line to give the tree a sum root.
hParent = m_oTreeclass.InsertItem(&tvInsert);//HTREEITEM of root.
// AddSubTree("1",hParent);//Here strChildTree just must not equal "root",can be anyother string.
AddSubTree("RootClass",hParent);//Here strChildTree just must not equal "root",can be anyother string.
}
m_oTreeclass.Expand(hParent,TVE_EXPAND);
}
int CClassDlg::TreeSumRecordCount(CString strFieldValue)
{
int Sum=0;
CString sql;
_RecordsetPtr m_pRecordset; //Must define it in function!!!!
sql="SELECT * FROM MATERIELCLASS where PARENT ='";
sql=sql+strFieldValue+"'";
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);
if(!m_pRecordset->BOF)//If current record is not the first record.
{
m_pRecordset->MoveFirst ();
while(!m_pRecordset->adoEOF)
{
Sum+=1;
m_pRecordset->MoveNext ();
}
}
m_pRecordset->Close();
}
catch(_com_error e)///捕捉异常
{
CString stemp;
stemp.Format("计算类别总数出错:%s",e.ErrorMessage());
AfxMessageBox(stemp);
}
return Sum;
}
CString CClassDlg::VariantToCString(VARIANT var)
{
CString strValue;
_variant_t var_t;
_bstr_t bst_t;
time_t cur_time;
CTime time_value;
COleCurrency var_currency;
switch(var.vt)
{
case VT_EMPTY:strValue=_T("");break;
case VT_UI1:strValue.Format ("%d",var.bVal);break;
case VT_I2:strValue.Format ("%d",var.iVal );break;
case VT_I4:strValue.Format ("%d",var.lVal);break;
case VT_R4:strValue.Format ("%f",var.fltVal);break;
case VT_R8:strValue.Format ("%f",var.dblVal);break;
case VT_CY:
var_cu
上一篇:
CJTOOLBAR.CPP
下一篇:
首鼠两端