亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? filterdlg.cpp

?? 使用vc開發(fā)GIS的源代碼
?? CPP
字號:
// FilterDlg.cpp : implementation file
//

#include "stdafx.h"
#include "draw.h"
#include "FilterDlg.h"
#include "data1ret.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFilterDlg dialog

CFilterDlg::CFilterDlg(CDataBaseSet* pSet,CWnd* pParent /*=NULL*/)
	: CDialog(CFilterDlg::IDD, pParent)
{

	m_pSet=pSet;
	for(int i=0;i<10;i++)
		m_strOperator[i]=(char *)malloc(4);
	m_NumbOperator=6;
	strcpy(m_strOperator[0],"<>");
	strcpy(m_strOperator[1],"<=");
	strcpy(m_strOperator[2],">=");
	strcpy(m_strOperator[3],"=");
	strcpy(m_strOperator[4],"<");
	strcpy(m_strOperator[5],">");
	m_OperatorLong[0]=2;
	m_OperatorLong[1]=2;
	m_OperatorLong[2]=2;
	m_OperatorLong[3]=1;
	m_OperatorLong[4]=1;
	m_OperatorLong[5]=1;
	if(!m_pSet->IsOpen())
		m_pSet->Open();
	m_NumbField=m_pSet->GetODBCFieldCount();
	CODBCFieldInfo fieldinfo1;
	CODBCFieldInfo& fieldinfo=fieldinfo1;
	for(i=0;i<m_NumbField;i++)
	{
		m_pSet->GetODBCFieldInfo(i,fieldinfo);
		pFieldInfo[i]=fieldinfo1;
	}
	m_strFilter=m_pSet->m_strFilter;
	m_NumbAnd=0;
	m_NumbOr=0;
}


void CFilterDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFilterDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFilterDlg, CDialog)
	//{{AFX_MSG_MAP(CFilterDlg)
	ON_BN_CLICKED(ID_AND_ADD, OnAndAdd)
	ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeList1)
	ON_LBN_SELCHANGE(IDC_LIST2, OnSelchangeList2)
	ON_BN_CLICKED(ID_OR_ADD, OnOrAdd)
	ON_BN_CLICKED(ID_AND_DEL, OnAndDelete)
	ON_BN_CLICKED(ID_OR_DEL, OnOrDelete)
	ON_BN_CLICKED(ID_OR_MODIFY, OnOrModify)
	ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFilterDlg message handlers

int CFilterDlg::BreakAndStr(CString m_str)
{
	int nChar,nChar1;
	m_str.TrimLeft();
	m_str.TrimRight();
	nChar=m_str.GetLength();
	CString m_str1=m_str;
	CString m_str2;
	int nStart;
	m_str1.MakeUpper();
	nStart=0;
	m_NumbAnd=0;
	int n;
	do
	{
		n=m_str1.Find("AND",nStart);
		if(n>=0)
		{
			if(n>nStart)
			{
				m_str2=m_str.Mid(nStart,n-nStart);
				m_str2.TrimLeft();
				m_str2.TrimRight();
				nChar1=m_str2.GetLength();
				if(m_str2.GetAt(0)==40&&m_str2.GetAt(nChar1-1)==41)
					m_strAnd[m_NumbAnd]=m_str2.Mid(1,nChar1-2);
				else
					m_strAnd[m_NumbAnd]=m_str2;
				m_NumbAnd++;
				m_str2.Empty();
			}
			nStart=n+3;
		}
		else
		{
			if(nStart<nChar)
			{
				m_str2=m_str.Mid(nStart,nChar);
				m_str2.TrimLeft();
				m_str2.TrimRight();
				nChar1=m_str2.GetLength();
				if(m_str2.GetAt(0)==40&&m_str2.GetAt(nChar1-1)==41)
					m_strAnd[m_NumbAnd]=m_str2.Mid(1,nChar1-2);
				else
					m_strAnd[m_NumbAnd]=m_str2;
				m_NumbAnd++;
				m_str2.Empty();
			}		
		}
	} while(n>=0);
	return m_NumbAnd;
}

