📄 controlunit.cpp
字号:
CString strTemp;
strTemp=pPoint->GetPointName();
m_Recordset.SetFieldValue("PointName",(char*)(LPCTSTR)strTemp);
strTemp.Format("%.3f",pPoint->GetPointValue());
m_Recordset.SetFieldValue("CurValue",(char*)(LPCTSTR)strTemp);
strTemp.Format("%s",pPoint->GetPointMemo());
m_Recordset.SetFieldValue("PointMemo",(char*)(LPCTSTR)strTemp);
m_Recordset.Update();
CString strSQL="Select * From "+this->GetPointTableName();
strSQL=strSQL+" Where PointName = ";
strSQL=strSQL+"'"+pPoint->GetPointName()+"'";
m_Recordset.Close();
m_Recordset.Open(dbOpenDynaset,strSQL);
if (m_Recordset.IsBOF() && m_Recordset.IsEOF())
{
delete pPoint;
return FALSE;
}
else
{
m_Recordset.MoveFirst();
COleVariant varValue;
varValue=m_Recordset.GetFieldValue("PointID");
pPoint->m_wPointID=atoi(OleVariantToString(varValue));
}
strSQL="Select * From "+this->m_pSegment->GetPointNameID();
m_Recordset.Close();
m_Recordset.Open(dbOpenDynaset,strSQL);
m_Recordset.AddNew();
strTemp.Format("%s",pPoint->GetPointLongName());
m_Recordset.SetFieldValue("PointName",(char*)(LPCTSTR)strTemp);
strTemp.Format("%d",pPoint->GetPointLongID());
m_Recordset.SetFieldValue("PointID",(char*)(LPCTSTR)strTemp);
m_Recordset.Update();
m_plPointList.AddTail(pPoint);
CDataManagerDoc* m_pDoc=(CDataManagerDoc*)((CMainFrame*)
AfxGetApp()->m_pMainWnd)->GetActiveDocument();
POSITION pos=m_pDoc->GetFirstViewPosition();
CLeftView* p_TreeView;
CDataManagerView* p_ListView;
while (pos != NULL)
{
CView* pView = m_pDoc->GetNextView(pos);
if(pView->IsKindOf(RUNTIME_CLASS(CLeftView)))
{
p_TreeView=(CLeftView*)pView;
}
else if(pView->IsKindOf(RUNTIME_CLASS(CDataManagerView)))
{
p_ListView=(CDataManagerView*)pView;
}
}
CListCtrl& m_list=p_ListView->GetListCtrl();
CTreeCtrl& m_tree=p_TreeView->GetTreeCtrl();
HTREEITEM hItem=m_tree.GetSelectedItem();
if(hItem==this->hItem)
{
m_list.InsertItem(m_list.GetItemCount(),pPoint->GetPointName());
m_list.SetItemText(m_list.GetItemCount()-1,1,pPoint->GetPointValue());
m_list.SetItemText(m_list.GetItemCount()-1,2,pPoint->GetPointMemo());
}
return TRUE;
}
BOOL CControlUnit::AddPoint(CString strPointName,
CString strPointMemo)
{
CControlPoint* pCtrlPoint = new CControlPoint;
pCtrlPoint->SetPointName(strPointName);
pCtrlPoint->SetPointMemo(strPointMemo);
if(!AddPoint(pCtrlPoint))
{
delete pCtrlPoint;
return FALSE;
}
else
return TRUE;
}
BOOL CControlUnit::DeletePoint(CControlPoint* pPoint)
{
POSITION pos = m_plPointList.Find(pPoint);
if(pos != NULL)
{
CString strSQL;
strSQL="Delete From "+this->GetPointTableName()+" Where PointName = ";
strSQL=strSQL+"'"+pPoint->GetPointName()+"'";
this->m_pSegment->m_pModule->m_Database.Execute(strSQL);
strSQL="Delete From "+this->m_pSegment->GetPointNameID();
strSQL=strSQL+" Where PointName = ";
strSQL=strSQL+"'"+pPoint->GetPointLongName()+"'";
this->m_pSegment->m_pModule->m_Database.Execute(strSQL);
strSQL="Delete From "+this->m_pSegment->GetHisTableName();
CString strID;
strID.Format("%d",pPoint->GetPointLongID());
strSQL=strSQL+" Where PointID = "+strID;
this->m_pSegment->m_pModule->m_Database.Execute(strSQL);
int i=0;
CString strSelectedSegment,strSelectedUnit;
CDataManagerDoc* m_pDoc=(CDataManagerDoc*)((CMainFrame*)
AfxGetApp()->m_pMainWnd)->GetActiveDocument();
POSITION viewpos=m_pDoc->GetFirstViewPosition();
CDataManagerView* p_ListView;
while (viewpos != NULL)
{
CView* pView = m_pDoc->GetNextView(viewpos);
if(pView->IsKindOf(RUNTIME_CLASS(CDataManagerView)))
{
p_ListView=(CDataManagerView*)pView;
}
}
CListCtrl& m_list=p_ListView->GetListCtrl();
int item= m_list.GetNextItem(-1,LVNI_ALL|LVNI_SELECTED);
m_list.DeleteItem(item);
m_plPointList.RemoveAt(pos);
pPoint->SetControlUnit(NULL);
delete pPoint;
return TRUE;
}
else
return FALSE;
}
BOOL CControlUnit::DeletePoint(int nIndex)
{
POSITION pos = m_plPointList.FindIndex(nIndex);
CControlPoint* pCtrlPoint = NULL;
if(pos != NULL)
{
pCtrlPoint = (CControlPoint*)m_plPointList.GetAt(pos);
return DeletePoint(pCtrlPoint);
}
else
return FALSE;
}
void CControlUnit::BuildMemTree()
{
CControlPoint* TempCtrlPoint=NULL;
if(!m_pSegment->m_pModule->CheckTable(this->GetPointTableName()))
{
CString strSQL;
strSQL="Create Table "+this->GetPointTableName();
strSQL=strSQL+"( PointID AUTOINCREMENT,";
strSQL=strSQL+"PointName VarChar(30) not Null,";
strSQL=strSQL+"CurValue VarChar(30) Null,";
strSQL=strSQL+"PointMemo VarChar(255) Null)";
this->m_pSegment->m_pModule->m_Database.Execute(strSQL);
}
CDaoRecordset m_Recordset(&this->m_pSegment->m_pModule->m_Database);
m_Recordset.Open(dbOpenDynaset,"Select * from "+
this->GetPointTableName());
if (!(m_Recordset.IsBOF() && m_Recordset.IsEOF()))
{
m_Recordset.MoveFirst();
while(!m_Recordset.IsEOF())
{
TempCtrlPoint=new CControlPoint;
COleVariant varValue=m_Recordset.GetFieldValue("PointName");
TempCtrlPoint->m_strPointName=OleVariantToString(varValue);
varValue=m_Recordset.GetFieldValue("PointID");
TempCtrlPoint->m_wPointID=atoi(OleVariantToString(varValue));
varValue=m_Recordset.GetFieldValue("CurValue");
TempCtrlPoint->m_strValue=OleVariantToString(varValue);
varValue=m_Recordset.GetFieldValue("PointMemo");
TempCtrlPoint->m_strMemo=OleVariantToString(varValue);
TempCtrlPoint->m_pUnit=this;
this->m_plPointList.AddTail(TempCtrlPoint);
m_Recordset.MoveNext();
}
}
}
//////////////////////////////////////////////////////////////////////
// CControlPoint Class
CControlPoint::CControlPoint()
{
m_strPointName.Empty();
m_wPointID = 0;
m_strValue="0";
m_strMemo="";
}
CControlPoint::~CControlPoint()
{
}
CControlUnit* CControlPoint::GetControlUnit()
{
return m_pUnit;
}
void CControlPoint::SetControlUnit(CControlUnit* pUnit)
{
m_pUnit = pUnit;
}
CString CControlPoint::GetPointName()
{
return m_strPointName;
}
CString CControlPoint::GetPointLongName()
{
if (m_pUnit==NULL)
return this->GetPointName();
else
return m_pUnit->GetUnitLongName()+"."+this->GetPointName();
}
BOOL CControlPoint::SetPointName(CString strPointName)
{
if(strPointName.IsEmpty())
return FALSE;
if(m_strPointName == strPointName)
return FALSE;
m_strPointName = strPointName;
return TRUE;
}
WORD CControlPoint::GetPointID()
{
return m_wPointID;
}
DWORD CControlPoint::GetPointLongID()
{
if(m_pUnit == NULL)
return (DWORD)m_wPointID;
return MAKELONG(m_wPointID, m_pUnit->GetUnitID());
}
BOOL CControlPoint::SetPointID(WORD wPointID)
{
if(m_wPointID == wPointID)
return FALSE;
m_wPointID = wPointID;
return TRUE;
}
CString CControlPoint::GetPointMemo()
{
return m_strMemo;
}
BOOL CControlPoint::SetPointMemo(CString strNewMemo)
{
if(m_strMemo == strNewMemo)
return FALSE;
m_strMemo = strNewMemo;
return TRUE;
}
CString CControlPoint::GetPointValue()
{
return m_strValue;
}
BOOL CControlPoint::SetPointValue(CString strNewValue)
{
int i=0;
CString strSelectedSegment,strSelectedUnit;
CControlSegment *p_Segment;
CControlUnit *p_Unit;
if(GetControlUnit()==NULL)
return FALSE;
if(m_strValue == strNewValue)
return FALSE;
m_strValue = strNewValue;
CDaoRecordset m_Recordset(&GetControlUnit()->GetControlSegment()
->GetControlModule()->m_Database);
CString strSQL;
strSQL="Select * From "+GetControlUnit()->GetPointTableName();
strSQL=strSQL+" Where PointName = '"+GetPointName()+"'";
m_Recordset.Open(dbOpenDynaset,strSQL);
if(m_Recordset.IsBOF() && m_Recordset.IsEOF())
{
return FALSE;
}
m_Recordset.Edit();
CString strTemp;
strTemp=this->GetPointValue();
m_Recordset.SetFieldValue("CurValue",(char*)(LPCTSTR)strTemp);
m_Recordset.Update();
if (GetControlUnit()->GetControlSegment()==NULL)
{
return FALSE;
}
CString strID;
strID.Format("%d",this->GetPointLongID());
CString strTime;
CTime tm;
tm=CTime::GetCurrentTime();
strTime=tm.Format("%Y年%m月%d日 %X");
strSQL="Insert Into ";
strSQL=strSQL+GetControlUnit()->GetControlSegment()
->GetHisTableName();
strSQL=strSQL+" Values("+strID+",";
strSQL=strSQL+"'"+strTime+"',";
strSQL=strSQL+"'"+this->GetPointValue()+"')";
GetControlUnit()->GetControlSegment()->GetControlModule()
->m_Database.Execute(strSQL);
CDataManagerDoc* m_pDoc=(CDataManagerDoc*)((CMainFrame*)
AfxGetApp()->m_pMainWnd)->GetActiveDocument();
POSITION pos=m_pDoc->GetFirstViewPosition();
CLeftView* p_TreeView;
CDataManagerView* p_ListView;
while (pos != NULL)
{
CView* pView = m_pDoc->GetNextView(pos);
if(pView->IsKindOf(RUNTIME_CLASS(CLeftView)))
{
p_TreeView=(CLeftView*)pView;
}
else if(pView->IsKindOf(RUNTIME_CLASS(CDataManagerView)))
{
p_ListView=(CDataManagerView*)pView;
}
}
CListCtrl& m_list=p_ListView->GetListCtrl();
CTreeCtrl& m_tree=p_TreeView->GetTreeCtrl();
HTREEITEM hItem=m_tree.GetSelectedItem();
int nLevel=m_tree.GetItemData(hItem);
switch(nLevel)
{
case 0:
break;
case 1:
strSelectedSegment=m_tree.GetItemText(m_tree.GetParentItem(hItem));
p_Segment=p_ControlModule->GetSegment(strSelectedSegment);
if (p_Segment!=this->m_pUnit->m_pSegment)
break;
strSelectedUnit=m_tree.GetItemText(hItem);
p_Unit=p_Segment->GetUnit(strSelectedUnit);
if(p_Unit!=this->m_pUnit)
break;
for (i=0;i<m_list.GetItemCount();i++)
{
if (m_list.GetItemText(i,0)==this->GetPointName())
{
m_list.SetItemText(i,1,strNewValue);
break;
}
}
}
return TRUE;
}
CString CControlModule::GetDefaultDBName()
{
CString sPath;
CString strDBFile;
GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer();
int nPos;
nPos=sPath.ReverseFind ('\\');
sPath=sPath.Left(nPos);
strDBFile = sPath + "\\Data.mdb";
return _T(strDBFile);
}
bool CControlModule::CheckTable(CString strTableName)
{
bool result=false;
CDaoTableDefInfo Info;
for(int i=0;i<m_Database.GetTableDefCount();i++)
{
m_Database.GetTableDefInfo(i,Info,AFX_DAO_ALL_INFO);
if (strTableName==Info.m_strName)
{
result=true;
break;
}
}
return result;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -