📄 dlgdoc.cpp
字号:
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 + -