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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? databaseview.cpp

?? 使用vc開發GIS的源代碼
?? CPP
字號:
// DatabaseView.cpp : implementation file
//

#include "stdafx.h"
#include "draw.h"
#include "drawdoc.h"
#include "selectdatadlg.h"
#include "DatabaseView.h"
#include "data1dlg.h"
#include "sortdlg.h"
#include "linkdlg.h"
#include "filterdlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDatabaseView

IMPLEMENT_DYNCREATE(CDatabaseView, CScrollView)

CDatabaseView::CDatabaseView()
{
	nIndex=-1;
	sizeTotal.cx=sizeTotal.cy=300;
	sizePage.cx=sizePage.cy=300;
	sizeLine.cx=sizeLine.cy=10;
	nSelectData=0;
}

CDatabaseView::~CDatabaseView()
{
}


BEGIN_MESSAGE_MAP(CDatabaseView, CScrollView)
	//{{AFX_MSG_MAP(CDatabaseView)
	ON_WM_SIZE()
	ON_WM_LBUTTONDOWN()
	ON_COMMAND(ID_RECORD_ADD, OnRecordAdd)
	ON_COMMAND(ID_RECORD_MODIFY, OnRecordModify)
	ON_COMMAND(ID_RECORD_FILTER, OnRecordFilter)
	ON_COMMAND(ID_RECORD_SORT, OnRecordSort)
	ON_COMMAND(ID_RECORD_DELETE, OnRecordDelete)
	ON_COMMAND(ID_RECORD_LINK, OnRecordLink)
	ON_COMMAND(ID_RECORD_DELETE_ALL, OnRecordDeleteAll)
	ON_COMMAND(ID_FILE_SELECT, OnFileSelect)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDatabaseView drawing

void CDatabaseView::OnInitialUpdate()
{
	
	CDrawDoc* pDoc = GetDocument();
	m_pSet1=&pDoc->m_data1;
	m_pSet=pDoc->GetDataSet(nSelectData);
	m_pSet=&pDoc->m_data1;
	//	m_pSet2=(CRecordSet *)&pDoc->m_data1;
	m_pLinkSet1=&pDoc->m_linkdata1;
	Init1();
	Init2();
	CScrollView::OnInitialUpdate();
	SetScrollSizes(MM_TEXT, sizeTotal,sizePage,sizeLine);
	//CSize sizeTotal;
}

void CDatabaseView::Init1()
{
	TEXTMETRIC tm;
	CDC* dc=GetDC();
	dc->GetTextMetrics(&tm);
	ReleaseDC(dc);
	nCharHeight=tm.tmHeight+2;
	nCharWidth=tm.tmAveCharWidth+2;
	if(m_pSet->IsOpen())
		m_pSet->Close();
	m_pSet->Open();
	nField=m_pSet->GetODBCFieldCount();
	CODBCFieldInfo fieldinfo1;
	CODBCFieldInfo& fieldinfo=fieldinfo1;
	for(int i=0;i<nField;i++)
	{
		m_pSet->GetODBCFieldInfo(i,fieldinfo);
		nFieldWide[i]=(short)fieldinfo1.m_nPrecision;
	}
	nScreenWide=0;
	nFieldStart[0]=0;
	for(i=0;i<nField;i++)
	{
		nScreenWide=nScreenWide+nFieldWide[i]*nCharWidth;
		nFieldStart[i+1]=nFieldStart[i]+nFieldWide[i]*nCharWidth;
	}
	sizeTotal.cx=nScreenWide;
	sizeLine.cx=nCharWidth*5;
}

void CDatabaseView::Init2()
{
	if(m_pSet->IsOpen())
		m_pSet->Close();
	m_pSet->Open();
	if(m_pSet->IsBOF())
		nRecord=0;
	else
	{
		m_pSet->MoveFirst();
		nRecord=0;
		while(!m_pSet->IsEOF())
		{
			m_pSet->MoveNext();
			nRecord++;
		}
	}
	nScreenHeight=nRecord*nCharHeight;
	if(nScreenHeight==0)
		nScreenHeight=20;
	sizeTotal.cy=nScreenHeight;
	sizeLine.cy=nCharHeight+2;
	if(nRecord>0)
	{
		if(nIndex<1||nIndex>nRecord)
			nIndex=1;
	}
	else 
		nIndex=-1;
//	SetScrollSizes(MM_TEXT, sizeTotal,sizePage,sizeLine);
}



