⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nameindexdlg.cpp

📁 程序编写环境为Visual Studio.NET 2002
💻 CPP
字号:
// NameIndexDlg.cpp : implementation file
//

#include "stdafx.h"
#include "NameGis.h"
#include "NameIndexDlg.h"
#include "MainFrm.h"
#include "NameGisView.h"
#include "AppApi.h"
#include "Crack.h"
#include "HawkView.h"

// CNameIndexDlg dialog

IMPLEMENT_DYNAMIC(CNameIndexDlg, CDialog)
CNameIndexDlg::CNameIndexDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CNameIndexDlg::IDD, pParent)
{
}

CNameIndexDlg::~CNameIndexDlg()
{
}

void CNameIndexDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_NAMEINDEX_MAINTYPE, m_MainFilter);
	DDX_Control(pDX, IDC_NAMEINDEX_CHILDCLASS, m_ChildFilter);
	DDX_Control(pDX, IDC_NAMEINDEX_NAMELIST, m_NameList);
}


BEGIN_MESSAGE_MAP(CNameIndexDlg, CDialog)
	ON_CBN_SELCHANGE(IDC_NAMEINDEX_MAINTYPE, OnCbnSelchangeNameindexMaintype)
	ON_CBN_SELCHANGE(IDC_NAMEINDEX_CHILDCLASS, OnCbnSelchangeNameindexChildclass)
	ON_EN_CHANGE(IDC_NAMEINDEX_SELECTEDNAME, OnEnChangeNameindexSelectedname)
	ON_LBN_DBLCLK(IDC_NAMEINDEX_NAMELIST, OnLbnDblclkNameindexNamelist)
END_MESSAGE_MAP()


// CNameIndexDlg message handlers
//-----------------------------------------------------------------------------------------
BOOL CNameIndexDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
	CNameGisView* pMapView = (CNameGisView*)(pMainWnd->m_wndSplitter.GetPane(0,0));
	//初始化大类过滤器	
	pMapView->LoadFilter(&m_MainFilter);
	//初始化中类过滤器
	pMapView->LoadFilter2(&m_ChildFilter, "(全部类型)", false);
	Index_LoadData("(全部类型)", "(全部子类型)");

	return TRUE; 
}
//-----------------------------------------------------------------------------------------
void CNameIndexDlg::Index_LoadData(CString szType, CString szSubType)
{
	m_NameList.ResetContent();

	CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
	CDaoDatabase* tmpDB = new CDaoDatabase;
	try
	{
		tmpDB->Open(pMainWnd->m_environment.m_szDBName);
	}
	catch (CDaoException* e)
	{
		DisplayDaoException(e);
		delete tmpDB;
		e->Delete();
		return ;
	}

	CDaoRecordset rs(tmpDB);
	try
	{
		int nIndex = 0;
		CString szSQL;
		CString szFilter = "";
		if (szSubType == "(全部子类型)")
		{
			if(szType != "(全部类型)")
			{
				szFilter = "类型='" + szType + "' ";
			}
		}
		else
		{
			szFilter = "中类型='" + szSubType + "' ";
		}
        
		if (szFilter == "")
			szSQL = "Select * From 地名索引 Where 名称 is not NULL Order By 名称";
		else
			szSQL = "Select * From 地名索引 Where " + szFilter 
			         +" and 名称 is not NULL Order By 名称";
		rs.Open(dbOpenDynaset,szSQL);

		while(!rs.IsEOF())
		{
			COleVariant var;
			var = rs.GetFieldValue("名称");
			m_NameList.AddString(CCrack::strVARIANT(var));
			rs.MoveNext();
		}

		rs.Close();
	}
	catch (CDaoException* e)
	{
		DisplayDaoException(e);
		delete tmpDB;
		e->Delete();
		return ;
	}
    
    if(tmpDB)
	{
		if(tmpDB->IsOpen())
		{
			tmpDB->Close();
		}

		delete tmpDB;
		tmpDB = NULL;
	}
}
//-----------------------------------------------------------------------------------------
void CNameIndexDlg::OnCbnSelchangeNameindexMaintype()
{
	CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
	CNameGisView* pMapView = (CNameGisView*)(pMainWnd->m_wndSplitter.GetPane(0,0));

	CString szType;
	m_MainFilter.GetLBText(m_MainFilter.GetCurSel(), szType);
	pMapView->LoadFilter2(&m_ChildFilter, szType, false);
	m_ChildFilter.SetCurSel(0);

	Index_LoadData(szType, "(全部子类型)");
}
//-----------------------------------------------------------------------------------------
void CNameIndexDlg::OnCbnSelchangeNameindexChildclass()
{
	CString szType;
	m_MainFilter.GetLBText(m_MainFilter.GetCurSel(), szType);
	CString szSubType;
	m_ChildFilter.GetLBText(m_ChildFilter.GetCurSel(), szSubType);
	Index_LoadData(szType, szSubType);
}
//-----------------------------------------------------------------------------------------
void CNameIndexDlg::OnEnChangeNameindexSelectedname()
{
	CString strName;	
	GetDlgItem(IDC_NAMEINDEX_SELECTEDNAME)->GetWindowText(strName);
	int nIndex = m_NameList.FindString(0, strName);
	if(nIndex != LB_ERR)
		m_NameList.SetCurSel(nIndex);
}
//-----------------------------------------------------------------------------------------
void CNameIndexDlg::OnLbnDblclkNameindexNamelist()
{
	int nIndex = m_NameList.GetCurSel();
	if(nIndex < 0)
		return;

	CString szName;
	m_NameList.GetText(nIndex, szName);
	CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
	pMainWnd->Position(szName);
}
//-----------------------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -