Data1View.cpp
上传用户:yklx818
上传日期:2013-04-13
资源大小:459k
文件大小:6k
源码类别:

GIS编程

开发平台:

Visual C++

  1. // Data1View.cpp : implementation of the CData1View class
  2. //
  3. #include "stdafx.h"
  4. #include "Data1.h"
  5. #include "Data1Set.h"
  6. #include "Data1Doc.h"
  7. #include "Data1View.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CData1View
  15. IMPLEMENT_DYNCREATE(CData1View, CRecordView)
  16. BEGIN_MESSAGE_MAP(CData1View, CRecordView)
  17. //{{AFX_MSG_MAP(CData1View)
  18. ON_COMMAND(ID_RECORD_ADD, OnRecordAdd)
  19. ON_COMMAND(ID_RECORD_MODIFY, OnRecordModify)
  20. ON_COMMAND(ID_RECORD_DELETE, OnRecordDelete)
  21. ON_COMMAND(ID_RECORD_FILTER, OnRecordFilter)
  22. ON_COMMAND(ID_RECORD_SORT, OnRecordSort)
  23. ON_COMMAND(ID_RECORD_SAVE, OnRecordSave)
  24. //}}AFX_MSG_MAP
  25. // Standard printing commands
  26. ON_COMMAND(ID_FILE_PRINT, CRecordView::OnFilePrint)
  27. ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView::OnFilePrint)
  28. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView::OnFilePrintPreview)
  29. END_MESSAGE_MAP()
  30. /////////////////////////////////////////////////////////////////////////////
  31. // CData1View construction/destruction
  32. CData1View::CData1View()
  33. : CRecordView(CData1View::IDD)
  34. {
  35. //{{AFX_DATA_INIT(CData1View)
  36. m_pSet = NULL;
  37. //}}AFX_DATA_INIT
  38. // TODO: add construction code here
  39. }
  40. CData1View::~CData1View()
  41. {
  42. }
  43. void CData1View::DoDataExchange(CDataExchange* pDX)
  44. {
  45. CRecordView::DoDataExchange(pDX);
  46. //{{AFX_DATA_MAP(CData1View)
  47. DDX_FieldText(pDX, IDC_EDIT1, m_pSet->m_only_id, m_pSet);
  48. DDX_FieldText(pDX, IDC_EDIT2, m_pSet->m_city_name, m_pSet);
  49. DDX_FieldText(pDX, IDC_EDIT3, m_pSet->m_population, m_pSet);
  50. DDX_FieldText(pDX, IDC_EDIT4, m_pSet->m_area, m_pSet);
  51. DDX_FieldText(pDX, IDC_EDIT5, m_pSet->m_industry, m_pSet);
  52. DDX_FieldText(pDX, IDC_EDIT6, m_pSet->m_translate, m_pSet);
  53. DDX_FieldText(pDX, IDC_EDIT7, m_pSet->m_enviroment, m_pSet);
  54. //}}AFX_DATA_MAP
  55. }
  56. BOOL CData1View::PreCreateWindow(CREATESTRUCT& cs)
  57. {
  58. // TODO: Modify the Window class or styles here by modifying
  59. //  the CREATESTRUCT cs
  60. return CRecordView::PreCreateWindow(cs);
  61. }
  62. void CData1View::OnInitialUpdate()
  63. {
  64. m_pSet = &GetDocument()->m_data1Set;
  65. CRecordView::OnInitialUpdate();
  66. GetParentFrame()->RecalcLayout();
  67. ResizeParentToFit();
  68. }
  69. /////////////////////////////////////////////////////////////////////////////
  70. // CData1View printing
  71. BOOL CData1View::OnPreparePrinting(CPrintInfo* pInfo)
  72. {
  73. // default preparation
  74. return DoPreparePrinting(pInfo);
  75. }
  76. void CData1View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  77. {
  78. // TODO: add extra initialization before printing
  79. }
  80. void CData1View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  81. {
  82. // TODO: add cleanup after printing
  83. }
  84. /////////////////////////////////////////////////////////////////////////////
  85. // CData1View diagnostics
  86. #ifdef _DEBUG
  87. void CData1View::AssertValid() const
  88. {
  89. CRecordView::AssertValid();
  90. }
  91. void CData1View::Dump(CDumpContext& dc) const
  92. {
  93. CRecordView::Dump(dc);
  94. }
  95. CData1Doc* CData1View::GetDocument() // non-debug version is inline
  96. {
  97. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CData1Doc)));
  98. return (CData1Doc*)m_pDocument;
  99. }
  100. #endif //_DEBUG
  101. /////////////////////////////////////////////////////////////////////////////
  102. // CData1View database support
  103. CRecordset* CData1View::OnGetRecordset()
  104. {
  105. return m_pSet;
  106. }
  107. /////////////////////////////////////////////////////////////////////////////
  108. // CData1View message handlers
  109. void CData1View::OnRecordAdd() 
  110. {
  111. // TODO: Add your command handler code here
  112. m_pSet->AddNew(); //在记录集合中增加一条记录
  113. m_bAdding=TRUE;   //标识正在进行增加记录操作
  114. UpdateData(FALSE);//将新增空记录的内容转移到视图的控制中
  115. }
  116. void CData1View::OnRecordModify() 
  117. {
  118. // TODO: Add your command handler code here
  119. m_pSet->Edit();           //使当前记录处于编辑状态
  120. UpdateData(TRUE);         //在视图中对话框控制的内容修改记录集合的当前记录
  121. if(m_pSet->CanUpdate())   //如果能够对数据源进行更新
  122. m_pSet->Update();     //更新数据源
  123. m_pSet->Requery();        //重新产生数据源
  124. UpdateData(FALSE);        //以记录集合中当前记录的内容修改视图中的对话框控制
  125. }
  126. void CData1View::OnRecordDelete() 
  127. {
  128. // TODO: Add your command handler code here
  129. m_pSet->Delete();                //删除记录集合的当前记录
  130. m_pSet->MoveNext();
  131. if(m_pSet->IsEOF())              //如果超出记录集合的范围
  132. m_pSet->MoveLast();
  133. if(m_pSet->IsBOF())              //如果记录指针在第一条记录前,即记录集合中无任何记录
  134. m_pSet->SetFieldNull(NULL);  //将记录设置为空
  135. UpdateData(FALSE);               //以记录集合当前记录的内容修改视图中的控制
  136. }
  137. void CData1View::OnRecordFilter() 
  138. {
  139. // TODO: Add your command handler code here
  140. if(m_pSet->IsOpen())//如果记录集合对象处于打开状态,则关闭记录集合对象
  141. m_pSet->Close();
  142. m_pSet->m_strFilter="population>600";
  143. m_pSet->Open();
  144. }
  145. void CData1View::OnRecordSort() 
  146. {
  147. // TODO: Add your command handler code here
  148. if(m_pSet->IsOpen())//如果记录集合对象处于打开状态,则关闭记录集合对象
  149. m_pSet->Close();
  150. m_pSet->m_strSort="population DESC";//设置排序子式
  151. // m_pSet->m_strSort="enviroment,population DESC";//设置排序子式enviroment升序,后者降序
  152. m_pSet->Open();
  153. }
  154. int CData1View::OnRecordSave() 
  155. {
  156. // TODO: Add your command handler code here
  157. if(m_bAdding)
  158. {
  159. m_bAdding=FALSE;
  160. UpdateData(TRUE);
  161. if(m_pSet->CanUpdate())
  162. m_pSet->Update();
  163. m_pSet->Requery();
  164. UpdateData(FALSE);
  165. return TRUE;
  166. }
  167. return FALSE;
  168. }
  169. BOOL CData1View::OnMove(UINT nIDMoveCommand) 
  170. {
  171. // TODO: Add your specialized code here and/or call the base class
  172. if(m_bAdding)
  173. {
  174. m_bAdding=FALSE;
  175. UpdateData(TRUE);
  176. if(m_pSet->CanUpdate())
  177. m_pSet->Update();
  178. m_pSet->Requery();
  179. UpdateData(FALSE);
  180. return TRUE;
  181. }
  182. else
  183. return CRecordView::OnMove(nIDMoveCommand);
  184. }