📄 setgroupdlg.cpp.svn-base
字号:
CSetGroupDlg::CSetGroupDlg(CWnd* pParent /*=NULL*/)
: CXFDialog(CSetGroupDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSetGroupDlg)
//}}AFX_DATA_INIT
}
void CSetGroupDlg::SetInitialGroup( CString strGroupName )
{
m_strInitialGroupName = strGroupName;
}
void CSetGroupDlg::AddtoGroup( CSPStringArray & astrStocks )
{
m_astrInitialGroupStocks.RemoveAll( );
m_astrInitialGroupStocks.Copy( astrStocks );
}
void CSetGroupDlg::DoDataExchange(CDataExchange* pDX)
{
CXFDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSetGroupDlg)
DDX_Control(pDX, IDCANCEL, m_btnCancel);
DDX_Control(pDX, IDOK, m_btnOK);
DDX_Control(pDX, IDC_STATIC_INFO, m_staticInfo);
DDX_Control(pDX, IDC_REMOVEALL, m_btnRemoveAll);
DDX_Control(pDX, IDC_REMOVESELECTED, m_btnRemoveSelected);
DDX_Control(pDX, IDC_ADDALL, m_btnAddAll);
DDX_Control(pDX, IDC_ADDSELECTED, m_btnAddSelected);
DDX_Control(pDX, IDC_DELETEGROUP, m_btnDeleteGroup);
DDX_Control(pDX, IDC_ADDGROUP, m_btnAddGroup);
DDX_Control(pDX, IDC_LIST_STOCKDEST, m_listStockDest);
DDX_Control(pDX, IDC_COMBO_GROUPDEST, m_comboGroupDest);
DDX_Control(pDX, IDC_LIST_STOCKSRC, m_listStockSrc);
DDX_Control(pDX, IDC_COMBO_GROUPSRC, m_comboGroupSrc);
DDX_Control(pDX, IDC_EDITCODE, m_editCode);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSetGroupDlg, CXFDialog)
//{{AFX_MSG_MAP(CSetGroupDlg)
ON_BN_CLICKED(IDC_ADDGROUP, OnAddgroup)
ON_BN_CLICKED(IDC_DELETEGROUP, OnDeletegroup)
ON_BN_CLICKED(IDC_ADDSELECTED, OnAddselected)
ON_BN_CLICKED(IDC_ADDALL, OnAddall)
ON_BN_CLICKED(IDC_REMOVESELECTED, OnRemoveselected)
ON_BN_CLICKED(IDC_REMOVEALL, OnRemoveall)
ON_EN_CHANGE(IDC_EDITCODE, OnChangeEditcode)
ON_CBN_SELCHANGE(IDC_COMBO_GROUPSRC, OnSelchangeComboGroupsrc)
ON_CBN_SELCHANGE(IDC_COMBO_GROUPDEST, OnSelchangeComboGroupdest)
ON_LBN_DBLCLK(IDC_LIST_STOCKSRC, OnDblclkListStocksrc)
ON_LBN_DBLCLK(IDC_LIST_STOCKDEST, OnDblclkListStockdest)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSetGroupDlg message handlers
BOOL CSetGroupDlg::OnInitDialog()
{
CXFDialog::OnInitDialog();
CWaitCursor waitcursor;
// TODO: Add extra initialization here
CDomainContainer & groups = AfxGetGroupContainer( );
CDomainContainer & domains = AfxGetDomainContainer( );
CStockContainer & container = AfxGetStockContainer();
m_grpTemp = groups;
// Src
m_comboGroupSrc.InitStrings( TRUE, TRUE, groups );
m_comboGroupSrc.SetCurSel( 0 );
OnSelchangeComboGroupsrc();
// Dest
m_comboGroupDest.InitStrings( FALSE, FALSE, m_grpTemp );
m_comboGroupDest.SetCurSel( 0 );
if( m_strInitialGroupName.GetLength() > 0
&& CB_ERR != m_comboGroupDest.SelectString( 0, m_strInitialGroupName ) )
{
for( int k=0; k<m_astrInitialGroupStocks.GetSize(); k++ )
m_grpTemp.AddDomainStock( m_strInitialGroupName, m_astrInitialGroupStocks.ElementAt(k) );
}
OnSelchangeComboGroupdest();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSetGroupDlg::OnAddgroup()
{
// TODO: Add your control notification handler code here
CStringDialog dlg( this, IDS_SETGROUP_INPUTGNAME, IDS_SETGROUP_INPUTGNAME, NULL );
if( IDOK != dlg.DoModal() )
return;
CString strNewName = dlg.GetStringWant( );
CString strInfo;
strInfo.LoadString( IDS_SETGROUP_ADDFAILED );
if( strNewName.GetLength() > 0 )
{
if( -1 != m_grpTemp.AddDomain( strNewName ) )
{
int nNew = m_comboGroupDest.AddGroup( strNewName );
if( CB_ERR != nNew )
{
m_comboGroupDest.SetCurSel( nNew );
OnSelchangeComboGroupdest( );
strInfo.LoadString( IDS_SETGROUP_ADDSUCCESS );
}
}
else
{
strInfo.LoadString( IDS_SETGROUP_GROUPALREADYEXIST );
}
}
m_staticInfo.SetWindowText( strInfo );
}
void CSetGroupDlg::OnDeletegroup()
{
// TODO: Add your control notification handler code here
CString strInfo;
strInfo.LoadString( IDS_SETGROUP_DELETEFAILED );
int nSel = m_comboGroupDest.GetCurSel();
if( CB_ERR != nSel )
{
if( IDYES == AfxMessageBox( IDS_SETGROUP_DELETECONFIRM, MB_YESNO | MB_ICONQUESTION ) )
{
CString strName;
m_comboGroupDest.GetWindowText( strName );
if( m_grpTemp.RemoveDomain( strName )
&& CB_ERR != m_comboGroupDest.DeleteString( nSel ) )
{
nSel = ( nSel >= m_comboGroupDest.GetCount() ? 0 : nSel );
m_comboGroupDest.SetCurSel( nSel );
OnSelchangeComboGroupdest();
strInfo.LoadString( IDS_SETGROUP_DELETESUCCESS );
}
}
else
strInfo.LoadString( IDS_SETGROUP_USERCANCEL );
}
else
strInfo.LoadString( IDS_SETGROUP_NOSELECTEDGROUP );
m_staticInfo.SetWindowText( strInfo );
}
void CSetGroupDlg::OnAddselected()
{
// TODO: Add your control notification handler code here
CString strDomainName;
m_comboGroupDest.GetWindowText( strDomainName );
if( strDomainName.GetLength() <= 0 )
{
AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
return;
}
m_listStockDest.SelectItem( -1, FALSE );
for( int i=0; i<m_listStockSrc.GetCount(); i++ )
{
int bSel = m_listStockSrc.GetSelected(i);
if( LB_ERR != bSel && bSel )
{
CString rString, strStockCode;
m_listStockSrc.GetText(i,rString);
int nIndex = rString.Find( '(' );
if( -1 != nIndex )
strStockCode = rString.Left( nIndex );
int nSelDest = -1;
if( m_grpTemp.AddDomainStock( strDomainName, strStockCode ) )
nSelDest = m_listStockDest.AddString( rString );
else
nSelDest = m_listStockDest.FindString( -1, rString );
m_listStockDest.SelectAndShowItem( nSelDest );
}
}
m_editCode.SetWindowText( NULL );
}
void CSetGroupDlg::OnAddall()
{
// TODO: Add your control notification handler code here
CString strDomainName;
m_comboGroupDest.GetWindowText( strDomainName );
if( strDomainName.GetLength() <= 0 )
{
AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
return;
}
m_listStockDest.SelectItem( -1, FALSE );
for( int i=0; i<m_listStockSrc.GetCount(); i++ )
{
CString rString, strStockCode;
m_listStockSrc.GetText(i,rString);
int nIndex = rString.Find( '(' );
if( -1 != nIndex )
strStockCode = rString.Left( nIndex );
int nSelDest = -1;
if( m_grpTemp.AddDomainStock( strDomainName, strStockCode ) )
nSelDest = m_listStockDest.AddString( rString );
else
nSelDest = m_listStockDest.FindString( -1, rString );
m_listStockDest.SelectItem( nSelDest, TRUE );
}
m_editCode.SetWindowText( NULL );
}
void CSetGroupDlg::OnRemoveselected()
{
// TODO: Add your control notification handler code here
CString strDomainName;
m_comboGroupDest.GetWindowText( strDomainName );
if( strDomainName.GetLength() <= 0 )
{
AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
m_comboGroupDest.SetCurSel( 0 );
OnSelchangeComboGroupdest();
return;
}
for( int i=m_listStockDest.GetCount()-1; i>=0; i-- )
{
int bSel = m_listStockDest.GetSelected(i);
if( LB_ERR != bSel && bSel )
{
CString rString, strStockCode;
m_listStockDest.GetText(i,rString);
int nIndex = rString.Find( '(' );
if( -1 != nIndex )
strStockCode = rString.Left( nIndex );
if( m_grpTemp.RemoveDomainStock( strDomainName, strStockCode ) )
m_listStockDest.DeleteString( i );
}
}
}
void CSetGroupDlg::OnRemoveall()
{
// TODO: Add your control notification handler code here
CString strDomainName;
m_comboGroupDest.GetWindowText( strDomainName );
if( strDomainName.GetLength() <= 0 )
{
AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
m_comboGroupDest.SetCurSel( 0 );
OnSelchangeComboGroupdest();
return;
}
m_grpTemp.RemoveDomainStockAll( strDomainName );
m_listStockDest.ResetContent( );
}
void CSetGroupDlg::OnDblclkListStocksrc()
{
// TODO: Add your control notification handler code here
CString strDomainName;
m_comboGroupDest.GetWindowText( strDomainName );
if( strDomainName.GetLength() <= 0 )
{
AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
return;
}
m_listStockDest.SelectItem( -1, FALSE );
int nCaretIndex = m_listStockSrc.GetCaretIndex();
if( LB_ERR != nCaretIndex )
{
CString rString, strStockCode;
m_listStockSrc.GetText(nCaretIndex,rString);
m_listStockSrc.SelectItem( nCaretIndex, FALSE );
int nIndex = rString.Find( '(' );
if( -1 != nIndex )
strStockCode = rString.Left( nIndex );
int nSelDest = -1;
if( m_grpTemp.AddDomainStock( strDomainName, strStockCode ) )
nSelDest = m_listStockDest.AddString( rString );
else
nSelDest = m_listStockDest.FindString( -1, rString );
m_listStockDest.SelectAndShowItem( nSelDest );
}
}
void CSetGroupDlg::OnDblclkListStockdest()
{
// TODO: Add your control notification handler code here
CString strDomainName;
m_comboGroupDest.GetWindowText( strDomainName );
if( strDomainName.GetLength() <= 0 )
{
AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
m_comboGroupDest.SetCurSel( 0 );
OnSelchangeComboGroupdest();
return;
}
int nCaretIndex = m_listStockDest.GetCaretIndex();
if( LB_ERR != nCaretIndex )
{
CString rString, strStockCode;
m_listStockDest.GetText(nCaretIndex,rString);
int nIndex = rString.Find( '(' );
if( -1 != nIndex )
strStockCode = rString.Left( nIndex );
if( m_grpTemp.RemoveDomainStock( strDomainName, strStockCode ) )
m_listStockDest.DeleteString( nCaretIndex );
}
}
void CSetGroupDlg::OnChangeEditcode()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CXFDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
CString strText;
m_editCode.GetWindowText( strText );
strText.TrimLeft();
strText.TrimLeft();
if( strText.GetLength() > 0 )
{
int nSel = m_comboGroupSrc.GetCurSel();
if( CB_ERR == nSel ||
CStockContainer::typeAll != (int)(m_comboGroupSrc.GetItemData( nSel )) )
{
m_comboGroupSrc.SelectGroupAll( );
OnSelchangeComboGroupsrc();
}
}
if( !m_listStockSrc.SelectCode( 0, strText ) )
m_listStockSrc.SelectShortname( 0, strText );
}
void CSetGroupDlg::OnSelchangeComboGroupsrc()
{
// TODO: Add your control notification handler code here
int nType = m_comboGroupSrc.GetCurSelType();
CString strName = m_comboGroupSrc.GetCurSelName();
m_listStockSrc.SetCurrentStocks( nType, strName, AfxGetGroupContainer() );
}
void CSetGroupDlg::OnSelchangeComboGroupdest()
{
// TODO: Add your control notification handler code here
int nType = m_comboGroupDest.GetCurSelType();
CString strName = m_comboGroupDest.GetCurSelName();
m_listStockDest.SetCurrentStocks( nType, strName, m_grpTemp );
}
void CSetGroupDlg::OnOK()
{
// TODO: Add extra validation here
CDomainContainer & groups = AfxGetGroupContainer( );
groups = m_grpTemp;
groups.Store( AfxGetProfile().GetGroupFile() );
::PostMessage( AfxGetGroupView()->GetSafeHwnd(), WM_USER_UPDATEGROUPS, 0, 0 );
::PostMessage( AfxGetMainFrame()->GetSafeHwnd(), WM_USER_UPDATEBARMENU, 0, 0 );
CXFDialog::OnOK();
}
void CSetGroupDlg::OnCancel()
{
// TODO: Add extra cleanup here
CXFDialog::OnCancel();
}
BOOL CSetGroupDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if( WM_KEYDOWN == pMsg->message )
{
if( VK_UP == pMsg->wParam )
{
if( ::GetFocus() == m_editCode.GetSafeHwnd() )
{
m_listStockSrc.SelectUp( );
return TRUE;
}
}
else if( VK_DOWN == pMsg->wParam )
{
if( ::GetFocus() == m_editCode.GetSafeHwnd() )
{
m_listStockSrc.SelectDown( );
return TRUE;
}
}
else if( VK_PRIOR == pMsg->wParam )
{
if( ::GetFocus() == m_editCode.GetSafeHwnd() )
{
m_listStockSrc.SelectPrior( );
return TRUE;
}
}
else if( VK_NEXT == pMsg->wParam )
{
if( ::GetFocus() == m_editCode.GetSafeHwnd() )
{
m_listStockSrc.SelectNext( );
return TRUE;
}
}
else if( VK_RETURN == pMsg->wParam )
{
OnAddselected( );
return TRUE;
}
}
return CXFDialog::PreTranslateMessage(pMsg);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -