📄 setcolumndlg.cpp.svn-base
字号:
ON_NOTIFY(LVN_ITEMCHANGED, IDC_COLUMNLIST, OnItemchangedColumnlist)
ON_BN_CLICKED(IDC_SETDEFAULT, OnSetdefault)
ON_NOTIFY(NM_DBLCLK, IDC_COLUMNLIST, OnDblclkColumnlist)
ON_BN_CLICKED(IDC_SETALL, OnSetall)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSetColumnDlg message handlers
BOOL CSetColumnDlg::OnInitDialog()
{
CXFDialog::OnInitDialog();
// TODO: Add extra initialization here
m_listColumn.SendMessage( LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP
| LVS_EX_FLATSB | LVS_EX_REGIONAL | LVS_EX_INFOTIP | LVS_EX_UNDERLINEHOT );
CRect rectList;
m_listColumn.GetClientRect( &rectList );
CString strHeaderName, strHeaderDescript, strHeaderSetting, strUserDefine;
strHeaderName.LoadString( IDS_SETCOLUMN_NAME );
strHeaderDescript.LoadString( IDS_SETCOLUMN_DESCRIPT );
strHeaderSetting.LoadString( IDS_SETCOLUMN_SETTING );
strUserDefine.LoadString( IDS_SETCOLUMN_USERDEFINE );
m_listColumn.InsertColumn( 0, strHeaderName, LVCFMT_CENTER, rectList.Width() / 3 - 8 );
m_listColumn.InsertColumn( 1, strHeaderDescript, LVCFMT_CENTER, rectList.Width() / 3 - 2 );
m_listColumn.InsertColumn( 2, strHeaderSetting, LVCFMT_CENTER, rectList.Width() / 3 - 8 );
SetListColumnItems( AfxGetProfile().GetSListColumnsShow(), FALSE );
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSetColumnDlg::OnMoveup()
{
// TODO: Add your control notification handler code here
if( 0 == m_listColumn.GetSelectedCount( ) )
{
AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
return;
}
int nSelected = -1;
for( int i=0; i<m_listColumn.GetItemCount(); i++ )
{
if( LVIS_SELECTED == m_listColumn.GetItemState(i,LVIS_SELECTED) )
{
nSelected = i;
break;
}
}
if( -1 == nSelected )
{
AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
return;
}
if( 0 == nSelected )
{
AfxMessageBox( IDS_SETCOLUMN_FIRST, MB_OK | MB_ICONINFORMATION );
return;
}
DWORD dwData = m_listColumn.GetItemData( nSelected );
CString strName = m_listColumn.GetItemText( nSelected, 0 );
CString strDis = m_listColumn.GetItemText( nSelected, 1 );
BOOL bCheck = m_listColumn.GetCheck( nSelected );
if( m_listColumn.DeleteItem( nSelected ) )
{
int nItem = m_listColumn.InsertItem( nSelected-1, strName, -1 );
m_listColumn.SetItemText( nItem, 1, strDis );
m_listColumn.SetItemData( nItem, dwData );
m_listColumn.SetItemState( nItem, LVIS_SELECTED, LVIS_SELECTED );
m_listColumn.SetCheck( nItem, bCheck );
}
}
void CSetColumnDlg::OnMovedown()
{
// TODO: Add your control notification handler code here
if( 0 == m_listColumn.GetSelectedCount( ) )
{
AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
return;
}
int nSelected = -1;
for( int i=0; i<m_listColumn.GetItemCount(); i++ )
{
if( LVIS_SELECTED == m_listColumn.GetItemState(i,LVIS_SELECTED) )
{
nSelected = i;
break;
}
}
if( -1 == nSelected )
{
AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
return;
}
if( m_listColumn.GetItemCount()-1 == nSelected )
{
AfxMessageBox( IDS_SETCOLUMN_LAST, MB_OK | MB_ICONINFORMATION );
return;
}
DWORD dwData = m_listColumn.GetItemData( nSelected );
CString strName = m_listColumn.GetItemText( nSelected, 0 );
CString strDis = m_listColumn.GetItemText( nSelected, 1 );
BOOL bCheck = m_listColumn.GetCheck( nSelected );
if( m_listColumn.DeleteItem( nSelected ) )
{
int nItem = m_listColumn.InsertItem( nSelected+1, strName, -1 );
m_listColumn.SetItemText( nItem, 1, strDis );
m_listColumn.SetItemData( nItem, dwData );
m_listColumn.SetItemState( nItem, LVIS_SELECTED, LVIS_SELECTED );
m_listColumn.SetCheck( nItem, bCheck );
}
}
void CSetColumnDlg::OnNewindex()
{
// TODO: Add your control notification handler code here
CBaseIndexDlg dlg;
if( IDOK == dlg.DoModal() )
{
CIndex index = dlg.GetIndexInfo();
CString strDis;
strDis.LoadString( IDS_SETCOLUMN_USERDEFINE );
int nItem = m_listColumn.InsertItem( m_listColumn.GetItemCount(), index.m_strName, -1 );
m_listColumn.SetItemText( nItem, 1, strDis );
m_listColumn.SetItemData( nItem, index.m_nID );
m_listColumn.SetCheck( nItem, dlg.m_bAddToList );
}
}
void CSetColumnDlg::OnEditindex()
{
// TODO: Add your control notification handler code here
if( 0 == m_listColumn.GetSelectedCount( ) )
{
AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
return;
}
int nSelected = -1;
for( int i=0; i<m_listColumn.GetItemCount(); i++ )
{
if( LVIS_SELECTED == m_listColumn.GetItemState(i,LVIS_SELECTED) )
{
nSelected = i;
break;
}
}
if( -1 == nSelected )
{
AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
return;
}
DWORD dwData = m_listColumn.GetItemData( nSelected );
if( dwData < SLH_USERDEFINE_BEGIN )
{
AfxMessageBox( IDS_SETCOLUMN_NOTUSERDEFINE, MB_OK | MB_ICONINFORMATION );
return;
}
CBaseIndexDlg dlg;
dlg.m_bAddToList = m_listColumn.GetCheck( nSelected );
dlg.SetIndexInfo( dwData );
if( IDOK == dlg.DoModal() )
{
CIndex index = dlg.GetIndexInfo();
m_listColumn.SetItemText( nSelected, 0, index.m_strName );
m_listColumn.SetCheck( nSelected, dlg.m_bAddToList );
m_bUserIndexModified = TRUE;
}
}
void CSetColumnDlg::OnDelindex()
{
// TODO: Add your control notification handler code here
if( 0 == m_listColumn.GetSelectedCount( ) )
{
AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
return;
}
int nSelected = -1;
for( int i=0; i<m_listColumn.GetItemCount(); i++ )
{
if( LVIS_SELECTED == m_listColumn.GetItemState(i,LVIS_SELECTED) )
{
nSelected = i;
break;
}
}
if( -1 == nSelected )
{
AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
return;
}
DWORD dwData = m_listColumn.GetItemData( nSelected );
if( dwData < SLH_USERDEFINE_BEGIN )
{
AfxMessageBox( IDS_SETCOLUMN_NOTUSERDEFINE, MB_OK | MB_ICONINFORMATION );
return;
}
if( IDYES == AfxMessageBox( IDS_SETCOLUMN_QUERYDEL, MB_YESNO | MB_ICONINFORMATION ) )
{
m_listColumn.DeleteItem( nSelected );
CIndexContainer & acol = AfxGetProfile().GetSListColumnsUser();
acol.RemoveIndex( dwData );
}
}
void CSetColumnDlg::OnOK()
{
// TODO: Add extra validation here
m_btnOK.EnableWindow( FALSE );
// Store Show Items
CSPDWordArray & anShow = AfxGetProfile().GetSListColumnsShow( );
CSPDWordArray & anOrder = AfxGetProfile().GetSListColumnsOrder( );
anShow.RemoveAll();
anOrder.RemoveAll();
for( int i=0; i<m_listColumn.GetItemCount(); i++ )
{
UINT nID = m_listColumn.GetItemData( i );
anOrder.Add( nID );
if( m_listColumn.GetCheck( i ) )
anShow.Add( nID );
}
if( 0 == anShow.GetSize() && IDNO == AfxMessageBox( IDS_SETCOLUMN_NOSELECT, MB_YESNO ) )
return;
// Store Parameters
m_listColumn.HideItemComboBox( );
for( int nItem=0; nItem<m_listColumn.GetItemCount(); nItem++ )
{
// Set Item Text
UINT nID = m_listColumn.GetItemData(nItem);
// Set Column Combo Text
CString strParam;
if( SLH_DIFF == nID )
{
strParam = m_listColumn.GetItemText( nItem, 2 );
int nDays = atol( strParam );
AfxGetProfile().SetDiffDays( nDays );
}
else if( SLH_DIFFPERCENT == nID )
{
strParam = m_listColumn.GetItemText( nItem, 2 );
int nDays = atol( strParam );
AfxGetProfile().SetDiffPercentDays( nDays );
}
else if( SLH_SCOPE == nID )
{
strParam = m_listColumn.GetItemText( nItem, 2 );
int nDays = atol( strParam );
AfxGetProfile().SetScopeDays( nDays );
}
else if( SLH_RATIO_CHANGEHAND == nID )
{
strParam = m_listColumn.GetItemText( nItem, 2 );
int nDays = atol( strParam );
AfxGetProfile().SetRatioChangeHandDays( nDays );
}
else if( SLH_RATIO_VOLUME == nID )
{
strParam = m_listColumn.GetItemText( nItem, 2 );
int nDays = atol( strParam );
AfxGetProfile().SetRatioVolumeDays( nDays );
}
else if( SLH_RS == nID )
{
strParam = m_listColumn.GetItemText( nItem, 2 );
int nDays = atol( strParam );
AfxGetProfile().SetRSDays( nDays );
}
else if( SLH_ANNGAINS_AVERAGE == nID )
{
strParam = m_listColumn.GetItemText( nItem, 2 );
int nDays = atol( strParam );
AfxGetProfile().SetYieldAverageDays( nDays );
}
}
AfxGetProfile().StoreProfile( );
CXFDialog::OnOK();
//CMainFrame * pMainFrame = AfxGetMainFrame();
//if( pMainFrame )
//{
// pMainFrame->m_DateBox.InitDates( );
// pMainFrame->m_DateBox.SetCurrentWindowText( );
//}
// Recalculate Yield Average
if( AfxGetProfile().GetYieldAverageDays() != m_nYieldAverageDaysOld )
{
// Need Recalculate
if( IDYES == AfxMessageBox( IDS_SETCOLUMN_IFRECALCULATE, MB_YESNO|MB_ICONINFORMATION ) )
{
AfxRecalculateYield( AfxGetProfile().GetYieldAverageDays(), TRUE );
AfxGetStockContainer().ReloadBase( &AfxGetDB() );
AfxGetSListStockContainer().ReRetrieveFromStatic( AfxGetActiveStrategy() );
}
}
// Clear the User Defined Index Cache
if( m_bUserIndexModified )
AfxGetSListStockContainer().ClearVariantSaveValue();
}
void CSetColumnDlg::OnItemchangedColumnlist(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if( LVIS_SELECTED & pNMListView->uNewState )
{
DWORD id = m_listColumn.GetItemData( pNMListView->iItem );
BOOL b = ( id >= SLH_USERDEFINE_BEGIN );
m_btnDelIndex.EnableWindow( b );
m_btnEditIndex.EnableWindow( b );
}
*pResult = 0;
}
void CSetColumnDlg::OnSetdefault()
{
// TODO: Add your control notification handler code here
if( IDYES == AfxMessageBox( IDS_SETCOLUMN_SETDEFAULT, MB_YESNO | MB_ICONINFORMATION ) )
{
AfxGetProfile().SetSListColumnsDefault( );
SetListColumnItems( AfxGetProfile().GetSListColumnsShow(), TRUE );
}
}
void CSetColumnDlg::OnSetall()
{
// TODO: Add your control notification handler code here
int nCheck = m_btnSetAll.GetCheck();
for( int i=0; i<m_listColumn.GetItemCount(); i++ )
m_listColumn.SetCheck( i, nCheck );
}
void CSetColumnDlg::OnDblclkColumnlist(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
DWORD id = m_listColumn.GetItemData( pNMListView->iItem );
if( id >= SLH_USERDEFINE_BEGIN )
OnEditindex( );
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -