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

📄 editdlg.cpp

📁 在WinCe平台上开发的数据库管理程序,里面有一个可排序列表控件的实现和Excel的CVS文件的读写类
💻 CPP
字号:
// EditDlg.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "EditDlg.h"
#include "dbase\CDataManage.h"
#include "SortList.h"

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

/////////////////////////////////////////////////////////////////////////////
// CEditDlg dialog


CEditDlg::CEditDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CEditDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CEditDlg)
	//}}AFX_DATA_INIT
}


void CEditDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEditDlg)
	DDX_Control(pDX, IDC_LIST_BROWSE, m_ctlList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CEditDlg, CDialog)
	//{{AFX_MSG_MAP(CEditDlg)
	ON_BN_CLICKED(IDC_BUTTON_SEARCH1, OnButtonSearch1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEditDlg message handlers

BOOL CEditDlg::OnInitDialog() 
{
	CSortList *list = &m_ctlList;
	CString strPrompt;
	WORD i;
	WORD wSortType[1024];

	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	for(i = 0; i < m_selfCig->GetPropNum(); i++)
	{
		switch(m_selfCig->GetPropType(i))
		{
		case FIELD_TYPE_STR:
			strPrompt.Format(_T("%d:字符型"), i);
			wSortType[i] = CSL_SORT_STR;
			break;
		case FIELD_TYPE_LONG:
			strPrompt.Format(_T("%d:长整型"), i);
			wSortType[i] = CSL_SORT_LONG;
			break;
		case FIELD_TYPE_DOT:
			strPrompt.Format(_T("%d:小数型"), i);
			wSortType[i] = CSL_SORT_FLOAT;
			break;
		case FIELD_TYPE_DATE:
			strPrompt.Format(_T("%d:日期型"), i);
			wSortType[i] = CSL_SORT_STR;
			break;
		default:
			strPrompt.Format(_T("%d:未知类型"), i);
			wSortType[i] = CSL_SORT_STR;
			break;
		}
		list->InsertColumn(i, strPrompt, LVCFMT_LEFT, 70, i);
	}

	LoadAllData();
		
	list->Sort(0,TRUE, wSortType, m_selfCig->GetPropNum());

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

//列出指定的记录
WORD CEditDlg::LoadData()
{
	CSortList *list = &m_ctlList;
	CString strPrompt;
	LONG	lPrompt;
	FLOAT	fPrompt;
	CTime	tPrompt;
	WORD i;
	WORD j;
	WORD wRetCode;
	int indexBuf[2048];
	CString str0,str1;
	LONG	l0;
	FLOAT	f0,f1;
	CTime	t0(2001,12,14,0,0,0);
	CTime	t1(2001,12,18,0,0,0);
	str1 = _T("IC0001");
	str0 = _T("A0001");
	l0 = 2;
	f0 = 6.0;
	f1 =10.0;
	
	
	//查找第一个字段为_T("A0001")的所有记录
	SEARCH_ALL(m_selfCig, 0, str0, CDM_FIND_EQU, indexBuf, 1024);//=A0002
	SEARCH_CON(m_selfCig, 1, t0, CDM_FIND_YEAR_MONTH_EQU, indexBuf);
	

	i = 0;
	while(indexBuf[i] != -1)
	{
		wRetCode = m_selfCig->Seek(CEDB_SEEK_BEGINNING, indexBuf[i]);
		if(wRetCode != ID_SUCCESSFULLY)
		{
			break;
		}

		for(j = 0; j < m_selfCig->GetPropNum(); j++)
		{
			switch(m_selfCig->GetPropType(j))
			{
			case FIELD_TYPE_STR:
				m_selfCig->GetPropData(j, strPrompt);
				break;
			case FIELD_TYPE_LONG:
				m_selfCig->GetPropData(j, &lPrompt);
				strPrompt.Format(_T("%d"), lPrompt);
				break;
			case FIELD_TYPE_DOT:
				m_selfCig->GetPropData(j, &fPrompt);
				strPrompt.Format(_T("%.2f"), fPrompt);
				break;
			case FIELD_TYPE_DATE:
				m_selfCig->GetPropData(j, tPrompt);
				strPrompt.Format(_T("%d年%d月%d日%d时%d分%d秒"), 
					tPrompt.GetYear(), tPrompt.GetMonth(), tPrompt.GetDay(),
					tPrompt.GetHour(), tPrompt.GetMinute(), tPrompt.GetSecond());
				break;
			default:
				strPrompt.Format(_T("未知类型j"), j);
				break;
			}

			if(j == 0)
			{
				list->InsertItem(i, strPrompt);
			}
			else
			{
				list->SetItem(i, j, LVIF_TEXT, strPrompt, 0, 0, 0, i);
			}
		}
		list->SetItemData(i,i);
		i++;
	}

	return 1;
}

WORD CEditDlg::LoadAllData()
{
	CSortList *list = &m_ctlList;
	CString strPrompt;
	LONG	lPrompt;
	FLOAT	fPrompt;
	CTime	tPrompt;
	WORD i;
	WORD j;
	
	m_selfCig->Seek(CEDB_SEEK_BEGINNING, 0);
	for(i = 0; i < m_selfCig->GetCurRecrodNum(); i++)
	{		
		for(j = 0; j < m_selfCig->GetPropNum(); j++)
		{
			switch(m_selfCig->GetPropType(j))
			{
			case FIELD_TYPE_STR:
				m_selfCig->GetPropData(j, strPrompt);
				break;
			case FIELD_TYPE_LONG:
				m_selfCig->GetPropData(j, &lPrompt);
				strPrompt.Format(_T("%d"), lPrompt);
				break;
			case FIELD_TYPE_DOT:
				m_selfCig->GetPropData(j, &fPrompt);
				strPrompt.Format(_T("%.2f"), fPrompt);
				break;
			case FIELD_TYPE_DATE:
				m_selfCig->GetPropData(j, tPrompt);
				strPrompt.Format(_T("%d年%d月%d日%d时%d分%d秒"), 
					tPrompt.GetYear(), tPrompt.GetMonth(), tPrompt.GetDay(),
					tPrompt.GetHour(), tPrompt.GetMinute(), tPrompt.GetSecond());
				break;
			default:
				strPrompt.Format(_T("未知类型j"), j);
				break;
			}

			if(j == 0)
			{
				list->InsertItem(i, strPrompt);
			}
			else
			{
				list->SetItem(i, j, LVIF_TEXT, strPrompt, 0, 0, 0, i);
			}
			list->SetItemData(i,i);
		}
		m_selfCig->Seek(CEDB_SEEK_CURRENT, 1);
	}
	return 1;
}

void CEditDlg::OnButtonSearch1() 
{
	// TODO: Add your control notification handler code here
	CListCtrl *list = (CListCtrl *)GetDlgItem(IDC_LIST_BROWSE);
	list->DeleteAllItems();
	LoadData();
}


⌨️ 快捷键说明

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