⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlgdoc.cpp

📁 用户管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
void CDlgDoc::Reset()
{
//导入数据
  CDlgDataCell Cell;
  for (int i=0; i < m_data.size(); i++)
  {
    Cell = m_data.at(i);
	if (Cell.dwStyle & CDD_RETRIEVE)
	{
		SetWindowTextEx(&Cell, Cell.strDefText);
	}
  }
   m_bModify = false;

}
///////////////////////////////////////////////
//把数据备份到m_Sur
void CDlgDoc::Backup(void)
////////////////////////////////////////////////
{
  CString strText;
  CDlgDataCell Cell;
  m_Sur.clear();
  for (int i= m_data.size()-1; i >= 0; i--)
  {
    Cell = m_data.at(i);
	if (Cell.dwStyle & CDD_CHECK)
	{
		 strText = GetWindowTextEx(&Cell);
	     m_Sur.push_back(strText);
	}
  }
}
///////////////////////////////////////////////
//从m_Sur中恢复数据
void CDlgDoc::Restore(void)
////////////////////////////////////////////////
{
  CString strText;
  int nCount = 0;
  CDlgDataCell Cell;
  for (int i= m_data.size()-1; i >= 0; i--)
  {
    Cell = m_data.at(i);
	if (Cell.dwStyle & CDD_CHECK)
	{
		if (nCount > m_Sur.size() - 1) return;
		strText = m_Sur.at(nCount++);
		SetWindowTextEx(&Cell, strText);
	}
  }
}
///////////////////////////////////////////////
//比较m_Sur中数据是否修改
BOOL CDlgDoc::IsModify(void)
////////////////////////////////////////////////
{
  CString strText, strScr;
  int nCount = 0;
  CDlgDataCell Cell;
  for (int i= m_data.size()-1; i >= 0; i--)
  {
    Cell = m_data.at(i);
	if (Cell.dwStyle & CDD_CHECK)
	{
		if (nCount > m_Sur.size()-1) return TRUE;
		strScr = m_Sur.at(nCount++);
		strText = GetWindowTextEx(&Cell);
		if (strScr != strText) 
		{    m_bModify = true;
			return TRUE;
		}
		Cell.dwState |= CDD_MOIDFYED;
	}
	else
		Cell.dwState &= ~CDD_MOIDFYED;
//修改
	//m_data.
  }
  return FALSE;
}
///////////////////////////////////////////////
//输入:pClassName 控件类名
//      pName      控件名称
//返回:           控件指针
void * CDlgDoc::GetClass(LPCSTR pName, LPCSTR pClassName)
//////////////////////////////////////////////
{
  CDlgDataCell Cell;
  for (int i=0; i < m_data.size(); i++)
  {
    Cell = m_data.at(i);
	if (pClassName == NULL ||
		Cell.strClass == pClassName)
	{
	  if(Cell.strName == pName)
	  {
		return Cell.pControl;
	  }//end if
	}//end if
  }
  return NULL;

}
///////////////////////////////////////////////
//输入:pClassName 控件类名
//      nID        控件ID
//返回:           控件指针
void * CDlgDoc::GetClass( UINT nID, LPCSTR pClassName)
{
  CDlgDataCell Cell;
  for (int i=0; i < m_data.size(); i++)
  {    Cell = m_data.at(i);
	if (pClassName == NULL ||
	    Cell.strClass == pClassName)
	{
	  if(Cell.nOldID == nID)
	  {
		return Cell.pControl;
	  }//end if
	}//end if
  }
  return NULL;

}
///////////////////////////////////////////////
//保存数据
//bTrans   是否启动事务
//bMsg     是否显示出错误信息
BOOL CDlgDoc::Save(BOOL bTrans, BOOL bMsg)
///////////////////////////////////////////////
{
  CDlgDataCell Cell;
  CString strText;
  BOOL bRet;
  if(m_bModify==false) return true;
  if(bTrans) m_pConnection->BeginTrans();
  for (int i=0; i < m_data.size(); i++)
  {   
	Cell = m_data.at(i);
	if (Cell.dwStyle & CDD_UPDATE)
	{
		strText = GetWindowTextEx(&Cell);
//日期为空值
		if(Cell.nClass == CDN_DATEEDIT && strText == _T("    -  -  "))
			strText.Empty();
		else if(Cell.nClass == CDN_TIMEEDIT && strText == _T("  :  "))
			strText.Empty();
		else if(Cell.nClass == CDN_DATETIMEEDIT && strText == _T("    -  -     :  "))
			strText.Empty();
		if (!m_RecordSet.PutCollect(Cell.strName, strText))
			goto err01;
	}
  }
  bRet = m_RecordSet.Update();
  if (!bRet) goto err01;
  m_bModify = false;
  if(bTrans) m_pConnection->CommitTrans();
  return TRUE;

err01:
  Cancel();
  if(bTrans) m_pConnection->RollbackTrans();
  if (bMsg)
   ::MessageBox(NULL,"注意:保存资料失败!","系统提示", MB_OK|MB_ICONEXCLAMATION);
  return FALSE;
}


