SetGroupDlg.cpp
上传用户:zhanglf88
上传日期:2013-11-19
资源大小:6036k
文件大小:21k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. // SetGroupDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "SetGroupDlg.h"
  5. #include "..Dialogs.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CDomainComboBox
  13. CDomainComboBox::CDomainComboBox()
  14. {
  15. }
  16. CDomainComboBox::~CDomainComboBox()
  17. {
  18. }
  19. int CDomainComboBox::InitStrings( BOOL bHasClass, BOOL bHasDomain, CDomainContainer & groups )
  20. {
  21. ResetContent( );
  22. CDomainContainer & domains = AfxGetDomainContainer( );
  23. CStockContainer & container = AfxGetStockContainer();
  24. int nItemCount = groups.GetSize();
  25. if( bHasClass ) nItemCount += 8;
  26. if( bHasDomain ) nItemCount += domains.GetSize();
  27. // Init Storage
  28. InitStorage( nItemCount, 32 );
  29. CString strGroup;
  30. if( bHasClass )
  31. {
  32. strGroup.LoadString( IDS_DOMAIN_ALL );
  33. int nItem = AddString( strGroup );
  34. SetItemData( nItem, CStockContainer::typeAll );
  35. strGroup.LoadString( IDS_DOMAIN_INDEX );
  36. nItem = AddString( strGroup );
  37. SetItemData( nItem, CStockContainer::typeIndex );
  38. strGroup.LoadString( IDS_DOMAIN_CLASSSHAA );
  39. nItem = AddString( strGroup );
  40. SetItemData( nItem, CStockContainer::typeClassShaa );
  41. strGroup.LoadString( IDS_DOMAIN_CLASSSHAB );
  42. nItem = AddString( strGroup );
  43. SetItemData( nItem, CStockContainer::typeClassShab );
  44. strGroup.LoadString( IDS_DOMAIN_CLASSSZNA );
  45. nItem = AddString( strGroup );
  46. SetItemData( nItem, CStockContainer::typeClassSzna );
  47. strGroup.LoadString( IDS_DOMAIN_CLASSSZNB );
  48. nItem = AddString( strGroup );
  49. SetItemData( nItem, CStockContainer::typeClassSznb );
  50. strGroup.LoadString( IDS_DOMAIN_CLASSSHABOND );
  51. nItem = AddString( strGroup );
  52. SetItemData( nItem, CStockContainer::typeClassShabond );
  53. strGroup.LoadString( IDS_DOMAIN_CLASSSZNBOND );
  54. nItem = AddString( strGroup );
  55. SetItemData( nItem, CStockContainer::typeClassSznbond );
  56. }
  57. // Domains
  58. if( bHasDomain )
  59. {
  60. for( int i=0; i<domains.GetSize(); i++ )
  61. {
  62. CDomain & domain = domains.ElementAt(i);
  63. int nItem = AddString( domain.m_strName );
  64. SetItemData( nItem, CStockContainer::typeDomain );
  65. }
  66. }
  67. // Groups
  68. for( int i=0; i<groups.GetSize(); i++ )
  69. {
  70. CDomain & domain = groups.ElementAt(i);
  71. int nItem = AddString( domain.m_strName );
  72. SetItemData( nItem, CStockContainer::typeGroup );
  73. }
  74. return nItemCount;
  75. }
  76. int CDomainComboBox::AddGroup( CString strGroup )
  77. {
  78. int nItem = AddString( strGroup );
  79. SetItemData( nItem, CStockContainer::typeGroup );
  80. return nItem;
  81. }
  82. BOOL CDomainComboBox::DeleteCurSel( )
  83. {
  84. int nSel = GetCurSel();
  85. if( CB_ERR != nSel )
  86. {
  87. DeleteString( nSel );
  88. return TRUE;
  89. }
  90. return FALSE;
  91. }
  92. int CDomainComboBox::GetCurSelType( )
  93. {
  94. int nSel = GetCurSel();
  95. if( CB_ERR != nSel )
  96. return GetItemData( nSel );
  97. return -1;
  98. }
  99. CString CDomainComboBox::GetCurSelName( )
  100. {
  101. int nSel = GetCurSel();
  102. if( CB_ERR != nSel )
  103. {
  104. CString rString;
  105. GetLBText( nSel, rString );
  106. return rString;
  107. }
  108. return "";
  109. }
  110. BOOL CDomainComboBox::SelectGroupAll( )
  111. {
  112. for( int i=0; i<GetCount(); i++ )
  113. {
  114. int nType = GetItemData( i );
  115. if( CStockContainer::typeAll == nType )
  116. {
  117. SetCurSel( i );
  118. return TRUE;
  119. }
  120. }
  121. return FALSE;
  122. }
  123. BEGIN_MESSAGE_MAP(CDomainComboBox, CComboBox)
  124. //{{AFX_MSG_MAP(CDomainComboBox)
  125. ON_WM_CREATE()
  126. //}}AFX_MSG_MAP
  127. END_MESSAGE_MAP()
  128. /////////////////////////////////////////////////////////////////////////////
  129. // CDomainComboBox message handlers
  130. int CDomainComboBox::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  131. {
  132. if (CComboBox::OnCreate(lpCreateStruct) == -1)
  133. return -1;
  134. return 0;
  135. }
  136. /////////////////////////////////////////////////////////////////////////////
  137. // CDomainListBox
  138. CDomainListBox::CDomainListBox()
  139. {
  140. }
  141. CDomainListBox::~CDomainListBox()
  142. {
  143. }
  144. BOOL CDomainListBox::SetCurrentStocks( int nType, LPCTSTR lpszDomain, CDomainContainer & groups )
  145. {
  146. // Delete All
  147. ResetContent( );
  148. CStockContainer & container = AfxGetStockContainer();
  149. CStockContainer cntn;
  150. BOOL bOK = FALSE;
  151. if( nType == CStockContainer::typeGroup )
  152. {
  153. CSPStringArray astrSpecify;
  154. if( groups.GetDomainStocks( lpszDomain, astrSpecify ) )
  155. bOK = cntn.RetrieveSpecify( astrSpecify ); // Not Set dwDate
  156. }
  157. else
  158. {
  159. bOK = cntn.RetrieveFromStatic( nType, lpszDomain, NULL, -1 );
  160. }
  161. if( bOK )
  162. {
  163. InitStorage( cntn.GetSize(), 32 );
  164. for( int i=0; i<cntn.GetSize(); i++ )
  165. {
  166. CStockInfo & info = cntn.ElementAt(i);
  167. CString strItem = CString(info.GetStockCode()) + "(" + info.GetStockShortName() + ")    ";
  168. while( strItem.GetLength() < 16 ) strItem += " ";
  169. strItem += info.GetStockName() ;
  170. int nItem = AddString( strItem );
  171. }
  172. }
  173. return bOK;
  174. }
  175. BOOL CDomainListBox::SelectCode( int nStart, CString strText )
  176. {
  177. SelectItem( -1, FALSE );
  178. int nLen = strText.GetLength();
  179. if( nLen <= 0 )
  180. return FALSE;
  181. CString rString;
  182. int nPos = nStart;
  183. for( int i=0; i<GetCount(); i++ )
  184. {
  185. if( nPos >= GetCount() || nPos < 0 )
  186. nPos = 0;
  187. GetText( nPos, rString );
  188. if( 0 == strncmp( rString, strText, min(nLen,rString.GetLength()) ) )
  189. {
  190. SelectItem( i, TRUE );
  191. SetTopIndex( i > 6 ? i-6 : 0 );
  192. return TRUE;
  193. }
  194. nPos ++;
  195. }
  196. return FALSE;
  197. }
  198. BOOL CDomainListBox::SelectShortname( int nStart, CString strText )
  199. {
  200. SelectItem( -1, FALSE );
  201. strText.MakeUpper();
  202. int nLen = strText.GetLength();
  203. if( nLen <= 0 )
  204. return FALSE;
  205. CString rString;
  206. int nPos = nStart;
  207. for( int i=0; i<GetCount(); i++ )
  208. {
  209. if( nPos == GetCount() || nPos < 0 )
  210. nPos = 0;
  211. GetText( nPos, rString );
  212. rString.MakeUpper();
  213. int nIndex = rString.Find( '(' );
  214. if( -1 != nIndex )
  215. {
  216. rString = rString.Mid( nIndex+1 );
  217. if( 0 == strncmp( rString, strText, min(nLen,rString.GetLength()) ) )
  218. {
  219. SelectItem( i, TRUE );
  220. SetTopIndex( i > 6 ? i-6 : 0 );
  221. return TRUE;
  222. }
  223. }
  224. nPos ++;
  225. }
  226. return FALSE;
  227. }
  228. BOOL CDomainListBox::SelectUp( )
  229. {
  230. for( int i=0; i<GetCount(); i++ )
  231. {
  232. int nStatus = GetSelected( i );
  233. if( LB_ERR != nStatus && nStatus )
  234. {
  235. SelectItem( -1, FALSE );
  236. SelectItem( i-1 < 0 ? 0 : i-1 );
  237. return TRUE;
  238. }
  239. }
  240. if( GetCount() > 0 )
  241. SelectItem( GetCount()-1, TRUE );
  242. return TRUE;
  243. }
  244. BOOL CDomainListBox::SelectDown( )
  245. {
  246. int nPageCount = GetCountPerPage( );
  247. for( int i=0; i<GetCount(); i++ )
  248. {
  249. int nStatus = GetSelected( i );
  250. if( LB_ERR != nStatus && nStatus )
  251. {
  252. SelectItem( -1, FALSE );
  253. int nNewSel = (i+1 >= GetCount() ? GetCount()-1 : i+1);
  254. SelectAndShowItem( nNewSel );
  255. return TRUE;
  256. }
  257. }
  258. if( GetCount() > 0 )
  259. SelectItem( 0, TRUE );
  260. return TRUE;
  261. }
  262. // Page Up
  263. BOOL CDomainListBox::SelectPrior( )
  264. {
  265. int nPageCount = GetCountPerPage( );
  266. for( int i=0; i<GetCount(); i++ )
  267. {
  268. int nStatus = GetSelected( i );
  269. if( LB_ERR != nStatus && nStatus )
  270. {
  271. SelectItem( -1, FALSE );
  272. SelectItem( i-nPageCount < 0 ? 0 : i-nPageCount );
  273. return TRUE;
  274. }
  275. }
  276. if( GetCount() > 0 )
  277. SelectItem( GetCount()-1, TRUE );
  278. return TRUE;
  279. }
  280. // Page Down
  281. BOOL CDomainListBox::SelectNext( )
  282. {
  283. int nPageCount = GetCountPerPage( );
  284. for( int i=0; i<GetCount(); i++ )
  285. {
  286. int nStatus = GetSelected( i );
  287. if( LB_ERR != nStatus && nStatus )
  288. {
  289. SelectItem( -1, FALSE );
  290. int nNewSel = (i+nPageCount >= GetCount() ? GetCount()-1 : i+nPageCount);
  291. SelectAndShowItem( nNewSel );
  292. return TRUE;
  293. }
  294. }
  295. if( GetCount() > 0 )
  296. SelectItem( 0, TRUE );
  297. return TRUE;
  298. }
  299. int CDomainListBox::GetCountPerPage( )
  300. {
  301. int nPageCount = 6;
  302. CRect rectItem, rectClient;
  303. GetClientRect( &rectClient );
  304. if( LB_ERR != GetItemRect( 0, &rectItem ) && rectItem.Height() > 0 )
  305. nPageCount = rectClient.Height() / rectItem.Height() - 1;
  306. return nPageCount;
  307. }
  308. BOOL CDomainListBox::SelectAndShowItem( int nSel )
  309. {
  310. int nPageCount = GetCountPerPage( );
  311. SelectItem( nSel, TRUE );
  312. int nTopIndex = GetTopIndex();
  313. if( LB_ERR != nTopIndex && nTopIndex+nPageCount<nSel )
  314. SetTopIndex( nSel-nPageCount );
  315. return TRUE;
  316. }
  317. int CDomainListBox::SelectItem( int nSel, BOOL bSelected )
  318. {
  319. if( GetStyle( ) & LBS_MULTIPLESEL )
  320. {
  321. return SetSel( nSel, bSelected );
  322. }
  323. else
  324. {
  325. if( bSelected )
  326. return SetCurSel( nSel );
  327. else
  328. {
  329. if( GetCurSel() == nSel || -1 == nSel )
  330. return SetCurSel( -1 );
  331. }
  332. return -1;
  333. }
  334. }
  335. int CDomainListBox::GetSelected( int nItem )
  336. {
  337. if( GetStyle( ) & LBS_MULTIPLESEL )
  338. {
  339. return GetSel( nItem );
  340. }
  341. else
  342. {
  343. if( -1 != nItem && GetCurSel() == nItem )
  344. return TRUE;
  345. return FALSE;
  346. }
  347. }
  348. BEGIN_MESSAGE_MAP(CDomainListBox, CListBox)
  349. //{{AFX_MSG_MAP(CDomainListBox)
  350. ON_WM_CREATE()
  351. //}}AFX_MSG_MAP
  352. END_MESSAGE_MAP()
  353. /////////////////////////////////////////////////////////////////////////////
  354. // CDomainListBox message handlers
  355. int CDomainListBox::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  356. {
  357. if (CListBox::OnCreate(lpCreateStruct) == -1)
  358. return -1;
  359. return 0;
  360. }
  361. /////////////////////////////////////////////////////////////////////////////
  362. // CSetGroupDlg dialog
  363. CSetGroupDlg::CSetGroupDlg(CWnd* pParent /*=NULL*/)
  364. : CDialog(CSetGroupDlg::IDD, pParent)
  365. {
  366. //{{AFX_DATA_INIT(CSetGroupDlg)
  367. //}}AFX_DATA_INIT
  368. }
  369. void CSetGroupDlg::SetInitialGroup( CString strGroupName )
  370. {
  371. m_strInitialGroupName = strGroupName;
  372. }
  373. void CSetGroupDlg::AddtoGroup( CSPStringArray & astrStocks )
  374. {
  375. m_astrInitialGroupStocks.RemoveAll( );
  376. m_astrInitialGroupStocks.Copy( astrStocks );
  377. }
  378. void CSetGroupDlg::DoDataExchange(CDataExchange* pDX)
  379. {
  380. CDialog::DoDataExchange(pDX);
  381. //{{AFX_DATA_MAP(CSetGroupDlg)
  382. DDX_Control(pDX, IDCANCEL, m_btnCancel);
  383. DDX_Control(pDX, IDOK, m_btnOK);
  384. DDX_Control(pDX, IDC_STATIC_INFO, m_staticInfo);
  385. DDX_Control(pDX, IDC_REMOVEALL, m_btnRemoveAll);
  386. DDX_Control(pDX, IDC_REMOVESELECTED, m_btnRemoveSelected);
  387. DDX_Control(pDX, IDC_ADDALL, m_btnAddAll);
  388. DDX_Control(pDX, IDC_ADDSELECTED, m_btnAddSelected);
  389. DDX_Control(pDX, IDC_DELETEGROUP, m_btnDeleteGroup);
  390. DDX_Control(pDX, IDC_ADDGROUP, m_btnAddGroup);
  391. DDX_Control(pDX, IDC_LIST_STOCKDEST, m_listStockDest);
  392. DDX_Control(pDX, IDC_COMBO_GROUPDEST, m_comboGroupDest);
  393. DDX_Control(pDX, IDC_LIST_STOCKSRC, m_listStockSrc);
  394. DDX_Control(pDX, IDC_COMBO_GROUPSRC, m_comboGroupSrc);
  395. DDX_Control(pDX, IDC_EDITCODE, m_editCode);
  396. //}}AFX_DATA_MAP
  397. }
  398. BEGIN_MESSAGE_MAP(CSetGroupDlg, CDialog)
  399. //{{AFX_MSG_MAP(CSetGroupDlg)
  400. ON_BN_CLICKED(IDC_ADDGROUP, OnAddgroup)
  401. ON_BN_CLICKED(IDC_DELETEGROUP, OnDeletegroup)
  402. ON_BN_CLICKED(IDC_ADDSELECTED, OnAddselected)
  403. ON_BN_CLICKED(IDC_ADDALL, OnAddall)
  404. ON_BN_CLICKED(IDC_REMOVESELECTED, OnRemoveselected)
  405. ON_BN_CLICKED(IDC_REMOVEALL, OnRemoveall)
  406. ON_EN_CHANGE(IDC_EDITCODE, OnChangeEditcode)
  407. ON_CBN_SELCHANGE(IDC_COMBO_GROUPSRC, OnSelchangeComboGroupsrc)
  408. ON_CBN_SELCHANGE(IDC_COMBO_GROUPDEST, OnSelchangeComboGroupdest)
  409. ON_LBN_DBLCLK(IDC_LIST_STOCKSRC, OnDblclkListStocksrc)
  410. ON_LBN_DBLCLK(IDC_LIST_STOCKDEST, OnDblclkListStockdest)
  411. //}}AFX_MSG_MAP
  412. END_MESSAGE_MAP()
  413. /////////////////////////////////////////////////////////////////////////////
  414. // CSetGroupDlg message handlers
  415. BOOL CSetGroupDlg::OnInitDialog()
  416. {
  417. CDialog::OnInitDialog();
  418. CWaitCursor waitcursor;
  419. // TODO: Add extra initialization here
  420. CDomainContainer & groups = AfxGetGroupContainer( );
  421. CDomainContainer & domains = AfxGetDomainContainer( );
  422. CStockContainer & container = AfxGetStockContainer();
  423. m_grpTemp = groups;
  424. // Src
  425. m_comboGroupSrc.InitStrings( TRUE, TRUE, groups );
  426. m_comboGroupSrc.SetCurSel( 0 );
  427. OnSelchangeComboGroupsrc();
  428. // Dest
  429. m_comboGroupDest.InitStrings( FALSE, FALSE, m_grpTemp );
  430. m_comboGroupDest.SetCurSel( 0 );
  431. if( m_strInitialGroupName.GetLength() > 0
  432. && CB_ERR != m_comboGroupDest.SelectString( 0, m_strInitialGroupName ) )
  433. {
  434. for( int k=0; k<m_astrInitialGroupStocks.GetSize(); k++ )
  435. m_grpTemp.AddDomainStock( m_strInitialGroupName, m_astrInitialGroupStocks.ElementAt(k) );
  436. }
  437. OnSelchangeComboGroupdest();
  438. return TRUE;  // return TRUE unless you set the focus to a control
  439.               // EXCEPTION: OCX Property Pages should return FALSE
  440. }
  441. void CSetGroupDlg::OnAddgroup() 
  442. {
  443. // TODO: Add your control notification handler code here
  444. CStringDialog dlg( this, IDS_SETGROUP_INPUTGNAME, IDS_SETGROUP_INPUTGNAME, NULL );
  445. if( IDOK != dlg.DoModal() )
  446. return;
  447. CString strNewName = dlg.GetStringWant( );
  448. CString strInfo;
  449. strInfo.LoadString( IDS_SETGROUP_ADDFAILED );
  450. if( strNewName.GetLength() > 0 )
  451. {
  452. if( -1 != m_grpTemp.AddDomain( strNewName ) )
  453. {
  454. int nNew = m_comboGroupDest.AddGroup( strNewName );
  455. if( CB_ERR != nNew )
  456. {
  457. m_comboGroupDest.SetCurSel( nNew );
  458. OnSelchangeComboGroupdest( );
  459. strInfo.LoadString( IDS_SETGROUP_ADDSUCCESS );
  460. }
  461. }
  462. else
  463. {
  464. strInfo.LoadString( IDS_SETGROUP_GROUPALREADYEXIST );
  465. }
  466. }
  467. m_staticInfo.SetWindowText( strInfo );
  468. }
  469. void CSetGroupDlg::OnDeletegroup() 
  470. {
  471. // TODO: Add your control notification handler code here
  472. CString strInfo;
  473. strInfo.LoadString( IDS_SETGROUP_DELETEFAILED );
  474. int nSel = m_comboGroupDest.GetCurSel();
  475. if( CB_ERR != nSel )
  476. {
  477. if( IDYES == AfxMessageBox( IDS_SETGROUP_DELETECONFIRM, MB_YESNO | MB_ICONQUESTION ) )
  478. {
  479. CString strName;
  480. m_comboGroupDest.GetWindowText( strName );
  481. if( m_grpTemp.RemoveDomain( strName )
  482. && CB_ERR != m_comboGroupDest.DeleteString( nSel ) )
  483. {
  484. nSel = ( nSel >= m_comboGroupDest.GetCount() ? 0 : nSel );
  485. m_comboGroupDest.SetCurSel( nSel );
  486. OnSelchangeComboGroupdest();
  487. strInfo.LoadString( IDS_SETGROUP_DELETESUCCESS );
  488. }
  489. }
  490. else
  491. strInfo.LoadString( IDS_SETGROUP_USERCANCEL );
  492. }
  493. else
  494. strInfo.LoadString( IDS_SETGROUP_NOSELECTEDGROUP );
  495. m_staticInfo.SetWindowText( strInfo );
  496. }
  497. void CSetGroupDlg::OnAddselected() 
  498. {
  499. // TODO: Add your control notification handler code here
  500. CString strDomainName;
  501. m_comboGroupDest.GetWindowText( strDomainName );
  502. if( strDomainName.GetLength() <= 0 )
  503. {
  504. AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
  505. return;
  506. }
  507. m_listStockDest.SelectItem( -1, FALSE );
  508. for( int i=0; i<m_listStockSrc.GetCount(); i++ )
  509. {
  510. int bSel = m_listStockSrc.GetSelected(i);
  511. if( LB_ERR != bSel && bSel )
  512. {
  513. CString rString, strStockCode;
  514. m_listStockSrc.GetText(i,rString);
  515. int nIndex = rString.Find( '(' );
  516. if( -1 != nIndex )
  517. strStockCode = rString.Left( nIndex );
  518. int nSelDest = -1;
  519. if( m_grpTemp.AddDomainStock( strDomainName, strStockCode ) )
  520. nSelDest = m_listStockDest.AddString( rString );
  521. else
  522. nSelDest = m_listStockDest.FindString( -1, rString );
  523. m_listStockDest.SelectAndShowItem( nSelDest );
  524. }
  525. }
  526. m_editCode.SetWindowText( NULL );
  527. }
  528. void CSetGroupDlg::OnAddall() 
  529. {
  530. // TODO: Add your control notification handler code here
  531. CString strDomainName;
  532. m_comboGroupDest.GetWindowText( strDomainName );
  533. if( strDomainName.GetLength() <= 0 )
  534. {
  535. AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
  536. return;
  537. }
  538. m_listStockDest.SelectItem( -1, FALSE );
  539. for( int i=0; i<m_listStockSrc.GetCount(); i++ )
  540. {
  541. CString rString, strStockCode;
  542. m_listStockSrc.GetText(i,rString);
  543. int nIndex = rString.Find( '(' );
  544. if( -1 != nIndex )
  545. strStockCode = rString.Left( nIndex );
  546. int nSelDest = -1;
  547. if( m_grpTemp.AddDomainStock( strDomainName, strStockCode ) )
  548. nSelDest = m_listStockDest.AddString( rString );
  549. else
  550. nSelDest = m_listStockDest.FindString( -1, rString );
  551. m_listStockDest.SelectItem( nSelDest, TRUE );
  552. }
  553. m_editCode.SetWindowText( NULL );
  554. }
  555. void CSetGroupDlg::OnRemoveselected() 
  556. {
  557. // TODO: Add your control notification handler code here
  558. CString strDomainName;
  559. m_comboGroupDest.GetWindowText( strDomainName );
  560. if( strDomainName.GetLength() <= 0 )
  561. {
  562. AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
  563. m_comboGroupDest.SetCurSel( 0 );
  564. OnSelchangeComboGroupdest();
  565. return;
  566. }
  567. for( int i=m_listStockDest.GetCount()-1; i>=0; i-- )
  568. {
  569. int bSel = m_listStockDest.GetSelected(i);
  570. if( LB_ERR != bSel && bSel )
  571. {
  572. CString rString, strStockCode;
  573. m_listStockDest.GetText(i,rString);
  574. int nIndex = rString.Find( '(' );
  575. if( -1 != nIndex )
  576. strStockCode = rString.Left( nIndex );
  577. if( m_grpTemp.RemoveDomainStock( strDomainName, strStockCode ) )
  578. m_listStockDest.DeleteString( i );
  579. }
  580. }
  581. }
  582. void CSetGroupDlg::OnRemoveall() 
  583. {
  584. // TODO: Add your control notification handler code here
  585. CString strDomainName;
  586. m_comboGroupDest.GetWindowText( strDomainName );
  587. if( strDomainName.GetLength() <= 0 )
  588. {
  589. AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
  590. m_comboGroupDest.SetCurSel( 0 );
  591. OnSelchangeComboGroupdest();
  592. return;
  593. }
  594. m_grpTemp.RemoveDomainStockAll( strDomainName );
  595. m_listStockDest.ResetContent( );
  596. }
  597. void CSetGroupDlg::OnDblclkListStocksrc() 
  598. {
  599. // TODO: Add your control notification handler code here
  600. CString strDomainName;
  601. m_comboGroupDest.GetWindowText( strDomainName );
  602. if( strDomainName.GetLength() <= 0 )
  603. {
  604. AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
  605. return;
  606. }
  607. m_listStockDest.SelectItem( -1, FALSE );
  608. int nCaretIndex = m_listStockSrc.GetCaretIndex();
  609. if( LB_ERR != nCaretIndex )
  610. {
  611. CString rString, strStockCode;
  612. m_listStockSrc.GetText(nCaretIndex,rString);
  613. m_listStockSrc.SelectItem( nCaretIndex, FALSE );
  614. int nIndex = rString.Find( '(' );
  615. if( -1 != nIndex )
  616. strStockCode = rString.Left( nIndex );
  617. int nSelDest = -1;
  618. if( m_grpTemp.AddDomainStock( strDomainName, strStockCode ) )
  619. nSelDest = m_listStockDest.AddString( rString );
  620. else
  621. nSelDest = m_listStockDest.FindString( -1, rString );
  622. m_listStockDest.SelectAndShowItem( nSelDest );
  623. }
  624. }
  625. void CSetGroupDlg::OnDblclkListStockdest() 
  626. {
  627. // TODO: Add your control notification handler code here
  628. CString strDomainName;
  629. m_comboGroupDest.GetWindowText( strDomainName );
  630. if( strDomainName.GetLength() <= 0 )
  631. {
  632. AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
  633. m_comboGroupDest.SetCurSel( 0 );
  634. OnSelchangeComboGroupdest();
  635. return;
  636. }
  637. int nCaretIndex = m_listStockDest.GetCaretIndex();
  638. if( LB_ERR != nCaretIndex )
  639. {
  640. CString rString, strStockCode;
  641. m_listStockDest.GetText(nCaretIndex,rString);
  642. int nIndex = rString.Find( '(' );
  643. if( -1 != nIndex )
  644. strStockCode = rString.Left( nIndex );
  645. if( m_grpTemp.RemoveDomainStock( strDomainName, strStockCode ) )
  646. m_listStockDest.DeleteString( nCaretIndex );
  647. }
  648. }
  649. void CSetGroupDlg::OnChangeEditcode() 
  650. {
  651. // TODO: If this is a RICHEDIT control, the control will not
  652. // send this notification unless you override the CDialog::OnInitDialog()
  653. // function and call CRichEditCtrl().SetEventMask()
  654. // with the ENM_CHANGE flag ORed into the mask.
  655. // TODO: Add your control notification handler code here
  656. CString strText;
  657. m_editCode.GetWindowText( strText );
  658. strText.TrimLeft();
  659. strText.TrimLeft();
  660. if( strText.GetLength() > 0 )
  661. {
  662. int nSel = m_comboGroupSrc.GetCurSel();
  663. if( CB_ERR == nSel ||
  664. CStockContainer::typeAll != (int)(m_comboGroupSrc.GetItemData( nSel )) )
  665. {
  666. m_comboGroupSrc.SelectGroupAll( );
  667. OnSelchangeComboGroupsrc();
  668. }
  669. }
  670. if( !m_listStockSrc.SelectCode( 0, strText ) )
  671. m_listStockSrc.SelectShortname( 0, strText );
  672. }
  673. void CSetGroupDlg::OnSelchangeComboGroupsrc() 
  674. {
  675. // TODO: Add your control notification handler code here
  676. int nType = m_comboGroupSrc.GetCurSelType();
  677. CString strName = m_comboGroupSrc.GetCurSelName();
  678. m_listStockSrc.SetCurrentStocks( nType, strName, AfxGetGroupContainer() );
  679. }
  680. void CSetGroupDlg::OnSelchangeComboGroupdest() 
  681. {
  682. // TODO: Add your control notification handler code here
  683. int nType = m_comboGroupDest.GetCurSelType();
  684. CString strName = m_comboGroupDest.GetCurSelName();
  685. m_listStockDest.SetCurrentStocks( nType, strName, m_grpTemp );
  686. }
  687. void CSetGroupDlg::OnOK() 
  688. {
  689. // TODO: Add extra validation here
  690. CDomainContainer & groups = AfxGetGroupContainer( );
  691. groups = m_grpTemp;
  692. groups.Store( AfxGetProfile().GetGroupFile() );
  693. ::PostMessage( AfxGetMainFrame()->GetSafeHwnd(), WM_USER_UPDATEBARMENU, 0, 0 );
  694. CDialog::OnOK();
  695. }
  696. void CSetGroupDlg::OnCancel() 
  697. {
  698. // TODO: Add extra cleanup here
  699. CDialog::OnCancel();
  700. }
  701. BOOL CSetGroupDlg::PreTranslateMessage(MSG* pMsg) 
  702. {
  703. // TODO: Add your specialized code here and/or call the base class
  704. if( WM_KEYDOWN == pMsg->message )
  705. {
  706. if( VK_UP == pMsg->wParam )
  707. {
  708. if( ::GetFocus() == m_editCode.GetSafeHwnd() )
  709. {
  710. m_listStockSrc.SelectUp( );
  711. return TRUE;
  712. }
  713. }
  714. else if( VK_DOWN == pMsg->wParam )
  715. {
  716. if( ::GetFocus() == m_editCode.GetSafeHwnd() )
  717. {
  718. m_listStockSrc.SelectDown( );
  719. return TRUE;
  720. }
  721. }
  722. else if( VK_PRIOR == pMsg->wParam )
  723. {
  724. if( ::GetFocus() == m_editCode.GetSafeHwnd() )
  725. {
  726. m_listStockSrc.SelectPrior( );
  727. return TRUE;
  728. }
  729. }
  730. else if( VK_NEXT == pMsg->wParam )
  731. {
  732. if( ::GetFocus() == m_editCode.GetSafeHwnd() )
  733. {
  734. m_listStockSrc.SelectNext( );
  735. return TRUE;
  736. }
  737. }
  738. else if( VK_RETURN == pMsg->wParam )
  739. {
  740. OnAddselected( );
  741. return TRUE;
  742. }
  743. }
  744. return CDialog::PreTranslateMessage(pMsg);
  745. }