// 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;
	}
	CArray<CStringArray, CStringArray>List1array;
	CArray<CStringArray, CStringArray>List2array;

	DataToArray(&List1array, &List2array, &m_List1array);
	m_combocheckcontent.AddString("ȫ��");
	for (int 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 (...)
	{
	}
}

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<int, int>&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()
{
	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;
			CArray<int, int>countarray;
			int pos;
			for (int 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;
			CArray<int, int>countarray;
			int pos;
			for (int 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;
		CArray<int, int>countarray;
		int pos;
		for (int 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;
		CArray<int, int>countarray;
		int pos;
		for (int 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;
}