int CFilterDlg::BreakOrStr(CString m_str)
{
	int nChar,nChar1;
	m_str.TrimLeft();
	m_str.TrimRight();
	nChar=m_str.GetLength();
	CString m_str1=m_str;
	CString m_str2;
	int nStart;
	m_str1.MakeUpper();
	nStart=0;
	m_NumbOr=0;
	int n;
	do
	{
		n=m_str1.Find(" OR ",nStart);
		if(n>=0)
		{
			if(n>nStart)
			{
				m_str2=m_str.Mid(nStart,n-nStart);
				m_str2.TrimLeft();
				m_str2.TrimRight();
				nChar1=m_str2.GetLength();
				if(m_str2.GetAt(0)==40&&m_str2.GetAt(nChar1-1)==41)
					m_strOr[m_NumbOr]=m_str2.Mid(1,nChar1-2);
				else
					m_strOr[m_NumbOr]=m_str2;
				m_NumbOr++;
				m_str2.Empty();
			}
			nStart=n+4;
		}
		else
		{
			if(nStart<nChar)
			{
				m_str2=m_str.Mid(nStart,nChar);
				m_str2.TrimLeft();
				m_str2.TrimRight();
				nChar1=m_str2.GetLength();
				if(m_str2.GetAt(0)==40&&m_str2.GetAt(nChar1-1)==41)
					m_strOr[m_NumbOr]=m_str2.Mid(1,nChar1-2);
				else
					m_strOr[m_NumbOr]=m_str2;
				m_NumbOr++;
				m_str2.Empty();
			}		
		}
	} while(n>=0);
	return m_NumbOr;
}

void CFilterDlg::OnAndAdd() 
{
	if(m_NumbAnd>=14)
	{
		AfxMessageBox("最多只能有14個.AND.子式");
		return;
	}
	CString m_str1;
	CString& p_str1=m_str1;
	BOOL yn=MakeOrStr(p_str1);
	if(yn)
	{
		m_strOr[0]=m_str1;
		m_NumbOr=1;
		plist2->ResetContent();
		plist2->AddString(m_str1);
		plist2->SetCurSel(0);
		MakeAndStr(p_str1);
		plist1->AddString(m_str1);
		plist1->SetCurSel(m_NumbAnd);
		m_strAnd[m_NumbAnd++]=m_str1;
		MakeStr();
	}
}

void CFilterDlg::OnSelchangeList1() 
{
	int n=plist1->GetCurSel();
	if(n<0)
	{
		plist2->ResetContent();
		return;
	}
	BreakOrStr(m_strAnd[n]);
	plist2->ResetContent();
	for(int i=0;i<m_NumbOr;i++)
		plist2->AddString(m_strOr[i]);
}

BOOL CFilterDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	plist1=(CListBox *)GetDlgItem(IDC_LIST1);
	plist2=(CListBox *)GetDlgItem(IDC_LIST2);
	pcom1=(CComboBox *)GetDlgItem(IDC_COMBO1);	
	pcom2=(CComboBox *)GetDlgItem(IDC_COMBO2);	
	plist1->ResetContent();
	plist2->ResetContent();
	pcom1->ResetContent();
	pcom2->ResetContent();
	for(int i=0;i<m_NumbOperator;i++)
		pcom2->AddString(m_strOperator[i]);
	for(i=0;i<m_NumbField;i++)
		pcom1->AddString(pFieldInfo[i].m_strName);
	BreakAndStr(m_strFilter);
	for(i=0;i<m_NumbAnd;i++)
		plist1->AddString(m_strAnd[i]);
	if(m_NumbAnd>0)
	{
		plist1->SetCurSel(0);
		OnSelchangeList1();
	}
	MakeStr();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CFilterDlg::OnSelchangeList2() 
{
	short nIndex;
	int n=plist2->GetCurSel();
	if(n<0)
		return;
	CString m_str2,m_str3;
	CString m_str1=m_strOr[n];
	m_str1.TrimLeft();
	m_str1.TrimRight();
	BOOL yn=0;
	for(int i=0;i<m_NumbOperator;i++)
	{
		n=m_str1.Find(m_strOperator[i],0);
		if(n>0)
		{
			nIndex=i;
			yn=1;
			break;
		}
	}
	BOOL yn1=0;
	if(yn)
	{
		pcom2->SetCurSel(nIndex);
		m_str2=m_str1.Left(n);
		for(i=0;i<m_NumbField;i++)
		{
			//if(m_str2.Compare(m_strField[i])==0)
			if(!m_str2.Compare(pFieldInfo[i].m_strName))
			{
				yn1=1;
				break;
			}
		}
		if(yn1)
			pcom1->SetCurSel(i);
		else
			pcom1->SetCurSel(-1);
		m_str3=m_str1.Mid(n+m_OperatorLong[nIndex]);
		SetDlgItemText(IDC_EDIT1,m_str3);
		OnSelchangeCombo1();
	}
	else
		SetDlgItemText(IDC_EDIT1,m_str2);
}

