ExcelTabProperties.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // ExcelTabProperties.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ExcelTab.h"
  5. #include "ExcelTabProperties.h"
  6. #include "ExcelTabDoc.h"
  7. #include "ExcelTabView.h"
  8. #include "ExcelEditCtrl.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. template <class T>
  15. class CAutoDestructCtrl : public T
  16. {
  17. protected:
  18. virtual void PostNcDestroy()
  19. {
  20. delete this;
  21. }
  22. };
  23. /////////////////////////////////////////////////////////////////////////////
  24. // CExcelTabProperties dialog
  25. CExcelTabProperties::CExcelTabProperties(BOOL& bBottom, BOOL& bHasArrows, BOOL& bHasHomeEnd, BOOL& bHScroll, CExcelTabView* pParent /*=NULL*/)
  26. : CDialog(CExcelTabProperties::IDD, pParent)
  27. , m_bBottom(bBottom)
  28. , m_bHasArrows(bHasArrows)
  29. , m_bHasHomeEnd(bHasHomeEnd)
  30. , m_bHScroll(bHScroll)
  31. , m_pParentWnd(pParent)
  32. {
  33. //{{AFX_DATA_INIT(CExcelTabProperties)
  34. m_iTabNum = 0;
  35. m_csText = _T("");
  36. //}}AFX_DATA_INIT
  37. }
  38. void CExcelTabProperties::DoDataExchange(CDataExchange* pDX)
  39. {
  40. const int nTabs = m_pParentWnd->m_pExcelTabCtrl->GetItemCount() - 1;
  41. CDialog::DoDataExchange(pDX);
  42. //{{AFX_DATA_MAP(CExcelTabProperties)
  43. DDX_Control(pDX, IDC_MODIFY_TAB, m_btnModifyTab);
  44. DDX_Control(pDX, IDC_DELETE_TAB, m_btnDeleteTab);
  45. DDX_Control(pDX, IDC_DELETE_ALL, m_btnDeleteAll);
  46. DDX_Control(pDX, IDC_ADD_TAB, m_btnAddTab);
  47. DDX_Text(pDX, IDC_TAB_NUM, m_iTabNum);
  48. DDV_MinMaxUInt(pDX, m_iTabNum, 0, nTabs);
  49. DDX_Text(pDX, IDC_TEXT, m_csText);
  50. DDX_Check(pDX, IDC_FTS_XT_BOTTOM, m_bBottom);
  51. DDX_Check(pDX, IDC_FTS_XT_HASARROWS, m_bHasArrows);
  52. DDX_Check(pDX, IDC_FTS_XT_HASHOMEEND, m_bHasHomeEnd);
  53. DDX_Check(pDX, IDC_FTS_XT_HSCROLL, m_bHScroll);
  54. //}}AFX_DATA_MAP
  55. }
  56. BEGIN_MESSAGE_MAP(CExcelTabProperties, CDialog)
  57. //{{AFX_MSG_MAP(CExcelTabProperties)
  58. ON_BN_CLICKED(IDC_FTS_XT_BOTTOM, OnFtsXtBottom)
  59. ON_BN_CLICKED(IDC_FTS_XT_HASARROWS, OnFtsXtHasarrows)
  60. ON_BN_CLICKED(IDC_FTS_XT_HASHOMEEND, OnFtsXtHashomeend)
  61. ON_BN_CLICKED(IDC_FTS_XT_HSCROLL, OnFtsXtHscroll)
  62. ON_BN_CLICKED(IDC_ADD_TAB, OnAddTab)
  63. ON_BN_CLICKED(IDC_DELETE_ALL, OnDeleteAll)
  64. ON_BN_CLICKED(IDC_DELETE_TAB, OnDeleteTab)
  65. ON_BN_CLICKED(IDC_MODIFY_TAB, OnModifyTab)
  66. ON_EN_CHANGE(IDC_TEXT, OnChangeText)
  67. //}}AFX_MSG_MAP
  68. END_MESSAGE_MAP()
  69. /////////////////////////////////////////////////////////////////////////////
  70. // CExcelTabProperties message handlers
  71. void CExcelTabProperties::OnFtsXtBottom() 
  72. {
  73. UpdateData();
  74. m_pParentWnd->UpdateExcelTab();
  75. }
  76. void CExcelTabProperties::OnFtsXtHasarrows() 
  77. {
  78. UpdateData();
  79. m_pParentWnd->UpdateExcelTab();
  80. GetDlgItem(IDC_FTS_XT_HASHOMEEND)->EnableWindow(m_bHasArrows);
  81. }
  82. void CExcelTabProperties::OnFtsXtHashomeend() 
  83. {
  84. UpdateData();
  85. m_pParentWnd->UpdateExcelTab();
  86. }
  87. void CExcelTabProperties::OnFtsXtHscroll() 
  88. {
  89. UpdateData();
  90. m_pParentWnd->UpdateExcelTab();
  91. }
  92. void CExcelTabProperties::OnAddTab()
  93. {
  94. if (UpdateData())
  95. {
  96. CAutoDestructCtrl<CExcelEditCtrl> *pSheet = new CAutoDestructCtrl<CExcelEditCtrl>();
  97. pSheet->Create(WS_CHILD | WS_TABSTOP | WS_CLIPCHILDREN |
  98. WS_HSCROLL | WS_VSCROLL | ES_MULTILINE, CXTPEmptyRect(), m_pParentWnd->m_pExcelTabCtrl, 1000);
  99. pSheet->SetWindowText(m_csText);
  100. m_pParentWnd->m_pExcelTabCtrl->InsertItem(m_iTabNum, m_csText, pSheet);
  101. }
  102. UpdateDlgStatus();
  103. }
  104. void CExcelTabProperties::OnDeleteAll()
  105. {
  106. m_pParentWnd->m_pExcelTabCtrl->DeleteAllItems();
  107. UpdateDlgStatus();
  108. }
  109. void CExcelTabProperties::OnDeleteTab()
  110. {
  111. if (m_pParentWnd->m_pExcelTabCtrl->GetItemCount() > 0  &&  UpdateData())
  112. {
  113. m_pParentWnd->m_pExcelTabCtrl->DeleteItem(m_iTabNum);
  114. }
  115. UpdateDlgStatus();
  116. }
  117. void CExcelTabProperties::OnModifyTab()
  118. {
  119. if (m_pParentWnd->m_pExcelTabCtrl->GetItemCount() > 0  &&  UpdateData())
  120. {
  121. m_pParentWnd->m_pExcelTabCtrl->SetItemText(m_iTabNum, m_csText);
  122. }
  123. UpdateDlgStatus();
  124. }
  125. void CExcelTabProperties::UpdateDlgStatus()
  126. {
  127. const bool bHasTabs = (m_pParentWnd->m_pExcelTabCtrl->GetItemCount() > 0);
  128. m_btnModifyTab.EnableWindow(bHasTabs);
  129. m_btnDeleteTab.EnableWindow(bHasTabs);
  130. m_btnModifyTab.EnableWindow(bHasTabs);
  131. }
  132. void CExcelTabProperties::OnChangeText() 
  133. {
  134. UpdateData();
  135. m_btnAddTab.EnableWindow(!m_csText.IsEmpty());
  136. }