#include "StdAfx.h" #include "MBEditItemWnd.h" CMBEditItemWnd::CMBEditItemWnd(void):SHostDialog(_T("LAYOUT:DLG_EDITITEM")) { m_bLayoutInited = FALSE; m_strTitle = _T("ÉèÖÃÏîÄ¿"); m_strName1 = _T(""); m_strName2 = _T(""); m_strValue1 = _T(""); m_strValue2 = _T(""); m_arEidtItem.RemoveAll(); m_bValue2MultiRow = false; m_bValue1NumberOnly = false; m_bValue2NumberOnly = false; m_uCampareValue = EDITITEM_CAMPARE_ALLVALUE; m_bValue1CanEmpty = false; m_bValue2CanEmpty = false; } CMBEditItemWnd::~CMBEditItemWnd(void) { } int CMBEditItemWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) { SetMsgHandled(FALSE); return 0; } BOOL CMBEditItemWnd::OnInitDialog(HWND hWnd, LPARAM lParam) { SWindow *pWndTitle = FindChildByName2(_T("txt_title")); if( pWndTitle ) pWndTitle->SetWindowText(m_strTitle); SWindow *pWndName = FindChildByName2(_T("text_name")); if( pWndName ) pWndName->SetWindowText(m_strName1); pWndName = FindChildByName2(_T("text_name2")); if( pWndName ) pWndName->SetWindowText(m_strName2); SEdit *pEditName = FindChildByName2(_T("ed_name")); if( pEditName ) { if(m_bValue1NumberOnly) pEditName->SetAttribute(_T("number"),_T("1")); pEditName->SetWindowText(m_strValue1); } SRichEdit *pEditName2= FindChildByName2(_T("ed_name2")); if( pEditName2 ) { if(m_bValue2NumberOnly) pEditName2->SetAttribute(_T("number"),_T("1")); if( !m_bValue2MultiRow) { pEditName2->SetRichTextFlag(0); pEditName2->SetAttribute(_T("pos"),_T("20,[10,-20,@26")); } pEditName2->SetWindowText(m_strValue2); pEditName2->GetEventSet()->subscribeEvent(EVT_KEYDOWN,Subscriber(&CMBEditItemWnd::OnContentEventDown,this)); } m_bLayoutInited = TRUE; return 0; } // È·¶¨ void CMBEditItemWnd::OnOK() { CString strInfo; SEdit *pEditName = FindChildByName2(_T("ed_name")); if( pEditName ) { m_strValue1 = pEditName->GetWindowText(); } SRichEdit *pEditName2= FindChildByName2(_T("ed_name2")); if( pEditName2 ) { m_strValue2 = pEditName2->GetWindowText(); } if( !m_bValue1CanEmpty) { if(m_strValue1.IsEmpty()) { strInfo.Format(_T("%s ²»ÄÜΪ¿Õ£¡"), m_strName1); MBMessageBox(m_hWnd,strInfo, _T("Ìáʾ"),MB_OK); return; } } if( !m_bValue2CanEmpty) { if(m_strValue2.IsEmpty()) { strInfo.Format(_T("%s ²»ÄÜΪ¿Õ£¡"), m_strName2); MBMessageBox(m_hWnd,strInfo, _T("Ìáʾ"),MB_OK); return; } } if(FindEditItem(m_strValue1,m_strValue2 ) < 0) { SHostDialog::OnOK(); return; } strInfo.Format(_T("%s(%s) ÒÑ´æÔÚ£¡"), m_strValue1, m_strValue2); MBMessageBox(m_hWnd,strInfo, _T("Ìáʾ"),MB_OK); } void CMBEditItemWnd::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { SetMsgHandled(FALSE); // enter¼ü if(((::GetAsyncKeyState( VK_RETURN ) & 0x8000))) { OnOK(); } } void CMBEditItemWnd::SetExistValueData( CEidtItemArray &arEidtItem) { m_arEidtItem.RemoveAll(); m_arEidtItem.Copy(arEidtItem); } void CMBEditItemWnd::SetWndData(CString strTitle, CString strName1, CString strName2) { m_strTitle = strTitle; m_strName1 = strName1; m_strName2 = strName2; } void CMBEditItemWnd::SetValueData( CString strValue1, CString strValue2) { m_strValue1 = strValue1; m_strValue2 = strValue2; } void CMBEditItemWnd::GetValueData( CString &strValue1, CString &strValue2) { strValue1 = m_strValue1; strValue2 = m_strValue2; } void CMBEditItemWnd::SetValueMultiRow( bool bValue2MultiRow) { m_bValue2MultiRow = bValue2MultiRow; } void CMBEditItemWnd::SetValueNumberOnly( bool bValue1NumberOnly, bool bValue2NumberOnly) { m_bValue1NumberOnly = bValue1NumberOnly; m_bValue2NumberOnly = bValue2NumberOnly; } void CMBEditItemWnd::SetValueCanEmpty( bool bValue1CanEmpty, bool bValue2CanEmpty) { m_bValue1CanEmpty = bValue1CanEmpty; m_bValue2CanEmpty = bValue2CanEmpty; } int CMBEditItemWnd::FindEditItem(CString strValue1, CString strValue2) { int nItem,nCount; EDIT_ITEM item; int nRetItem; nRetItem = -1; if(m_uCampareValue & EDITITEM_CAMPARE_FIRSTVALUE) { nCount = m_arEidtItem.GetSize(); for( nItem = 0; nItem < nCount; nItem++) { item = m_arEidtItem.GetAt(nItem); if(item.strValue1 == strValue1) { nRetItem = nItem; break; } } } else if(m_uCampareValue & EDITITEM_CAMPARE_SECONDVALUE) { nCount = m_arEidtItem.GetSize(); for( nItem = 0; nItem < nCount; nItem++) { item = m_arEidtItem.GetAt(nItem); if(strValue2 == item.strValue2 ) { nRetItem = nItem; break; } } } else { nCount = m_arEidtItem.GetSize(); for( nItem = 0; nItem < nCount; nItem++) { item = m_arEidtItem.GetAt(nItem); if(item.strValue1 == strValue1 && strValue2 == item.strValue2 ) { nRetItem = nItem; break; } } } return nRetItem; } bool CMBEditItemWnd::OnContentEventDown(EventArgs *pEvtBase) { EventKeyDown *pKeyDown = (EventKeyDown *)pEvtBase; if( pKeyDown->nChar == VK_RETURN ) { OnOK(); } return true; }