///////////////////////////////////////////////////
//返回指定数据项的值
BOOL CDlgDoc::SetWindowTextEx(CDlgDataCell *pCell, CString &strText)
{
  int i;
  switch(pCell->nClass)
  {
     case CDN_CHECKBOX:
     case CDN_CHECKBOX3:
	       i = _FindCell(pCell->strValues, strText);
		   if (i < 0) i = 0;
	       ::SendMessage(pCell->hWnd, BM_SETCHECK, i,0);
	       return true;
     case  CDN_STATICIMAGE:
           //读入图象
	       ((CStaticImage*)pCell->pControl)->Load(strText);
	       return true;
     case  CDN_DATEEDIT:
	       //是日期类型,只取出日期部份
	       if(strText.IsEmpty()) 
		   {
		     ((CDateEdit*)pCell->pControl)->SetDefault();
		      return true;
		   }
           strText = strText.Left(10);
		   break;
	 case  CDN_TIMEEDIT:
		   //是时间类型,只取出时间部份
	       if(strText.IsEmpty()) 
	       {
		      ((CDateEdit*)pCell->pControl)->SetDefault();
		      return true;
		   }
	       else if(strText.GetLength() >= 15)
		   {
           strText = strText.Mid(11, 5);
		   }
		   break;
	 case  CDN_DATETIMEEDIT:
		    //是时间类型,只取出时间部份
	        if(strText.IsEmpty()) 
			{
		      ((CDateEdit*)pCell->pControl)->SetDefault();
		       return true;
			}
	        break;
     case  CDN_COMBOBOX:
	       ((CComboBox*)pCell->pControl)->SetCurSel(_FindCell(pCell->strValues, strText));
           return true;
  }//end switch
//输出
 ::SendMessage(pCell->hWnd,WM_SETTEXT, 0, (LPARAM)(LPCSTR)strText);
  return true;
}
///////////////////////////////////////////////////
//返回指定数据项的值
CString CDlgDoc::GetWindowTextEx(CDlgDataCell *pCell)
{
  CString strText , str1;
  int i;
  char buf[1025];
  switch (pCell->nClass)
  {
  case CDN_CHECKBOX:
  case CDN_CHECKBOX3:
	//CheckBox类
	  i = ::SendMessage(pCell->hWnd, BM_GETCHECK, 0,0);
		 str1 = pCell->strValues;
     _GetCell(str1, strText);
	 if(i == 1) 
	   _GetCell(str1, strText);
	 else if(i == 2) 
	   _GetCell(str1, strText);
	 break;
  case CDN_STATICIMAGE:
	 //是日期类型,只取出日期部份
		strText = ((CStaticImage*)pCell->pControl)->GetFileName();
	  break;
  default:
      if(::SendMessage(pCell->hWnd,WM_GETTEXT, 1024, (LPARAM)buf)<0)
		  strText = _T("");
	  else
          strText = buf;
	  break;
  }//end switch
  return strText;
}

