ReportColPage.cpp 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. // ReportColPage.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "IDE.h"
  5. #include "ReportColPage.h"
  6. #include "SelectVariantDlg.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. IMPLEMENT_SERIAL(CColPro, CObject, 0)
  13. CColPro::CColPro()
  14. {
  15. m_strTitle = g_strColumnName;
  16. m_strVar = g_strVarName3;
  17. m_strFormat = "####";
  18. }
  19. CColPro::~CColPro()
  20. {
  21. }
  22. CColPro* CColPro::Clone(void)
  23. {
  24. CColPro *pObj = new CColPro;
  25. *((CColPro*)pObj) = *(CColPro*)this;
  26. pObj->m_strTitle = m_strTitle;
  27. pObj->m_strVar = m_strVar;
  28. pObj->m_strFormat = m_strFormat;
  29. return pObj;
  30. }
  31. void CColPro::Serialize(CArchive& ar)
  32. {
  33. CObject::Serialize(ar);
  34. if(ar.IsStoring())
  35. {
  36. ar << m_strTitle;
  37. ar << m_strVar;
  38. ar << m_strFormat;
  39. }
  40. else
  41. {
  42. ar >> m_strTitle;
  43. ar >> m_strVar;
  44. ar >> m_strFormat;
  45. }
  46. }
  47. CColPro& CColPro::operator=(CColPro& Obj)
  48. {
  49. m_strTitle = Obj.m_strTitle;
  50. m_strVar = Obj.m_strVar;
  51. m_strFormat = Obj.m_strFormat;
  52. return *this;
  53. }
  54. /////////////////////////////////////////////////////////////////////////////
  55. // CReportColPage property page
  56. IMPLEMENT_DYNCREATE(CReportColPage, CPropertyPage)
  57. CReportColPage::CReportColPage() : CPropertyPage(CReportColPage::IDD)
  58. {
  59. //{{AFX_DATA_INIT(CReportColPage)
  60. m_strTitle = g_strColumnName;
  61. m_strVar = _T("");
  62. m_strFormat = _T("");
  63. //}}AFX_DATA_INIT
  64. }
  65. CReportColPage::~CReportColPage()
  66. {
  67. }
  68. void CReportColPage::DoDataExchange(CDataExchange* pDX)
  69. {
  70. CPropertyPage::DoDataExchange(pDX);
  71. //{{AFX_DATA_MAP(CReportColPage)
  72. DDX_Text(pDX, IDC_TITILE, m_strTitle);
  73. DDX_Text(pDX, IDC_VAR, m_strVar);
  74. DDX_CBString(pDX, IDC_FORMAT, m_strFormat);
  75. DDX_Control(pDX, IDC_COLLIST, m_ctrlList);
  76. //}}AFX_DATA_MAP
  77. }
  78. BEGIN_MESSAGE_MAP(CReportColPage, CPropertyPage)
  79. //{{AFX_MSG_MAP(CReportColPage)
  80. ON_BN_CLICKED(IDC_ADD, OnAdd)
  81. ON_BN_CLICKED(IDC_REVISE, OnRevise)
  82. ON_BN_CLICKED(IDC_DEL, OnDel)
  83. ON_BN_CLICKED(IDC_UP, OnUp)
  84. ON_BN_CLICKED(IDC_DOWN, OnDown)
  85. ON_BN_CLICKED(IDC_SELVAR, OnSelvar)
  86. //}}AFX_MSG_MAP
  87. END_MESSAGE_MAP()
  88. /////////////////////////////////////////////////////////////////////////////
  89. // CReportColPage message handlers
  90. void CReportColPage::OnAdd()
  91. {
  92. UpdateData(TRUE);
  93. CColPro* pObj = new CColPro();
  94. pObj->m_strVar = m_strVar;
  95. pObj->m_strTitle = m_strTitle;
  96. pObj->m_strFormat = m_strFormat;
  97. m_colList.AddTail( pObj );
  98. FreshList();
  99. }
  100. void CReportColPage::OnRevise()
  101. {
  102. // 修改数据,然后刷新界面
  103. UpdateData(true);
  104. #if 0
  105. int row = m_ctrlList.GetRow();
  106. POSITION pos = m_colList.GetHeadPosition();
  107. int i = 0;
  108. while (pos!=NULL)
  109. {
  110. i++;
  111. CColPro* pPro = m_colList.GetNext(pos);
  112. if ( i == row)
  113. {
  114. pPro->m_strVar = m_strVar;
  115. pPro->m_strTitle = m_strTitle;
  116. pPro->m_strFormat = m_strFormat;
  117. break;
  118. }
  119. }
  120. FreshList();
  121. #endif
  122. }
  123. void CReportColPage::OnDel()
  124. {
  125. // 修改数据,然后刷新界面
  126. #if 0
  127. int row = m_ctrlList.GetRow();
  128. POSITION pos = m_colList.GetHeadPosition();
  129. int i = 0;
  130. while (pos!=NULL)
  131. {
  132. i++;
  133. if ( i == row)
  134. {
  135. m_colList.RemoveAt(pos);
  136. break;
  137. }
  138. CColPro* pPro = m_colList.GetNext(pos);
  139. }
  140. FreshList();
  141. #endif
  142. }
  143. void CReportColPage::OnUp()
  144. {
  145. #if 0
  146. int row = m_ctrlList.GetRow();
  147. POSITION pos = m_colList.GetHeadPosition();
  148. int i = 0;
  149. CColPro* lastPro = NULL;
  150. while (pos!=NULL)
  151. {
  152. i++;
  153. CColPro* pPro = m_colList.GetNext(pos);
  154. if ( i == row)
  155. {
  156. CColPro pro;
  157. pro = *pPro;
  158. *pPro = *lastPro;
  159. *lastPro = pro;
  160. break;
  161. }
  162. lastPro = pPro;
  163. }
  164. FreshList();
  165. #endif
  166. }
  167. void CReportColPage::OnDown()
  168. {
  169. #if 0
  170. int row = m_ctrlList.GetRow();
  171. POSITION pos = m_colList.GetHeadPosition();
  172. int i = 0;
  173. while (pos!=NULL)
  174. {
  175. i++;
  176. CColPro* pPro = m_colList.GetNext(pos);
  177. if ( i == row)
  178. {
  179. CColPro* nextPro = m_colList.GetNext(pos);
  180. CColPro pro;
  181. pro = *pPro;
  182. *pPro = *nextPro;
  183. *nextPro = pro;
  184. break;
  185. }
  186. }
  187. FreshList();
  188. #endif
  189. }
  190. void CReportColPage::SetVal(int row, int col, CString str)
  191. {
  192. #if 0
  193. m_ctrlList.SetRow(row);
  194. m_ctrlList.SetCol(col);
  195. m_ctrlList.SetText(str);
  196. #endif
  197. }
  198. BOOL CReportColPage::OnInitDialog()
  199. {
  200. CPropertyPage::OnInitDialog();
  201. FreshList();
  202. return TRUE;
  203. }
  204. void CReportColPage::FreshList()
  205. {
  206. #if 0
  207. m_ctrlList.Clear();
  208. m_ctrlList.SetCols(3);
  209. m_ctrlList.SetColWidth(0, 1400);
  210. m_ctrlList.SetColWidth(1, 1480);
  211. m_ctrlList.SetColWidth(2, 950);
  212. SetVal(0, 0, g_strStrVar);
  213. SetVal(0, 1, g_strHeader);
  214. SetVal(0, 2, g_strFormat);
  215. int count = m_colList.GetCount();
  216. int i = 1;
  217. POSITION pos = m_colList.GetHeadPosition();
  218. while (pos!=NULL)
  219. {
  220. CColPro* pPro = m_colList.GetNext(pos);
  221. SetVal(i, 0, pPro->m_strVar);
  222. SetVal(i, 1, pPro->m_strTitle);
  223. SetVal(i, 2, pPro->m_strFormat);
  224. i++;
  225. }
  226. #endif
  227. }
  228. BEGIN_EVENTSINK_MAP(CReportColPage, CPropertyPage)
  229. //{{AFX_EVENTSINK_MAP(CReportColPage)
  230. ON_EVENT(CReportColPage, IDC_COLLIST, -600 /* Click */, OnClickCollist, VTS_NONE)
  231. //}}AFX_EVENTSINK_MAP
  232. END_EVENTSINK_MAP()
  233. void CReportColPage::OnClickCollist()
  234. {
  235. #if 0
  236. int row = m_ctrlList.GetRow();
  237. POSITION pos = m_colList.GetHeadPosition();
  238. int i = 0;
  239. while (pos!=NULL)
  240. {
  241. i++;
  242. CColPro* pPro = m_colList.GetNext(pos);
  243. if ( i == row)
  244. {
  245. m_strVar = pPro->m_strVar;
  246. m_strTitle = pPro->m_strTitle;
  247. m_strFormat = pPro->m_strFormat;
  248. UpdateData(false);
  249. break;
  250. }
  251. }
  252. #endif
  253. }
  254. void CReportColPage::OnSelvar()
  255. {
  256. CSelectVariantDlg dlg;
  257. if ( dlg.DoModal() == IDOK )
  258. {
  259. m_strVar = dlg.m_strVar;
  260. UpdateData(TRUE);
  261. }
  262. }