AccessRights.cpp 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. // AccessRights.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "datasyncsend.h"
  5. #include "AccessRights.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. extern CString g_enterprisename;
  12. /////////////////////////////////////////////////////////////////////////////
  13. // AccessRights dialog
  14. AccessRights::AccessRights(CWnd* pParent /*=NULL*/)
  15. : CDialog(AccessRights::IDD, pParent)
  16. {
  17. //{{AFX_DATA_INIT(AccessRights)
  18. // NOTE: the ClassWizard will add member initialization here
  19. //}}AFX_DATA_INIT
  20. }
  21. void AccessRights::DoDataExchange(CDataExchange* pDX)
  22. {
  23. CDialog::DoDataExchange(pDX);
  24. //{{AFX_DATA_MAP(AccessRights)
  25. DDX_Control(pDX, IDC_COMBO1, m_combo1);
  26. DDX_Control(pDX, IDC_LIST3, m_List2);
  27. DDX_Control(pDX, IDC_LIST1, m_List1);
  28. //}}AFX_DATA_MAP
  29. }
  30. BEGIN_MESSAGE_MAP(AccessRights, CDialog)
  31. //{{AFX_MSG_MAP(AccessRights)
  32. ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
  33. ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
  34. ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
  35. //}}AFX_MSG_MAP
  36. END_MESSAGE_MAP()
  37. /////////////////////////////////////////////////////////////////////////////
  38. // AccessRights message handlers
  39. extern CArray<CStringArray, CStringArray>g_List1array;
  40. BOOL AccessRights::OnInitDialog()
  41. {
  42. CDialog::OnInitDialog();
  43. // TODO: Add extra initialization here
  44. for(int i=0; i<g_List1array.GetSize (); i++)
  45. {
  46. m_List1.AddString(g_List1array.ElementAt (i).ElementAt (1));
  47. m_combo1.AddString(g_List1array.ElementAt (i).ElementAt (1));
  48. }
  49. MyLock lock("savebranchrights");
  50. CFile fp;
  51. CString path=g_mainpath+"\\branchrights.dat";
  52. if(fp.Open (path, CFile::modeRead))
  53. {
  54. DWORD leng=fp.GetLength ();
  55. DWORD arraysize;
  56. fp.Read (&arraysize, sizeof(DWORD));
  57. BYTE *pData=new BYTE[leng-sizeof(DWORD)];
  58. fp.Read (pData,leng-sizeof(DWORD));
  59. fp.Close ();
  60. CMemFile memfile;
  61. memfile.Attach (pData,leng-sizeof(DWORD));
  62. CArchive ar(&memfile, CArchive::load);
  63. m_List1array.SetSize(arraysize);
  64. for(int ii=0; ii<m_List1array.GetSize (); ii++)
  65. {
  66. m_List1array.ElementAt (ii).Serialize (ar);
  67. }
  68. ar.Close();
  69. memfile.Detach ();
  70. delete []pData;
  71. for(ii=m_List1array.GetSize ()-1; ii>=0; ii--)
  72. {
  73. if(g_enterprisename!=m_List1array.ElementAt (ii).ElementAt (0))
  74. m_List1array.RemoveAt(ii);
  75. }
  76. }
  77. int size=m_List1array.GetSize ();
  78. CString str;
  79. for(i=0; i<m_List1.GetCount (); i++)
  80. {
  81. m_List1.GetText (i, str);
  82. BOOL bFind=0;
  83. size=m_List1array.GetSize ();
  84. for(int j=0; j<size; j++)
  85. {
  86. if(str==m_List1array.ElementAt (j).ElementAt (1))
  87. {
  88. bFind=1;break;
  89. }
  90. }
  91. if(bFind==0)
  92. {
  93. m_List1array.SetSize(size+1, 1);
  94. m_List1array.ElementAt (size).Add (g_enterprisename);
  95. m_List1array.ElementAt (size).Add (str);
  96. }
  97. }
  98. m_combo1.SetCurSel(0);InitRights();
  99. return TRUE; // return TRUE unless you set the focus to a control
  100. // EXCEPTION: OCX Property Pages should return FALSE
  101. }
  102. void AccessRights::OnButton1()
  103. {
  104. // TODO: Add your control notification handler code here
  105. int pos=m_combo1.GetCurSel();
  106. if(pos==-1)
  107. {
  108. AfxMessageBox("请选择当前您要设置权限的分店!");
  109. return;
  110. }
  111. pos=m_List1.GetCurSel();
  112. if(pos==-1)
  113. {
  114. AfxMessageBox("请选中允许访问的分店!");
  115. return;
  116. }
  117. CString str,str2;
  118. m_List1.GetText(pos, str);
  119. for(int i=0; i<m_List2.GetCount (); i++)
  120. {
  121. m_List2.GetText(i, str2);
  122. if(str==str2)return;
  123. }
  124. m_List2.AddString(str);
  125. pos++;
  126. if(pos==m_List1.GetCount ())pos=0;
  127. m_List1.SetCurSel (pos);
  128. SaveToArray();
  129. }
  130. void AccessRights::OnButton2()
  131. {
  132. // TODO: Add your control notification handler code here
  133. int pos=m_combo1.GetCurSel();
  134. if(pos==-1)
  135. {
  136. AfxMessageBox("请选择当前您要设置权限的分店!");
  137. return;
  138. }
  139. pos=m_List2.GetCurSel();
  140. if(pos==-1)
  141. {
  142. return;
  143. }
  144. m_List2.DeleteString (pos);
  145. if(pos==m_List2.GetCount ())pos=0;
  146. if(m_List2.GetCount ()==0)return;
  147. m_List2.SetCurSel (pos);
  148. SaveToArray();
  149. }
  150. void AccessRights::OnOK()
  151. {
  152. // TODO: Add extra validation here
  153. MyLock lock("savebranchrights");
  154. CFile fp;
  155. CString path=g_mainpath+"\\branchrights.dat";
  156. fp.Open (path, CFile::modeCreate|CFile::modeWrite);
  157. DWORD arraysize=m_List1array.GetSize();
  158. fp.Write (&arraysize, sizeof(DWORD));
  159. BYTE *pBranchData=NULL;
  160. DWORD nBranchDataLeng=0;
  161. CMemFile memfile;
  162. CArchive ar(&memfile, CArchive::store);
  163. for(int ii=0; ii<m_List1array.GetSize (); ii++)
  164. {
  165. m_List1array.ElementAt (ii).Serialize (ar);
  166. }
  167. ar.Close();
  168. nBranchDataLeng=memfile.GetLength ();
  169. pBranchData=memfile.Detach();
  170. fp.Write (pBranchData, nBranchDataLeng);
  171. fp.Close ();
  172. delete []pBranchData;
  173. CString version = _T ("Version 1.0");
  174. AfxGetApp()->WriteProfileInt (version, "needupload", 1);
  175. AfxMessageBox("保存成功!");
  176. }
  177. void AccessRights::SaveToArray()
  178. {
  179. int pos=m_combo1.GetCurSel();
  180. if(pos==-1)
  181. {
  182. return;
  183. }
  184. CString str;
  185. m_combo1.GetLBText (pos, str);
  186. int size=m_List1array.GetSize ();
  187. for(int j=0; j<size; j++)
  188. {
  189. if(str==m_List1array.ElementAt (j).ElementAt (1))
  190. {
  191. m_List1array.ElementAt (j).RemoveAll ();
  192. m_List1array.ElementAt (j).Add (g_enterprisename);
  193. m_List1array.ElementAt (j).Add (str);
  194. for(int i=0; i<m_List2.GetCount (); i++)
  195. {
  196. m_List2.GetText (i, str);
  197. m_List1array.ElementAt (j).Add (str);
  198. }
  199. break;
  200. }
  201. }
  202. }
  203. void AccessRights::InitRights()
  204. {
  205. int pos=m_combo1.GetCurSel();
  206. if(pos==-1)
  207. {
  208. return;
  209. }
  210. CString str;
  211. m_combo1.GetLBText (pos, str);
  212. int size=m_List1array.GetSize ();
  213. for(int j=0; j<size; j++)
  214. {
  215. if(str==m_List1array.ElementAt (j).ElementAt (1))
  216. {
  217. size=m_List1array.ElementAt (j).GetSize();
  218. m_List2.ResetContent ();
  219. for(int i=2; i<size; i++)
  220. {
  221. m_List2.AddString (m_List1array.ElementAt (j).ElementAt (i));
  222. }
  223. break;
  224. }
  225. }
  226. }
  227. void AccessRights::OnSelchangeCombo1()
  228. {
  229. // TODO: Add your control notification handler code here
  230. InitRights();
  231. }