void CDatabaseView::OnDraw(CDC* pDC)
{
	CRect r1;
	CDrawDoc* pDoc = GetDocument();
	CPen pen1(0,1,RGB(255,0,0));
//	CPen* pOldPen=ht.SelectObject(&pen1);
	pDC->SetTextColor(RGB(255,0,0));
	CString c1;
	CString& c2=c1;
	pDC->SetMapMode(1);	
	m_pSet->MoveFirst();
	for(int i=0;i<nRecord;i++)
	{
		for(int j=0;j<nField;j++)
		{
			m_pSet->GetFieldValue(j,c2);
			pDC->TextOut(nFieldStart[j],i*nCharHeight,c1);
		}
		m_pSet->MoveNext();
	}
	if(nIndex>0)
	{
		GetRect(nIndex,&r1);
		pDC->InvertRect(&r1);
	}
	//	pDC->SelectObject(pOldPen);
}

/////////////////////////////////////////////////////////////////////////////
// CDatabaseView diagnostics

#ifdef _DEBUG
void CDatabaseView::AssertValid() const
{
	CScrollView::AssertValid();
}

void CDatabaseView::Dump(CDumpContext& dc) const
{
	CScrollView::Dump(dc);
}

CDrawDoc* CDatabaseView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDrawDoc)));
	return (CDrawDoc*)m_pDocument;
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CDatabaseView message handlers

void CDatabaseView::OnSize(UINT nType, int cx, int cy) 
{
	CScrollView::OnSize(nType, cx, cy);
	// TODO: Add your message handler code here
	sizePage.cx=cx;
	sizePage.cy=cy;
	SetScrollSizes(MM_TEXT, sizeTotal,sizePage,sizeLine);
}

void CDatabaseView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CRect r1;
	CClientDC ht(this);
	OnPrepareDC(&ht);
	ht.DPtoLP(&point);
	int nIndex1=point.y/nCharHeight+1;
	if(nIndex1!=nIndex&&nIndex1>0&&nIndex1<=nRecord)
	{
		if(nIndex>0)
		{
			GetRect(nIndex,&r1);
			ht.InvertRect(&r1);
		}
		GetRect(nIndex1,&r1);
		ht.InvertRect(&r1);
		nIndex=nIndex1;
	}
	CScrollView::OnLButtonDown(nFlags, point);
}


void CDatabaseView::GetRect(int nRow, CRect *r1)
{
	r1->left=0;
	r1->right=nFieldStart[nField-1]+nFieldWide[nField-1]*nCharWidth;
	r1->top=(nRow-1)*nCharHeight;
	r1->bottom=r1->top+nCharHeight;
}

void CDatabaseView::OnRecordAdd() 
{
	CDrawDoc* pDoc=GetDocument();
	if(m_pSet->IsOpen())
		m_pSet->Close();
	int ID=pDoc->DataInfo[nSelectData].only_ID;
	if(ID==1)
	{
		CData1Dlg dlg(m_pSet1,1,GetOnlyID());
		if(dlg.DoModal()==IDOK)
		{
			Init2();
			SetScrollSizes(MM_TEXT, sizeTotal,sizePage,sizeLine);
			UpdateWindow();
			Invalidate();
		}
	}
	else if(ID==2)
	{
		CData1Dlg dlg(m_pSet1,1,GetOnlyID());
		if(dlg.DoModal()==IDOK)
		{
			Init2();
			SetScrollSizes(MM_TEXT, sizeTotal,sizePage,sizeLine);
			UpdateWindow();
			Invalidate();
		}
	}
}


