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

📄 dataeditdlg.cpp

📁 vc 和mapobjects地理信息系统组件开发 很有启发意义和参考价值
💻 CPP
字号:
// DataEditDlg.cpp : implementation file
//

#include "stdafx.h"
#include "mapper.h"
#include "DataEditDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDataEditDlg dialog

CDataEditDlg::CDataEditDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CDataEditDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDataEditDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CDataEditDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDataEditDlg)
	DDX_Control(pDX, IDC_DATA_LIST, m_oDataList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDataEditDlg, CDialog)
	//{{AFX_MSG_MAP(CDataEditDlg)
	ON_BN_CLICKED(IDC_QUIT, OnQuit)
	ON_BN_CLICKED(IDC_SAVE, OnSave)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDataEditDlg message handlers

void CDataEditDlg::OnQuit() 
{
	CDialog::OnOK();
}

BOOL CDataEditDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	Sub_Load();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDataEditDlg::Sub_Load()
{
	//显示:字符左对齐,数值右对齐
	//数值使用固定宽度;字符使用固定宽度

	CMoTableDesc table=m_rs.GetTableDesc();
	short i,count=table.GetFieldCount();
	for(i=0;i<count;i++)
	{
		switch(table.GetFieldType(i))
		{
		case moLong:
		case moDouble:
			m_oDataList.InsertColumn(i,table.GetFieldName(i),LVCFMT_RIGHT);
			m_oDataList.SetColumnWidth(i,6*table.GetFieldLength(i));
			break;
		case moString:
			m_oDataList.InsertColumn(i,table.GetFieldName(i));
			if(table.GetFieldLength(i)<50)
			{
				if(table.GetFieldLength(i)<5)
					m_oDataList.SetColumnWidth(i,50);
				else
					m_oDataList.SetColumnWidth(i,6*table.GetFieldLength(i));
			}
			else
			{
				m_oDataList.SetColumnWidth(i,100);
			}
			break;
		default:
			m_oDataList.InsertColumn(i,table.GetFieldName(i));
			m_oDataList.SetColumnWidth(i,50);
			break;
		}
	}

	CString s;
	CMoFields fields(m_rs.GetFields());	

	long index;
	m_rs.MoveFirst();
	while(!m_rs.GetEof())
	{
		for(i=0;i<count;i++)
		{
			CMoField field(fields.Item(COleVariant(table.GetFieldName(i))));
			s=field.GetValueAsString();
			if(i==0)
			{
				index=m_oDataList.InsertItem(m_oDataList.GetItemCount(),s);
			}
			else
			{
				m_oDataList.SetItemText(index,i,s);
			}
		}
		m_oDataList.SetItemData(m_oDataList.GetItemCount(),m_oDataList.GetItemCount());	//依赖插入方式
		m_rs.MoveNext();
	}

}

void CDataEditDlg::OnSave() 
{
	BeginWaitCursor();
	CMoTableDesc table=m_rs.GetTableDesc();
	int index,i,j,count=m_oDataList.m_uaEdited.GetSize();
	if(count<=0) 
	{
		AfxMessageBox("没有数据被修改!");
		return;
	}

	m_rs.MoveFirst();
	index=0;
	while(!m_rs.GetEof())
	{
		m_rs.Edit();
		for(i=0;i<count;i++)
		{
//			if(m_oDataList.GetItemData(index)==m_oDataList.m_uaEdited[i]) x
//			if(index==m_oDataList.GetItemData(m_oDataList.m_uaEdited[i]))
			if(index==m_oDataList.m_uaEdited[i]) //不能排序
			{
				CMoFields fields(m_rs.GetFields());
				for(j=0;j<table.GetFieldCount();j++)
				{
					switch(table.GetFieldType(j))
					{
					case moLong:
						SetValue(fields, TEXT(table.GetFieldName(j)), atol(m_oDataList.GetItemText(index,j)));
						break;
					case moDouble:
						SetValue(fields, TEXT(table.GetFieldName(j)), atof(m_oDataList.GetItemText(index,j)));
						break;
					case moString:
						SetValue(fields, TEXT(table.GetFieldName(j)), m_oDataList.GetItemText(index,j));
						break;
					}
				}
				m_rs.Update();
			}
		}
		m_rs.StopEditing();		
		m_rs.MoveNext();
		index++;
	}
	EndWaitCursor();

	AfxMessageBox("保存完成!");
}

⌨️ 快捷键说明

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