int CDlgDoc::_FindCell(CString strScr, CString strCell)
{
 CString str;
 for(int j = 0;;j++)
 {//1发现0最后一项-1没发现
	  int i = _GetCell(strScr, str);
	  if (i >= 0)    
		 if (strCell == str) return j;
	  if (i <= 0)  return -1;
 }
	return -1;
}
int CDlgDoc::_GetCell(CString &strScr, CString &strCell)
{
  int i ;
  i = strScr.Find('|');
//取第1个
  if ( i > 0)
  {
	 //strCell = strScr.Left(strScr.GetLength()-i-1);
	 strCell = strScr.Left(i);
	 strScr = strScr.Mid(i+1);
	 return 1;
  }
  else if(strScr.IsEmpty())
  {
    strCell = _T("");
    strScr  = _T("");
    return -1;
  }
  strCell = strScr;
  strScr = _T("");
  return 0;
}

BOOL CDlgDoc::Append(CString strTableName, BOOL bMsg)
{
//指定为立则更新模式
 if(NewBefore(strTableName) == FALSE|| 
	m_RecordSet.AddNew() == FALSE)
  {
    if (bMsg)
	  ::MessageBox(NULL,"错误:新增数据失败!","系统提示", MB_OK|MB_ICONEXCLAMATION);
	return FALSE;
  }
  return TRUE;
}

int CDlgDoc::Delete(BOOL bCon, BOOL bMsg)
{
  if(bCon && (::MessageBox(NULL,"注意:你确定要删除数据吗?","系统提示", MB_OKCANCEL|MB_ICONEXCLAMATION) != IDOK))
     return 100;

  if(!m_RecordSet.Delete())
  {
    if (bMsg)
	  ::MessageBox(NULL,"错误:删除数据失败!","系统提示", MB_OK|MB_ICONEXCLAMATION);
	return -1;
  }
  return 0;
}


BOOL CDlgDoc::NewBefore(CString strTableName)
{
  CString strSQL;
  if (strTableName.GetLength() <= 0)return false;
//因为AddNew前必需Open
//所以设置Select为返回1行,减少站用的内存
  if (m_bOracle) //是ORACEL 
   strSQL.Format("Select * From %s Where rownum = 1",strTableName);
  else
   strSQL.Format("Select top 1 * From %s",strTableName);
//指定为立则更新模式
  return m_RecordSet.Open(strSQL);

}

UINT CDlgDoc::_Class4Name(CString &strName)
{
//	 if (strName == _T("Button"))
//		return CDN_CHECKBOX;
	 if (strName == _T("EDIT"))
		return CDN_EDIT;
	 if (strName  == _T("COMBOBOX"))
		 return CDN_COMBOBOX;
	 if (strName == _T("LISTBOX"))
		 return CDN_LISTBOX;
	 if (strName == _T("LONGDATECTRL"))
		 return CDN_LONGDATECTRL;
	 if (strName == _T("SHORTDATECTRL"))
		 return CDN_SHORTDATECTRL;
	 if (strName == _T("TIMECTRL"))
		 return CDN_TIMECTRL;
	 if (strName == _T("DATEEDIT"))
		 return CDN_DATEEDIT;
	 if(strName == _T("TIMEEDIT"))
		 return  CDN_TIMEEDIT;
	 if(strName== _T("DATETIMEEDIT"))
		 return CDN_DATETIMEEDIT;
	 if (strName == _T("CURRENCYEDIT"))
		 return CDN_CURRENCYEDIT;
	 if (strName == _T("NUMERICEDIT"))
		 return CDN_NUMERICEDIT;
	if (strName == _T("MASKEDEDIT"))
		return CDN_MASKEDEDIT;
	if (strName == _T("STATICIMAGE"))
        return CDN_STATICIMAGE;
	return CDN_EDIT;
}

⌨️ 快捷键说明

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