📄 nameindexdlg.cpp
字号:
// NameIndexDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Public_TGIS.h"
#include "NameIndexDlg.h"
#include "MainFrm.h"
#include "Public_TGISView.h"
#include "AppApi.h"
#include "Crack.h"
#include "HawkView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNameIndexDlg dialog
CNameIndexDlg::CNameIndexDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNameIndexDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CNameIndexDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CNameIndexDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNameIndexDlg)
DDX_Control(pDX, IDC_NAMEINDEX_NAMELIST, m_NameList);
DDX_Control(pDX, IDC_NAMEINDEX_CHILDCLASS, m_ChildFilter);
DDX_Control(pDX, IDC_NAMEINDEX_MAINTYPE, m_MainFilter);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CNameIndexDlg, CDialog)
//{{AFX_MSG_MAP(CNameIndexDlg)
ON_CBN_SELCHANGE(IDC_NAMEINDEX_MAINTYPE, OnSelchangeNameindexMaintype)
ON_CBN_SELCHANGE(IDC_NAMEINDEX_CHILDCLASS, OnSelchangeNameindexChildclass)
ON_EN_CHANGE(IDC_NAMEINDEX_SELECTEDNAME, OnChangeNameindexSelectedname)
ON_LBN_DBLCLK(IDC_NAMEINDEX_NAMELIST, OnDblclkNameindexNamelist)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNameIndexDlg message handlers
BOOL CNameIndexDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
CPublic_TGISView* pMapView = (CPublic_TGISView*)(pMainWnd->m_wndSplitter.GetPane(0,0));
//初始化大类过滤器
pMapView->LoadFilter(&m_MainFilter);
//初始化中类过滤器
pMapView->LoadFilter2(&m_ChildFilter, "(全部类型)", false);
Index_LoadData("(全部类型)", "(全部子类型)");
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//-----------------------------------------------------------------------------------------
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::OnSelchangeNameindexMaintype()
{
CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
CPublic_TGISView* pMapView = (CPublic_TGISView*)(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::OnSelchangeNameindexChildclass()
{
CString szType;
m_MainFilter.GetLBText(m_MainFilter.GetCurSel(), szType);
CString szSubType;
m_ChildFilter.GetLBText(m_ChildFilter.GetCurSel(), szSubType);
Index_LoadData(szType, szSubType);
}
//-----------------------------------------------------------------------------------------
void CNameIndexDlg::OnChangeNameindexSelectedname()
{
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::OnDblclkNameindexNamelist()
{
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 + -