void CFilterDlg::OnOrAdd() 
{
	int nlist1=plist1->GetCurSel();
	if(nlist1<0)
		return;
	if(m_NumbOr>=6)
	{
		AfxMessageBox("最多只能有6個.OR.子式");
		return;
	}
	CString m_str1;
	CString& p_str1=m_str1;
	BOOL yn=MakeOrStr(p_str1);
	if(yn)
	{
		m_strOr[m_NumbOr++]=m_str1;
		plist2->AddString(m_str1);
		plist2->SetCurSel(m_NumbOr-1);
		MakeAndStr(p_str1);
		plist1->DeleteString(nlist1);
		if(nlist1==m_NumbAnd-1)
			plist1->AddString(m_str1);
		else
			plist1->InsertString(nlist1,m_str1);
		plist1->SetCurSel(nlist1);
		m_strAnd[nlist1]=m_str1;
		MakeStr();
	}
}

BOOL CFilterDlg::MakeOrStr(CString &m_str)
{
	CString m_str1;
	BOOL yn;
	int ncom1=pcom1->GetCurSel();
	if(ncom1<0)
		return FALSE;
//	m_str="(";
	m_str+=pFieldInfo[ncom1].m_strName;
	int ncom2=pcom2->GetCurSel();
	if(ncom2<0)
		return FALSE;
	m_str+=m_strOperator[ncom2];
	GetDlgItemText(IDC_EDIT1,m_str1);
	m_str1.TrimLeft();
	m_str1.TrimRight();
	int nn=m_str1.GetLength();
	if(nn<=0)
	{
		AfxMessageBox("沒有輸入字符值");
		return FALSE;
	}
	if(pFieldInfo[ncom1].m_nSQLType==1)
		yn=1;
	else
		yn=0;
	if(nn>2&&pFieldInfo[ncom1].m_nSQLType==1)
	{
		if(m_str1.GetAt(0)==39&&m_str1.GetAt(nn-1)==39)
			yn=0;
	}
	if(yn)
		m_str+="'";
	m_str+=m_str1;
	if(yn)
		m_str+="'";
//	m_str+=")";
	return TRUE;
}

BOOL CFilterDlg::MakeStr()
{
	m_strFilter.Empty();
	for(int i=0;i<m_NumbAnd;i++)
	{
		m_strAnd[i].TrimLeft();
		m_strAnd[i].TrimRight();
		if(i>0)
			m_strFilter+=" AND ";
		m_strFilter+="(";
		m_strFilter+=m_strAnd[i];
		m_strFilter+=")";
	}
	SetDlgItemText(IDC_EDIT2,m_strFilter);
	return TRUE;
}

BOOL CFilterDlg::MakeAndStr(CString& m_str)
{
	if(m_NumbOr<=0)
		return FALSE;
	m_str.Empty();
	for(int i=0;i<m_NumbOr;i++)
	{
		if(i>0)
			m_str+=" or ";
		m_str+="(";
		m_str+=m_strOr[i];
		m_str+=")";
	}
	return TRUE;
}

void CFilterDlg::OnAndDelete() 
{
	// TODO: Add your control notification handler code here
	short nlist1=plist1->GetCurSel();
	if(nlist1<0)
		return;
	plist1->DeleteString(nlist1);
	m_NumbAnd--;
	if(nlist1=m_NumbAnd)
		plist1->SetCurSel(nlist1-1);
	else
		plist1->SetCurSel(nlist1);
	for(int i=nlist1;i<m_NumbAnd;i++)
		m_strAnd[i]=m_strAnd[i+1];
	m_strAnd[m_NumbAnd].Empty();
	OnSelchangeList1();
	MakeStr();
}

void CFilterDlg::OnOrDelete() 
{
	// TODO: Add your control notification handler code here
	int nlist1=plist1->GetCurSel();
	if(nlist1<0)
		return;
	int nlist2=plist2->GetCurSel();
	if(nlist2<0)
		return;
	plist2->DeleteString(nlist2);
	m_NumbOr--;
	for(int i=nlist2;i<m_NumbOr;i++)
		m_strOr[i]=m_strOr[i+1];
	if(nlist2==m_NumbOr)
		plist2->SetCurSel(nlist2-1);
	else
		plist2->SetCurSel(nlist2);
	OnSelchangeList2();
	CString m_str1;
	CString& p_str1=m_str1;
	if(MakeAndStr(p_str1))	//如果能夠得到.AND.條件式
	{
		plist1->DeleteString(nlist1);
		if(nlist1==m_NumbAnd-1)
			plist1->AddString(m_str1);
		else
			plist1->InsertString(nlist1,m_str1);
		plist1->SetCurSel(nlist1);
		m_strAnd[nlist1]=m_str1;
	}
	else	//如果不能得到.AND.條件式
		OnAndDelete();
	MakeStr();
}