int CDatabaseView::GetOnlyID()
{
	int *Index1,id;
	Index1= GetDocument()->m_Index;
	CString m_str1=m_pSet->m_strFilter;
	m_pSet->m_strFilter="";
	if(m_pSet->IsOpen())
		m_pSet->Close();
	m_pSet->Open();
	if(m_pSet->IsEOF())
		return 0;
	for(int i=0;i<20000;i++)
		Index1[i]=0;
	CString c1;
	CString& c2=c1;
	i=0;
	m_pSet->GetFieldValue(i,c2);
	while(!m_pSet->IsEOF())
	{
		Index1[atoi(c1)]=1;
		m_pSet->MoveNext();
	}
	for(i=0;i<20000;i++)
	{
		if(Index1[i]==0)
		{
			id=i;
			break;
		}
	}
	m_pSet->Close();
	m_pSet->m_strFilter=m_str1;
	m_pSet->Open();
	return id;
}


void CDatabaseView::OnRecordModify() 
{
	CDrawDoc* pDoc=GetDocument();
	if(nIndex<=0&&nIndex>nRecord)
		return;
	CString m_str1=m_pSet->m_strFilter;
	CString m_str2=m_pSet->m_strSort;
	if(m_pSet->IsOpen())
		m_pSet->Close();
	int ID=pDoc->DataInfo[nSelectData].only_ID;
	if(ID==1)
	{
		if(m_pSet1->IsOpen())
			m_pSet1->Close();
		m_pSet1->m_strFilter=m_str1;
		m_pSet1->m_strSort=m_str2;
		m_pSet1->Open();
		m_pSet1->MoveFirst();
		m_pSet1->Move(nIndex-1);
		CData1Dlg dlg(m_pSet1,0,0);
		if(dlg.DoModal())
		{
			Init2();
			SetScrollSizes(MM_TEXT, sizeTotal,sizePage,sizeLine);
			Invalidate();
		}
	}
	else if(ID==2)
	{
/*		if(m_pSet2->IsOpen())
			m_pSet2->Close();
		m_pSet2->m_strFilter=m_str1;
		m_pSet2->m_strSort=m_str2;
		m_pSet2->Open();
		m_pSet2->MoveFirst();
		m_pSet2->Move(nIndex-1);
		CData2Dlg dlg(m_pSet2,0,0);*/
		CData1Dlg dlg(m_pSet1,0,0);

		if(dlg.DoModal())
		{
			Init2();
			SetScrollSizes(MM_TEXT, sizeTotal,sizePage,sizeLine);
			Invalidate();
		}
	}
}

void CDatabaseView::OnRecordFilter() 
{
	CFilterDlg dlg(m_pSet);
	if(dlg.DoModal()==IDOK)
	{
		m_pSet->m_strFilter=dlg.m_strFilter;
		Init2();
		SetScrollSizes(MM_TEXT, sizeTotal,sizePage,sizeLine);
		Invalidate();
	}
}

void CDatabaseView::OnRecordSort() 
{
	CSortDlg pDg1(m_pSet);
	if(pDg1.DoModal()==IDOK)
	{
		if(m_pSet->IsOpen())
			m_pSet->Close();
		m_pSet->m_strSort=pDg1.m_strSort;
		m_pSet->Open();
		Invalidate();
	}
}

void CDatabaseView::OnRecordDelete() 
{
	if(nIndex<1||nIndex>nRecord)
		return;
	if(!m_pSet->IsOpen())
		m_pSet->Open();
	m_pSet->MoveFirst();
	m_pSet->Move(nIndex-1);
	m_pSet->Delete();
	CPoint p1;
	p1=GetScrollPosition();
	sizeTotal.cy-=nCharHeight;
	if(nIndex==nRecord)
		nIndex--;
	Init2();
	SetScrollSizes(MM_TEXT, sizeTotal,sizePage,sizeLine);
	Invalidate();
	ScrollToPosition(p1);	
}

void CDatabaseView::OnRecordLink() 
{
	CDrawDoc* pDoc=GetDocument();
	m_pSet1->MoveFirst();
	m_pSet1->Move(nIndex-1);
	CString m_str;
	m_str="(database_id=";
	short lb=pDoc->GetDataID(nSelectData);
	if(lb<0)
		return;
	char p1[9];
	sprintf(p1,"%d",lb);
	m_str+=p1;
	m_str+=") AND (record_id=";
	int ID=m_pSet->GetID();
	sprintf(p1,"%d",ID);
	m_str+=p1;
	m_str+=")";
	m_pLinkSet1->m_strFilter=m_str;
	CLinkDlg pDlg1(GetDocument(),m_pLinkSet1,1,lb,ID);
	pDlg1.DoModal();
}

