// CClientForm3.cpp : implementation file // #include "stdafx.h" #include "ylgl.h" #include "ClientForm3.h" #include "MyMdi.H" #include "SendMsgDlg.h" #include "SelBrunDevice.h" #include "VcPlot.h" #include "VcAxis.h" #include "VcValueScale.h" #include "VcSeriesCollection.h" #include "VcSeries.h" #include "VcPen.h" #include "VcCategoryScale.h" #include "VcColor.h" #include "VcDataGrid.h" #include "VcBackdrop.h" #include "VcFill.h" #include "VcBrush.h" #include "VcDataPoints.h" #include "VcDataPoint.h" #include "VcDataPointLabel.h" #include "VcAxisTitle.h" #include "ShowMschart.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CClientForm3 IMPLEMENT_DYNCREATE(CClientForm3, MyFormView) CClientForm3::CClientForm3() : MyFormView(CClientForm3::IDD) { //{{AFX_DATA_INIT(CClientForm3) m_filter = _T(""); m_checkcontent = _T(""); m_clerk = _T(""); m_date2 = GetTmFromStr(g_date); m_date1 = m_date2 - CTimeSpan(30, 0, 0, 0); m_radio1 = 0; //}}AFX_DATA_INIT } CClientForm3::~CClientForm3() { } void CClientForm3::DoDataExchange(CDataExchange* pDX) { MyFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(CClientForm3) DDX_Control(pDX, IDC_COMBOresult, m_comboresult); DDX_Control(pDX, IDC_COMBOclerk, m_comboclerk); DDX_Control(pDX, IDC_COMBOcheckcontent, m_combocheckcontent); DDX_Control(pDX, IDC_LIST2, m_List1); DDX_Control(pDX, IDC_STATIC1, m_static1); DDX_CBString(pDX, IDC_COMBOcheckcontent, m_checkcontent); DDX_CBString(pDX, IDC_COMBOclerk, m_clerk); DDX_CBString(pDX, IDC_COMBOresult, m_result); DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_date1); DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER2, m_date2); DDX_Control(pDX, IDC_MSCHART3, m_Chart3); DDX_Radio(pDX, IDC_RADIO1, m_radio1); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CClientForm3, MyFormView) //{{AFX_MSG_MAP(CClientForm3) ON_BN_CLICKED(IDC_BUTclose, OnBUTclose) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_RADIO1, OnRadio1) ON_BN_CLICKED(IDC_RADIO2, OnRadio2) ON_BN_CLICKED(IDC_RADIO9, OnRadio9) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CClientForm3 diagnostics #ifdef _DEBUG void CClientForm3::AssertValid() const { MyFormView::AssertValid(); } void CClientForm3::Dump(CDumpContext& dc) const { MyFormView::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CClientForm3 message handlers void CClientForm3::OnInitialUpdate() { MyFormView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class CMyMdi Mdi; Mdi.SetSubView((CWnd*)GetParent(), (CWnd*)this); // Here we create the outbar control using the splitter as its parent // and setting its id to the first pane. CRect rc2; GetWindowRect(rc2); ::MoveWindow(m_hWnd, g_rc.left, g_rc.top, g_rc.Width(), g_rc.Height(), TRUE); EnumChildWindows(m_hWnd, (WNDENUMPROC)EnumChildProc, 0); OnRadio9(); m_List1.m_bSortSupport = 0; m_List1.GetWindowRect(rc2); ScreenToClient(rc2); m_listrc2 = rc2; int hei = rc2.Height() / 2; m_listrc = m_listrc2; m_listrc.bottom = m_listrc.top + hei; m_chartrc = m_listrc; m_chartrc.top = m_listrc.bottom; m_chartrc.bottom = m_listrc2.bottom; m_List1.MoveWindow(m_listrc); m_Chart3.MoveWindow(m_chartrc); m_static1.SetFont(&g_titlefont); m_List1.SetHeadings("订单号,100;男宾姓名,100;女宾姓名,100;电话,100;地址,100;QQ,100;版本,100;业务员,100;检查内容,100;技术员,100;使用QQ,100;日期,100"); CString filter; filter.Format(";;date>='%s' and date<='%s'", m_date1.Format("%Y-%m-%d"), m_date2.Format("%Y-%m-%d")); m_List1.LoadColumnInfo(108); g_sendhead.bsql = 0; g_sendhead.code[0] = 200; g_sendhead.code[1] = 201; g_sendhead.code[2] = 209; g_sendhead.tabcount = 3; g_pMainWnd->ProcessChatMessageRequest2(filter); if (g_bSendOK == 0) { return; } CArrayList1array; CArrayList2array; int ii = 0; DataToArray(&List1array, &List2array, &m_List1array); m_combocheckcontent.AddString("全部"); for ( ii = 0; ii < List1array.GetSize(); ii++) m_combocheckcontent.AddString(List1array.ElementAt(ii).ElementAt(0)); m_comboresult.AddString("全部"); for (ii = 0; ii < List2array.GetSize(); ii++) m_comboresult.AddString(List2array.ElementAt(ii).ElementAt(0)); VARIANT var; /////////////////////////// m_Chart3.GetBackdrop().GetFill().SetStyle(1); m_Chart3.GetBackdrop().GetFill().GetBrush().GetFillColor().Set(255, 255, 255); m_Chart3.SetShowLegend(TRUE); m_Chart3.SetChartType(1); // 栈模式 m_Chart3.SetStacking(FALSE); m_Chart3.GetPlot().GetAxis(1, var).GetValueScale().SetAuto(1); // 不自动标注Y轴刻度 m_Chart3.GetPlot().GetAxis(0, var).GetCategoryScale().SetAuto(0); // 不自动标注X轴刻度 m_Chart3.GetPlot().GetAxis(0, var).GetCategoryScale().SetDivisionsPerLabel(1);// 每刻度一个标注 m_Chart3.GetPlot().GetAxis(0, var).GetCategoryScale().SetDivisionsPerTick(1); // 每刻度一个刻度线 m_Chart3.SetColumnCount(6); m_Chart3.SetColumn(1); m_Chart3.SetColumnLabel((LPCTSTR)"全部"); m_Chart3.SetColumn(2); m_Chart3.SetColumnLabel((LPCTSTR)"婚纱照"); m_Chart3.SetColumn(3); m_Chart3.SetColumnLabel((LPCTSTR)"写真照"); m_Chart3.SetColumn(4); m_Chart3.SetColumnLabel((LPCTSTR)"宝宝照"); m_Chart3.SetColumn(5); m_Chart3.SetColumnLabel((LPCTSTR)"全家福"); m_Chart3.SetColumn(6); m_Chart3.SetColumnLabel((LPCTSTR)"情侣照"); m_Chart3.GetPlot().GetSeriesCollection().GetItem(1).GetDataPoints().GetItem(-1).GetBrush().GetFillColor().Set(255, 0, 0); m_Chart3.GetPlot().GetSeriesCollection().GetItem(2).GetDataPoints().GetItem(-1).GetBrush().GetFillColor().Set(0, 255, 0); m_Chart3.GetPlot().GetSeriesCollection().GetItem(3).GetDataPoints().GetItem(-1).GetBrush().GetFillColor().Set(0, 0, 255); m_Chart3.GetPlot().GetSeriesCollection().GetItem(4).GetDataPoints().GetItem(-1).GetBrush().GetFillColor().Set(0, 255, 255); m_Chart3.GetPlot().GetSeriesCollection().GetItem(5).GetDataPoints().GetItem(-1).GetBrush().GetFillColor().Set(255, 255, 0); m_Chart3.GetPlot().GetSeriesCollection().GetItem(6).GetDataPoints().GetItem(-1).GetBrush().GetFillColor().Set(255, 0, 255); // 线宽(对点线图有效) m_Chart3.GetPlot().GetSeriesCollection().GetItem(1).GetPen().SetWidth(30); m_Chart3.GetPlot().GetSeriesCollection().GetItem(2).GetPen().SetWidth(30); m_Chart3.GetPlot().GetSeriesCollection().GetItem(3).GetPen().SetWidth(30); m_Chart3.GetPlot().GetSeriesCollection().GetItem(4).GetPen().SetWidth(30); m_Chart3.GetPlot().GetSeriesCollection().GetItem(5).GetPen().SetWidth(30); m_Chart3.GetPlot().GetSeriesCollection().GetItem(6).GetPen().SetWidth(30); // 数据点类型显示数据值的模式(对柱柱状图和点线图有效) // 0: 不显示 1: 显示在柱状图外 // 2: 显示在柱状图内上方 3: 显示在柱状图内中间 4: 显示在柱状图内下方 m_Chart3.GetPlot().GetSeriesCollection().GetItem(1).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1); m_Chart3.GetPlot().GetSeriesCollection().GetItem(2).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1); m_Chart3.GetPlot().GetSeriesCollection().GetItem(3).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1); m_Chart3.GetPlot().GetSeriesCollection().GetItem(4).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1); m_Chart3.GetPlot().GetSeriesCollection().GetItem(5).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1); m_Chart3.GetPlot().GetSeriesCollection().GetItem(6).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1); m_comboclerk.RefDroppedWidth(); FillGrid(); } void CClientForm3::FillGrid() { m_List1.DeleteAllItems2(); int ii = 0; m_List1.m_arLabels.SetSize(m_List1array.GetSize(), 1); int count = 0; if (m_filter.IsEmpty()) { for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++) { m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); } } else { int type = GetType(m_filter); if (type == 1)//电话 { BOOL bFinded = 0; for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++) { if (bFinded && m_List1array.ElementAt(ii).ElementAt(0).IsEmpty()) { m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); continue; } if (m_List1array.ElementAt(ii).ElementAt(3).Find(m_filter) != -1) { bFinded = 1; m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); } else { bFinded = 0; } } } else if (type == 2)//拼音 { BOOL bFinded = 0; m_filter.MakeUpper(); for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++) { if (bFinded && m_List1array.ElementAt(ii).ElementAt(0).IsEmpty()) { m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); continue; } if (m_List1array.ElementAt(ii).ElementAt(20).Find(m_filter) != -1 || m_List1array.ElementAt(ii).ElementAt(21).Find(m_filter) != -1) { bFinded = 1; m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); } else { bFinded = 0; } } } else { BOOL bFinded = 0; for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++) { if (bFinded && m_List1array.ElementAt(ii).ElementAt(0).IsEmpty()) { m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); continue; } if (m_List1array.ElementAt(ii).ElementAt(0).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(1).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(2).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(3).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(4).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(5).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(6).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(7).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(8).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(9).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(10).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(11).Find(m_filter) != -1) { bFinded = 1; m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); } else { bFinded = 0; } } } } m_List1.m_arLabels.SetSize(count, 1); ii = count; m_List1.m_LabelCount = ii; m_List1.SetItemCountEx(ii); CString str; str.Format("单数:%d", ii); SetDlgItemText(IDC_STATIC2, str); if (!g_id.IsEmpty()) { for (int i = 0; i < m_List1.GetItemCount(); i++) { if (g_id == m_List1.GetItemText(i, 0)) { m_List1.SetItemState(i, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); m_List1.EnsureVisible(i, FALSE); break; } } } RefChert(); } void CClientForm3::OnBUTclose() { // TODO: Add your control notification handler code here GetParent()->SendMessage(WM_CLOSE); } BOOL CClientForm3::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class try { if (pMsg->message == WM_KEYDOWN) { switch (pMsg->wParam) { case VK_RETURN: return 1; case 0x43: // copy if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_COPY); return TRUE; } break; case 0x56: //Ctrl + V: if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_PASTE); return TRUE; } break; case 0x58: // cut if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_CUT); return TRUE; } break; case 0x5A: //undo case 0x59: //redo if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_UNDO); return TRUE; } break; } } return MyFormView::PreTranslateMessage(pMsg); } catch (...) { } return true; } void CClientForm3::GetData() { UpdateData(); CString filter; filter.Format("date>='%s' and date<='%s'", m_date1.Format("%Y-%m-%d"), m_date2.Format("%Y-%m-%d")); m_checkcontent = m_clerk = m_result = ""; int pos = m_combocheckcontent.GetCurSel(); if (pos != -1) { m_combocheckcontent.GetLBText(pos, m_checkcontent); } pos = m_comboclerk.GetCurSel(); if (pos != -1) { m_comboclerk.GetLBText(pos, m_clerk); } pos = m_comboresult.GetCurSel(); if (pos != -1) { m_comboresult.GetLBText(pos, m_result); } if (m_radio1 == 2) { if (m_result != "" && m_result != "全部") { filter += " and result='" + m_result + "'"; } } else { if (m_checkcontent != "" && m_checkcontent != "全部") { filter += " and checkcontent='" + m_checkcontent + "'"; } m_clerk.TrimLeft(); if (m_clerk != "" && m_clerk != "全部") { filter += " and clerk='" + m_clerk + "'"; } } g_sendhead.bsql = 0; g_sendhead.code[0] = 209; g_sendhead.tabcount = 1; g_pMainWnd->ProcessChatMessageRequest2(filter); if (g_bSendOK == 0) { return; } DataToArray(&m_List1array); FillGrid(); } void CClientForm3::OnButton1() { // TODO: Add your control notification handler code here GetData(); } void SortArray(BOOL bAscending, CStringArray &datearray, CArray&valuearray) { CString strtemp; int ntemp; int last = datearray.GetSize() - 1; bool sorted = true; if (bAscending) { do { sorted = true; for (int i = 0; i < last; i++) { if (valuearray[i] < valuearray[i + 1]) { strtemp = datearray[i]; datearray[i] = datearray[i + 1]; datearray[i + 1] = strtemp; ntemp = valuearray[i]; valuearray[i] = valuearray[i + 1]; valuearray[i + 1] = ntemp; sorted = false; } } last--; } while (!sorted); } else { do { sorted = true; for (int i = 0; i < last; i++) { if (valuearray[i] > valuearray[i + 1]) { strtemp = datearray[i]; datearray[i] = datearray[i + 1]; datearray[i + 1] = strtemp; ntemp = valuearray[i]; valuearray[i] = valuearray[i + 1]; valuearray[i + 1] = ntemp; sorted = false; } } last--; } while (!sorted); } } void CClientForm3::RefChert() { int i = 0; UpdateData(); m_checkcontent = m_clerk = m_result = ""; int pos = m_combocheckcontent.GetCurSel(); if (pos != -1) { m_combocheckcontent.GetLBText(pos, m_checkcontent); } pos = m_comboclerk.GetCurSel(); if (pos != -1) { m_comboclerk.GetLBText(pos, m_clerk); } pos = m_comboresult.GetCurSel(); if (pos != -1) { m_comboresult.GetLBText(pos, m_result); } if (m_radio1 == 2) { m_result.TrimLeft(); if (m_result == "" || m_result == "全部") { CStringArray resultarray; CArraycountarray; int pos; for ( i = 0; i < m_List1array.GetSize(); i++) { pos = ::FindArray(&resultarray, m_List1array.ElementAt(i).ElementAt(18)); if (pos == -1) { resultarray.Add(m_List1array.ElementAt(i).ElementAt(18)); countarray.Add(1); } else { int newcount = countarray.ElementAt(pos) + 1; countarray.SetAt(pos, newcount); } } if (resultarray.GetSize() == 0) { m_List1.MoveWindow(m_listrc2); m_Chart3.ShowWindow(SW_HIDE); return; } else { m_List1.MoveWindow(m_listrc); m_Chart3.ShowWindow(SW_SHOW); } SortArray(1, resultarray, countarray); if (resultarray.GetSize() > 12) { resultarray.SetSize(12); countarray.SetSize(12); } CStringArray m_typearray; m_typearray.Add("全部"); m_Chart3.SetColumnCount(1); VARIANT var; m_Chart3.GetPlot().GetAxis(1, var).GetValueScale().SetAuto(1); COLORREF col[10] = { \ RGB(255, 0, 0), \ RGB(0, 255, 0), \ RGB(0, 0, 255), \ RGB(255, 255, 0), \ RGB(0, 255, 255), \ RGB(255, 0, 255), \ RGB(127, 0, 0), \ RGB(0, 127, 0), \ RGB(0, 0, 127), \ RGB(127, 127, 0) }; for (i = 0; i < m_typearray.GetSize(); i++) { m_Chart3.SetColumn(i + 1); m_Chart3.SetColumnLabel((LPCTSTR)m_typearray.ElementAt(i)); m_Chart3.GetPlot().GetSeriesCollection().GetItem(i + 1).GetDataPoints().GetItem(-1).GetBrush().GetFillColor().Set(GetRValue(col[i]), GetGValue(col[i]), GetBValue(col[i])); m_Chart3.GetPlot().GetSeriesCollection().GetItem(i + 1).GetPen().SetWidth(30); m_Chart3.GetPlot().GetSeriesCollection().GetItem(i + 1).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1); } int nRowCount = resultarray.GetSize();// VARIANT var; m_Chart3.SetRowCount(nRowCount); for (int row = 1; row <= nRowCount; ++row) { m_Chart3.SetRow(row); m_Chart3.SetRowLabel(resultarray.ElementAt(row - 1)); m_Chart3.GetDataGrid().SetData(row, 1, countarray.ElementAt(row - 1), 0); } m_Chart3.Refresh(); } else { CStringArray clerkarray; CArraycountarray; int pos; for ( i = 0; i < m_List1array.GetSize(); i++) { pos = ::FindArray(&clerkarray, m_List1array.ElementAt(i).ElementAt(9)); if (pos == -1) { clerkarray.Add(m_List1array.ElementAt(i).ElementAt(9)); countarray.Add(1); } else { int newcount = countarray.ElementAt(pos) + 1; countarray.SetAt(pos, newcount); } } if (clerkarray.GetSize() == 0) { m_List1.MoveWindow(m_listrc2); m_Chart3.ShowWindow(SW_HIDE); return; } else { m_List1.MoveWindow(m_listrc); m_Chart3.ShowWindow(SW_SHOW); } SortArray(1, clerkarray, countarray); if (clerkarray.GetSize() > 12) { clerkarray.SetSize(12); countarray.SetSize(12); } CStringArray m_typearray; m_typearray.Add(m_result); m_Chart3.SetColumnCount(1); VARIANT var; m_Chart3.GetPlot().GetAxis(1, var).GetValueScale().SetAuto(1); COLORREF col[10] = { \ RGB(255, 0, 0), \ RGB(0, 255, 0), \ RGB(0, 0, 255), \ RGB(255, 255, 0), \ RGB(0, 255, 255), \ RGB(255, 0, 255), \ RGB(127, 0, 0), \ RGB(0, 127, 0), \ RGB(0, 0, 127), \ RGB(127, 127, 0) }; for (i = 0; i < m_typearray.GetSize(); i++) { m_Chart3.SetColumn(i + 1); m_Chart3.SetColumnLabel((LPCTSTR)m_typearray.ElementAt(i)); m_Chart3.GetPlot().GetSeriesCollection().GetItem(i + 1).GetDataPoints().GetItem(-1).GetBrush().GetFillColor().Set(GetRValue(col[i]), GetGValue(col[i]), GetBValue(col[i])); m_Chart3.GetPlot().GetSeriesCollection().GetItem(i + 1).GetPen().SetWidth(30); m_Chart3.GetPlot().GetSeriesCollection().GetItem(i + 1).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1); } int nRowCount = clerkarray.GetSize();// VARIANT var; m_Chart3.SetRowCount(nRowCount); for (int row = 1; row <= nRowCount; ++row) { m_Chart3.SetRow(row); m_Chart3.SetRowLabel(clerkarray.ElementAt(row - 1)); m_Chart3.GetDataGrid().SetData(row, 1, countarray.ElementAt(row - 1), 0); } m_Chart3.Refresh(); } return; } m_clerk.TrimLeft(); if (m_clerk == "" || m_clerk == "全部") { CStringArray clerkarray; CArraycountarray; int pos; for ( i = 0; i < m_List1array.GetSize(); i++) { if (m_radio1 == 1 && (m_checkcontent == "" || m_checkcontent == "全部")) { pos = ::FindArray(&clerkarray, m_List1array.ElementAt(i).ElementAt(8)); if (pos == -1) { clerkarray.Add(m_List1array.ElementAt(i).ElementAt(8)); countarray.Add(1); } else { int newcount = countarray.ElementAt(pos) + 1; countarray.SetAt(pos, newcount); } } else { pos = ::FindArray(&clerkarray, m_List1array.ElementAt(i).ElementAt(9)); if (pos == -1) { clerkarray.Add(m_List1array.ElementAt(i).ElementAt(9)); countarray.Add(1); } else { int newcount = countarray.ElementAt(pos) + 1; countarray.SetAt(pos, newcount); } } } if (clerkarray.GetSize() == 0) { m_List1.MoveWindow(m_listrc2); m_Chart3.ShowWindow(SW_HIDE); return; } else { m_List1.MoveWindow(m_listrc); m_Chart3.ShowWindow(SW_SHOW); } SortArray(1, clerkarray, countarray); if (clerkarray.GetSize() > 12) { clerkarray.SetSize(12); countarray.SetSize(12); } CStringArray m_typearray; if (m_radio1 == 1 && (m_checkcontent == "" || m_checkcontent == "全部")) m_typearray.Add(""); else m_typearray.Add(m_checkcontent); m_Chart3.SetColumnCount(1); VARIANT var; m_Chart3.GetPlot().GetAxis(1, var).GetValueScale().SetAuto(1); COLORREF col[10] = { \ RGB(255, 0, 0), \ RGB(0, 255, 0), \ RGB(0, 0, 255), \ RGB(255, 255, 0), \ RGB(0, 255, 255), \ RGB(255, 0, 255), \ RGB(127, 0, 0), \ RGB(0, 127, 0), \ RGB(0, 0, 127), \ RGB(127, 127, 0) }; for (i = 0; i < m_typearray.GetSize(); i++) { m_Chart3.SetColumn(i + 1); m_Chart3.SetColumnLabel((LPCTSTR)m_typearray.ElementAt(i)); m_Chart3.GetPlot().GetSeriesCollection().GetItem(i + 1).GetDataPoints().GetItem(-1).GetBrush().GetFillColor().Set(GetRValue(col[i]), GetGValue(col[i]), GetBValue(col[i])); m_Chart3.GetPlot().GetSeriesCollection().GetItem(i + 1).GetPen().SetWidth(30); m_Chart3.GetPlot().GetSeriesCollection().GetItem(i + 1).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1); } int nRowCount = clerkarray.GetSize();// VARIANT var; m_Chart3.SetRowCount(nRowCount); for (int row = 1; row <= nRowCount; ++row) { m_Chart3.SetRow(row); m_Chart3.SetRowLabel(clerkarray.ElementAt(row - 1)); m_Chart3.GetDataGrid().SetData(row, 1, countarray.ElementAt(row - 1), 0); } m_Chart3.Refresh(); } else { CStringArray checkcontentarray; CArraycountarray; int pos; for ( i = 0; i < m_List1array.GetSize(); i++) { pos = ::FindArray(&checkcontentarray, m_List1array.ElementAt(i).ElementAt(8)); if (pos == -1) { checkcontentarray.Add(m_List1array.ElementAt(i).ElementAt(8)); countarray.Add(1); } else { int newcount = countarray.ElementAt(pos) + 1; countarray.SetAt(pos, newcount); } } if (checkcontentarray.GetSize() == 0) { m_List1.MoveWindow(m_listrc2); m_Chart3.ShowWindow(SW_HIDE); return; } else { m_List1.MoveWindow(m_listrc); m_Chart3.ShowWindow(SW_SHOW); } SortArray(1, checkcontentarray, countarray); if (checkcontentarray.GetSize() > 12) { checkcontentarray.SetSize(12); countarray.SetSize(12); } CStringArray m_typearray; m_typearray.Add(m_clerk); m_Chart3.SetColumnCount(1); VARIANT var; m_Chart3.GetPlot().GetAxis(1, var).GetValueScale().SetAuto(1); COLORREF col[10] = { \ RGB(255, 0, 0), \ RGB(0, 255, 0), \ RGB(0, 0, 255), \ RGB(255, 255, 0), \ RGB(0, 255, 255), \ RGB(255, 0, 255), \ RGB(127, 0, 0), \ RGB(0, 127, 0), \ RGB(0, 0, 127), \ RGB(127, 127, 0) }; for (i = 0; i < m_typearray.GetSize(); i++) { m_Chart3.SetColumn(i + 1); m_Chart3.SetColumnLabel((LPCTSTR)m_typearray.ElementAt(i)); m_Chart3.GetPlot().GetSeriesCollection().GetItem(i + 1).GetDataPoints().GetItem(-1).GetBrush().GetFillColor().Set(GetRValue(col[i]), GetGValue(col[i]), GetBValue(col[i])); m_Chart3.GetPlot().GetSeriesCollection().GetItem(i + 1).GetPen().SetWidth(30); m_Chart3.GetPlot().GetSeriesCollection().GetItem(i + 1).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1); } int nRowCount = checkcontentarray.GetSize();// VARIANT var; m_Chart3.SetRowCount(nRowCount); for (int row = 1; row <= nRowCount; ++row) { m_Chart3.SetRow(row); m_Chart3.SetRowLabel(checkcontentarray.ElementAt(row - 1)); m_Chart3.GetDataGrid().SetData(row, 1, countarray.ElementAt(row - 1), 0); } m_Chart3.Refresh(); } } void CClientForm3::OnRadio1() { // TODO: Add your control notification handler code here OnRadio9(); } void CClientForm3::OnRadio2() { // TODO: Add your control notification handler code here OnRadio9(); } void CClientForm3::OnRadio9() { // TODO: Add your control notification handler code here UpdateData(); if (2 == m_radio1) { GetDlgItem(IDC_STATIC100)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC102)->ShowWindow(SW_HIDE); GetDlgItem(IDC_COMBOclerk)->ShowWindow(SW_HIDE); GetDlgItem(IDC_COMBOcheckcontent)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC101)->ShowWindow(SW_SHOW); GetDlgItem(IDC_COMBOresult)->ShowWindow(SW_SHOW); } else { GetDlgItem(IDC_STATIC100)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC102)->ShowWindow(SW_SHOW); GetDlgItem(IDC_COMBOclerk)->ShowWindow(SW_SHOW); GetDlgItem(IDC_COMBOcheckcontent)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC101)->ShowWindow(SW_HIDE); GetDlgItem(IDC_COMBOresult)->ShowWindow(SW_HIDE); } } BEGIN_EVENTSINK_MAP(CClientForm3, MyFormView) //{{AFX_EVENTSINK_MAP(CClientForm3) ON_EVENT(CClientForm3, IDC_MSCHART3, -601 /* DblClick */, OnDblClickMschart3, VTS_NONE) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() extern BOOL g_bShowMsChart; extern HWND g_hShowChartWnd; void CClientForm3::OnDblClickMschart3() { // TODO: Add your control notification handler code here if (g_bShowMsChart) { ::SendMessage(g_hShowChartWnd, WM_CLOSE, 0, 0); return; } g_bShowMsChart = 1; CRect rc; m_Chart3.GetWindowRect(rc); ScreenToClient(rc); ShowMschart dlg; dlg.m_pParent = this; dlg.m_pChart = &m_Chart3; dlg.DoModal(); m_Chart3.MoveWindow(rc); g_bShowMsChart = 0; }