void CFilterDlg::OnOrModify() 
{
	// TODO: Add your control notification handler code here
	short nlist1=plist1->GetCurSel();
	if(nlist1<0)
		return;
	short nlist2=plist2->GetCurSel();
	if(nlist2<0)
		return;
	CString m_str1;
	CString& p_str1=m_str1;
	BOOL yn=MakeOrStr(p_str1);
	if(yn)
	{
		m_strOr[nlist2]=m_str1;
		plist2->DeleteString(nlist2);
		if(nlist2==m_NumbOr-1)
			plist2->AddString(m_str1);
		else
			plist2->InsertString(nlist2,m_str1);
		plist2->SetCurSel(nlist2);
		MakeAndStr(p_str1);
		plist1->DeleteString(nlist1);
		if(nlist1==m_NumbAnd-1)
			plist1->AddString(m_str1);
		else
			plist1->InsertString(nlist1,m_str1);
		plist1->SetCurSel(nlist1);
		m_strAnd[nlist1]=m_str1;
		MakeStr();
	}
}

void CFilterDlg::OnOK() 
{
	// TODO: Add extra validation here
	GetDlgItemText(IDC_EDIT2,m_strFilter);
	if(m_pSet->IsOpen())
		m_pSet->Close();
	CString m_str=m_pSet->m_strFilter;
	m_pSet->m_strFilter=m_strFilter;
	if(m_pSet->Open())
	{
		for(int i=0;i<10;i++)
			free(m_strOperator[i]);
		EndDialog(IDOK);
	}
	else
		m_pSet->m_strFilter=m_str;
}

void CFilterDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	for(int i=0;i<10;i++)
		free(m_strOperator[i]);
	EndDialog(IDCANCEL);
}