void CDatabaseView::OnRecordDeleteAll() 
{
	if(!m_pSet->IsOpen())
		m_pSet->Open();
	for(int i=nRecord-1;i>=0;i--)
	{
		m_pSet->MoveFirst();
		m_pSet->Move(i);
		m_pSet->Delete();
	}
	nIndex=-1;
	Init2();
	SetScrollSizes(MM_TEXT, sizeTotal,sizePage,sizeLine);
	Invalidate();
}

void CDatabaseView::OnFileSelect() 
{
	CDrawDoc* pDoc = GetDocument();
	CSelectDataDlg pDlg1(pDoc,nSelectData);
	if(pDlg1.DoModal()==IDOK)
	{
		int nn=pDlg1.m_Index;
		if(nn!=nSelectData)
		{
			if(m_pSet->IsOpen())
				m_pSet->Close();
			nSelectData=nn;
			m_pSet=pDoc->GetDataSet(nSelectData);
			m_pSet->Open();
			nIndex=-1;
			Init1();
			Init2();
			SetScrollSizes(MM_TEXT, sizeTotal,sizePage,sizeLine);
			Invalidate();
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕av一区二区三区高| 欧美乱妇20p| 久久99精品国产91久久来源| 亚洲电影在线播放| 日韩专区一卡二卡| 开心九九激情九九欧美日韩精美视频电影 | 欧洲亚洲精品在线| 欧美日韩中文字幕精品| 欧美日韩一区二区在线观看| 这里是久久伊人| 精品国产一区二区三区久久影院 | 91免费在线播放| 91麻豆福利精品推荐| 在线日韩国产精品| 91精品国产91久久综合桃花| 日韩欧美一级特黄在线播放| 久久精品视频网| 亚洲精选视频在线| 免费一级欧美片在线观看| 国产又黄又大久久| 99精品视频在线观看免费| 欧美日韩二区三区| 国产日韩av一区| 亚洲一区二区三区影院| 麻豆国产欧美一区二区三区| 成人中文字幕电影| 欧美巨大另类极品videosbest | 偷窥少妇高潮呻吟av久久免费 | 国产精品网曝门| 亚洲成人动漫精品| 国产一区二区三区综合| 成人深夜福利app| 777欧美精品| 欧美国产精品专区| 天天操天天综合网| 成人三级伦理片| 日韩视频国产视频| 亚洲男人天堂av| 国产剧情一区在线| 欧美精品 日韩| 中文字幕一区二区三区四区| 日韩av电影免费观看高清完整版在线观看| 国产成人精品一区二区三区四区| 欧美探花视频资源| 久久精品视频一区二区三区| 亚洲二区视频在线| 91蜜桃婷婷狠狠久久综合9色| 欧美一级生活片| 一个色综合av| av电影在线观看完整版一区二区| 6080午夜不卡| 亚洲午夜一区二区三区| 成人性生交大片免费看中文| 精品福利av导航| 日本亚洲最大的色成网站www| 91国产丝袜在线播放| 亚洲视频一二三| 国产成人鲁色资源国产91色综| 欧美一二三四在线| 亚洲成在线观看| 欧美日韩在线播放三区| 亚洲一区在线观看网站| 色系网站成人免费| 自拍av一区二区三区| 岛国精品在线观看| 亚洲国产精品成人综合色在线婷婷| 久久精品国产精品亚洲红杏 | 色综合婷婷久久| 国产精品女主播在线观看| 国产不卡视频一区二区三区| 久久久久久**毛片大全| 高清视频一区二区| 国产精品传媒入口麻豆| 成人免费精品视频| 亚洲免费观看高清| 欧美午夜一区二区三区| 午夜天堂影视香蕉久久| 日韩一级完整毛片| 精品一区二区在线看| 精品国产一区二区在线观看| 国产一区二区三区精品视频| 国产色产综合色产在线视频| 国产福利精品一区二区| 亚洲视频一区二区在线观看| 欧美综合久久久| 日日摸夜夜添夜夜添国产精品| 日韩欧美黄色影院| 国产精一区二区三区| 中文字幕一区二区三区不卡在线| 不卡一区中文字幕| 一区二区三区成人| 欧美一区中文字幕| 国产乱码精品一区二区三区av| 中文乱码免费一区二区| 99精品国产视频| 视频在线观看国产精品| 国产亚洲欧洲一区高清在线观看| 成人福利在线看| 亚洲国产美国国产综合一区二区| 日韩美女主播在线视频一区二区三区| 国产在线视频一区二区| 亚洲欧美日韩国产一区二区三区| 欧美老肥妇做.爰bbww视频| 国产在线一区二区综合免费视频| 综合电影一区二区三区 | 国产三级欧美三级| 色婷婷综合久久久中文一区二区| 亚洲va在线va天堂| 久久精品视频免费| 欧美一区二区三区四区高清| 丁香六月久久综合狠狠色| 亚洲成人在线观看视频| 国产午夜精品在线观看| 欧美疯狂性受xxxxx喷水图片| 国模娜娜一区二区三区| 亚洲成人www| 亚洲乱码国产乱码精品精小说| 精品国产免费一区二区三区四区| 99vv1com这只有精品| 日韩**一区毛片| 夜夜揉揉日日人人青青一国产精品| 精品噜噜噜噜久久久久久久久试看| 色综合中文字幕| 成人精品国产免费网站| 久久国产尿小便嘘嘘尿| 亚洲午夜在线观看视频在线| 国产亚洲精品bt天堂精选| 91精品国产一区二区三区| 成人av网站在线观看免费| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品国产自产拍在线| 欧美久久一区二区| 欧美色网一区二区| 色国产精品一区在线观看| 国产69精品久久久久毛片| 老司机精品视频在线| 日韩国产欧美在线视频| 亚洲国产精品综合小说图片区| 中文字幕在线一区| 中文字幕av一区二区三区免费看| 精品国产精品一区二区夜夜嗨| 91超碰这里只有精品国产| 在线一区二区三区做爰视频网站| 北条麻妃国产九九精品视频| 国产精品一区在线观看你懂的| 精品一区中文字幕| 国产乱码精品1区2区3区| 精品一区免费av| 国产精品一线二线三线| 国产成人一级电影| 成人av免费观看| 91麻豆精品在线观看| 在线观看网站黄不卡| 欧美日韩国产一区二区三区地区| 欧美在线你懂的| 欧美日韩精品电影| 日韩视频免费观看高清完整版在线观看 | 国产91精品精华液一区二区三区| 国产在线观看一区二区| 国产精品一级片在线观看| 国产精品资源站在线| 成人精品视频一区二区三区| 成人国产免费视频| 97se狠狠狠综合亚洲狠狠| 91看片淫黄大片一级| 在线看日韩精品电影| 91精品国产一区二区人妖| 精品国产亚洲在线| 中文欧美字幕免费| 亚洲尤物在线视频观看| 五月天中文字幕一区二区| 免费人成黄页网站在线一区二区| 久久精品国产99| 成人午夜视频在线| 欧美日韩一区 二区 三区 久久精品| 欧美日韩日日骚| 久久免费午夜影院| 亚洲女厕所小便bbb| 日本大胆欧美人术艺术动态| 国产在线播放一区| 在线观看不卡视频| 欧美v国产在线一区二区三区| 国产午夜精品一区二区三区视频| 亚洲人成网站影音先锋播放| 日韩综合小视频| av在线播放一区二区三区| 欧美日韩不卡视频| 欧美国产丝袜视频| 免费看欧美女人艹b| 94色蜜桃网一区二区三区| 欧美久久久久久蜜桃| 亚洲一卡二卡三卡四卡无卡久久 | 国产精品无人区| 日韩和欧美一区二区三区| 国产精品99久久久久久似苏梦涵| 91久久精品午夜一区二区| 久久美女艺术照精彩视频福利播放 | 国产呦萝稀缺另类资源| 91网上在线视频| 久久久.com|