void CFilterDlg::OnSelchangeCombo1() 
{
	// TODO: Add your control notification handler code here
	int ncom1=pcom1->GetCurSel();
	if(ncom1<0)
	{
		pcom2->EnableWindow(1);
		return;
	}
	if(pFieldInfo[ncom1].m_nSQLType==1)	//如果是字符類型
	{
		pcom2->SetCurSel(3);
		pcom2->EnableWindow(0);
	}
	else
		pcom2->EnableWindow(1);
	
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日产欧美一区二区视频| 日韩欧美国产一区二区三区| 国产精品99精品久久免费| 日韩电影一区二区三区四区| 日本va欧美va瓶| 免费观看日韩av| 国产一区二区三区蝌蚪| 国产精品综合网| 成人激情免费电影网址| 成人丝袜高跟foot| 91色乱码一区二区三区| 色综合久久99| 欧美欧美欧美欧美| 亚洲精品在线三区| 久久久91精品国产一区二区精品| 国产亚洲一区二区三区在线观看| 亚洲国产精品二十页| 一区二区在线观看视频在线观看| 亚洲福利一二三区| 美腿丝袜亚洲三区| 欧美主播一区二区三区美女| 欧美图片一区二区三区| 日韩精品一区二区三区视频| 中文字幕国产一区| 亚洲一二三四在线观看| 韩国三级中文字幕hd久久精品| 国产成人av电影免费在线观看| 色老综合老女人久久久| 欧美一区二区三区视频免费播放 | 欧美特级限制片免费在线观看| 欧美日韩免费视频| 国产欧美中文在线| 一区二区欧美国产| 紧缚奴在线一区二区三区| 97精品视频在线观看自产线路二| 色一情一乱一乱一91av| 精品剧情在线观看| 亚洲靠逼com| 国产精品 欧美精品| 欧美亚洲国产一区在线观看网站| 精品国产一区二区三区久久影院 | 亚洲成av人片在线| 国产精华液一区二区三区| 91国偷自产一区二区开放时间| 精品国产成人系列| 午夜视频一区二区| 不卡av免费在线观看| 精品久久久久香蕉网| 亚洲国产一区二区视频| eeuss鲁片一区二区三区| 欧美日韩午夜在线视频| 国产精品久久三| 韩国三级电影一区二区| 9191久久久久久久久久久| 亚洲视频在线一区二区| 国产一区二区日韩精品| 欧美一区二区三区小说| 亚洲一区成人在线| 一本大道久久a久久精二百 | 欧美日韩高清影院| 亚洲乱码国产乱码精品精可以看 | 亚洲丰满少妇videoshd| 99精品久久99久久久久| 国产午夜一区二区三区| 国产中文字幕一区| 日韩三级电影网址| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美日韩亚洲高清一区二区| 亚洲综合视频网| 在线亚洲+欧美+日本专区| 亚洲欧洲精品天堂一级| 成人精品视频一区二区三区尤物| 26uuu精品一区二区| 黑人巨大精品欧美黑白配亚洲| 日韩欧美激情四射| 免费人成在线不卡| 日韩三级视频在线观看| 久久成人免费电影| 国产精品美女视频| 色综合久久久久久久久久久| 亚洲精品v日韩精品| 欧美色爱综合网| 热久久免费视频| 亚洲精品在线免费观看视频| 国产精品自拍网站| 国产精品乱码一区二区三区软件| 国产成人免费在线| 国产精品久久久久久久久免费相片 | 欧美伦理视频网站| 午夜精品免费在线观看| 91精品国产91热久久久做人人| 日日夜夜免费精品| 2欧美一区二区三区在线观看视频| 国产一区在线观看麻豆| 欧美韩国日本不卡| 欧美中文一区二区三区| 日韩专区在线视频| 久久久久国产精品厨房| 91小视频在线免费看| 一区二区三区免费| 日韩精品一区二区三区在线| 成人中文字幕合集| 亚洲国产综合人成综合网站| 日韩美女天天操| 91一区二区三区在线观看| 亚洲国产美女搞黄色| 欧美刺激脚交jootjob| 99免费精品视频| 丝袜国产日韩另类美女| 精品久久久三级丝袜| 色噜噜狠狠一区二区三区果冻| 免费观看在线综合| 亚洲色图制服诱惑 | 欧美性大战久久| 国产一区二区三区蝌蚪| 亚洲一区视频在线观看视频| 久久免费精品国产久精品久久久久| 日本高清不卡aⅴ免费网站| 麻豆91精品视频| 亚洲黄色免费电影| 国产亚洲一区二区三区| 91精品国产综合久久精品性色| 成人一区二区三区| 蜜桃视频一区二区| 亚洲欧美日韩在线| xnxx国产精品| 91精品黄色片免费大全| 91影院在线免费观看| 国产专区综合网| 日韩电影免费一区| 亚洲一区二区三区四区的| 国产欧美一区二区精品性| 91精品国产麻豆国产自产在线| av欧美精品.com| 国产伦精品一区二区三区免费迷 | 久久嫩草精品久久久久| 91精品国产福利在线观看| 91久久久免费一区二区| 99综合电影在线视频| 国产精品888| 国产一区二区三区久久久| 麻豆成人91精品二区三区| 日韩电影免费一区| 午夜精品久久久| 一区二区三区**美女毛片| 国产精品国产馆在线真实露脸| 久久久99精品久久| 国产日韩欧美电影| 久久久精品免费观看| 久久久亚洲精品一区二区三区 | 成人黄色一级视频| 懂色av中文字幕一区二区三区| 精品综合久久久久久8888| 美女视频一区二区| 蜜桃av噜噜一区二区三区小说| 丝瓜av网站精品一区二区 | 国产精品高清亚洲| 亚洲欧美在线视频观看| 中文字幕日本不卡| 亚洲精品一卡二卡| 一片黄亚洲嫩模| 天天色天天操综合| 美女视频黄 久久| 韩国精品主播一区二区在线观看| 狠狠久久亚洲欧美| 不卡免费追剧大全电视剧网站| 91视频免费看| 欧美中文字幕一区| 日韩精品一区二区三区视频播放 | 一区二区三区在线看| 亚洲精品福利视频网站| 亚洲福中文字幕伊人影院| 免费的国产精品| 国产精品综合久久| 色综合亚洲欧洲| 欧美丰满嫩嫩电影| 久久无码av三级| 日韩一区在线播放| 日本美女一区二区三区视频| 久久不见久久见免费视频7 | 欧美一区二区三区小说| 国产午夜亚洲精品不卡| 亚洲精品菠萝久久久久久久| 日产欧产美韩系列久久99| 久久99精品一区二区三区三区| 成人av在线网站| 91精品综合久久久久久| 国产日韩欧美精品在线| 亚洲永久免费视频| 国产在线精品一区二区三区不卡| av激情综合网| 欧美videossexotv100| 亚洲欧美日韩一区二区| 久久99国产精品麻豆| 91成人免费网站| 国产亚洲精品精华液| 日韩国产高清在线| www.日韩大片| 久久亚洲一级片| 日日噜噜夜夜狠狠视频欧美人|