AnalogDlg.cpp 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869
  1. // AnalogDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "IDE.h"
  5. #include "Dlg_ParamFind.h"
  6. #include "AnalogDlg.h"
  7. #include "AnalogPropertyDlg.h"
  8. #include "AnalogSinglePropertyDlg.h"
  9. #include ".\analogdlg.h"
  10. #include "DlgVarStatusManager.h"
  11. #include "DlgDatePlan.h"
  12. #include "StringOperation.h"
  13. #include "GridCtrl.h"
  14. #ifdef _DEBUG
  15. #define new DEBUG_NEW
  16. #undef THIS_FILE
  17. static char THIS_FILE[] = __FILE__;
  18. #endif
  19. #define m_hotFind 1111
  20. CDlg_ParamFind *g_pDlgParamFind=NULL;
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CAnalogDlg dialog
  23. CAnalogDlg::CAnalogDlg(CWnd* pParent /*=NULL*/)
  24. : CDialog(CAnalogDlg::IDD, pParent)
  25. {
  26. //{{AFX_DATA_INIT(CAnalogDlg)
  27. // NOTE: the ClassWizard will add member initialization here
  28. //}}AFX_DATA_INIT
  29. m_ctrlAnalogGrid.RegisterWindowClass(g_hLangDLL);
  30. }
  31. CAnalogDlg::~CAnalogDlg()
  32. {
  33. if( g_pDlgParamFind )
  34. delete g_pDlgParamFind;
  35. g_pDlgParamFind = NULL;
  36. }
  37. void CAnalogDlg::DoDataExchange(CDataExchange* pDX)
  38. {
  39. CDialog::DoDataExchange(pDX);
  40. //{{AFX_DATA_MAP(CAnalogDlg)
  41. DDX_Control(pDX, IDC_ANALOGGRID, m_ctrlAnalogGrid);
  42. //}}AFX_DATA_MAP
  43. }
  44. BEGIN_MESSAGE_MAP(CAnalogDlg, CDialog)
  45. //{{AFX_MSG_MAP(CAnalogDlg)
  46. //}}AFX_MSG_MAP
  47. ON_BN_CLICKED(IDC_ADDANALOG, OnBnClickedAddanalog)
  48. ON_BN_CLICKED(IDC_EDITANALOG, OnBnClickedEditanalog)
  49. ON_BN_CLICKED(IDC_DELANALOG, OnBnClickedDelanalog)
  50. ON_BN_CLICKED(IDC_COPYANALOG, OnBnClickedCopyanalog)
  51. ON_BN_CLICKED(IDC_FINGANALOG, OnBnClickedFindanalog)
  52. ON_BN_CLICKED(IDC_BTN_SET_STATUS1, OnBnClickedBtnSetStatus)
  53. ON_BN_CLICKED(IDC_BTN_DATE_PLAN, OnBnClickedBtnDatePlan)
  54. ON_BN_CLICKED(IDC_BTN_CLOSE, OnBnClickedBtnClose)
  55. ON_WM_CLOSE()
  56. END_MESSAGE_MAP()
  57. /////////////////////////////////////////////////////////////////////////////
  58. // CAnalogDlg message handlers
  59. void CAnalogDlg::OnOK()
  60. {
  61. // TODO: Add extra validation here
  62. CDialog::OnOK();
  63. }
  64. void CAnalogDlg::OnCancel()
  65. {
  66. // TODO: Add extra cleanup her
  67. CDialog::OnCancel();
  68. }
  69. BOOL CAnalogDlg::OnInitDialog()
  70. {
  71. CDialog::OnInitDialog();
  72. m_btnEdit.SubclassDlgItem(IDC_EDITANALOG, this);
  73. m_btnEdit.SetBitmaps(IDB_EDIT, RGB(255, 0, 255));
  74. m_btnEdit.SetFlat(FALSE);
  75. m_btnEdit.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  76. m_btnCopy.SubclassDlgItem(IDC_COPYANALOG, this);
  77. m_btnCopy.SetBitmaps(IDB_COPY , RGB(192, 192, 192));
  78. m_btnCopy.SetFlat(FALSE);
  79. m_btnCopy.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  80. m_btnDel.SubclassDlgItem(IDC_DELANALOG, this);
  81. m_btnDel.SetBitmaps(IDB_DEL, RGB(255,0 , 255));
  82. m_btnDel.SetFlat(FALSE);
  83. m_btnDel.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  84. m_btnAdd.SubclassDlgItem(IDC_ADDANALOG, this);
  85. m_btnAdd.SetBitmaps(IDB_ADD, RGB(192, 192, 192));
  86. m_btnAdd.SetFlat(FALSE);
  87. m_btnAdd.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  88. m_btnDatePlan.SubclassDlgItem(IDC_BTN_DATE_PLAN, this);
  89. m_btnDatePlan.SetBitmaps(IDB_PLAN, RGB(192, 192, 192));
  90. m_btnDatePlan.SetFlat(FALSE);
  91. m_btnDatePlan.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  92. m_btnSetStatus.SubclassDlgItem(IDC_BTN_SET_STATUS1, this);
  93. m_btnSetStatus.SetBitmaps(IDB_INTO, RGB(192, 192, 192));
  94. m_btnSetStatus.SetFlat(FALSE);
  95. m_btnSetStatus.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  96. m_btnCancel.SubclassDlgItem(IDC_BTN_CLOSE, this);
  97. m_btnCancel.SetBitmaps(IDB_EXIT, RGB(192, 192, 192));
  98. m_btnCancel.SetFlat(FALSE);
  99. m_btnCancel.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  100. m_btnFind.SubclassDlgItem(IDC_FINGANALOG, this);
  101. m_btnFind.SetIcon( IDI_ICON_FIND );
  102. m_btnFind.SetFlat(FALSE);
  103. m_btnFind.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  104. if( g_bStartRun )
  105. {
  106. m_btnCopy.ShowWindow(SW_HIDE);
  107. m_btnDel.ShowWindow(SW_HIDE);
  108. m_btnAdd.ShowWindow(SW_HIDE);
  109. }
  110. SetFields();
  111. if( g_bStartRun==1 && -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_EDITPARAM,"" ) )
  112. {
  113. m_btnEdit.EnableWindow( false );
  114. }
  115. if( g_bStartRun==1 && -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_SETSTATUS,"" ) )
  116. {
  117. m_btnSetStatus.EnableWindow( false );
  118. }
  119. if( g_bStartRun==1 && -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_TIME_PLAN,"" ) )
  120. {
  121. m_btnDatePlan.EnableWindow( false );
  122. }
  123. return TRUE; // return TRUE unless you set the focus to a control
  124. // EXCEPTION: OCX Property Pages should return FALSE
  125. }
  126. void CAnalogDlg::SetFields()
  127. {
  128. int iIndex = 0;
  129. m_ctrlAnalogGrid.m_field.SetSize(38);
  130. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("id");
  131. m_ctrlAnalogGrid.m_field[iIndex].Caption=_T("ID");
  132. m_ctrlAnalogGrid.m_field[iIndex].With=50;
  133. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  134. iIndex++;
  135. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("boolreserved3");
  136. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strIsModify;
  137. m_ctrlAnalogGrid.m_field[iIndex].With=80;
  138. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  139. iIndex++;
  140. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("boolreserved2");
  141. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strIsNotice;
  142. m_ctrlAnalogGrid.m_field[iIndex].With=110;
  143. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  144. iIndex++;
  145. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("uid");
  146. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strVarUid1;
  147. m_ctrlAnalogGrid.m_field[iIndex].With=80;
  148. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  149. iIndex++;
  150. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("varname");
  151. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strVarName1;
  152. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  153. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  154. iIndex++;
  155. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("description");
  156. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strVarDesc;
  157. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  158. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  159. iIndex++;
  160. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("vartypeid");
  161. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strVarTypeID;
  162. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  163. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  164. iIndex++;
  165. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("datalen");
  166. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strVarDataLen;
  167. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  168. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  169. iIndex++;
  170. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("ondesc");
  171. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strOnDesc;
  172. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  173. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  174. iIndex++;
  175. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("offdesc");
  176. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strOffDesc;
  177. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  178. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  179. iIndex++;
  180. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("maxvalues");
  181. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strMaxValues;
  182. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  183. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  184. iIndex++;
  185. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("minvalues");
  186. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strMinValues;
  187. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  188. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  189. iIndex++;
  190. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("maxconvtrate");
  191. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strMaxScale;
  192. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  193. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  194. iIndex++;
  195. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("minconvtrate");
  196. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strMinScale;
  197. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  198. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  199. iIndex++;
  200. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("lowerlimit");
  201. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strLowerLimit;
  202. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  203. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  204. iIndex++;
  205. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("upperlimit");
  206. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strUpperLimit;
  207. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  208. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  209. iIndex++;
  210. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("normalstate");
  211. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strNormalState;
  212. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  213. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  214. iIndex++;
  215. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("setvalue");
  216. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strSetValue;
  217. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  218. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  219. iIndex++;
  220. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("rearm");
  221. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strRearm;
  222. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  223. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  224. iIndex++;
  225. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("offsets");
  226. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strOffset;
  227. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  228. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  229. iIndex++;
  230. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("unit");
  231. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strUint;
  232. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  233. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  234. iIndex++;
  235. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("collectfrequence");
  236. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strCollectFreq;
  237. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  238. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  239. iIndex++;
  240. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("coefficient");
  241. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strCoef;
  242. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  243. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  244. iIndex++;
  245. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("warnlevel");
  246. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strAlarmLevel;
  247. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  248. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  249. iIndex++;
  250. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("readonly");
  251. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strReadWrite;
  252. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  253. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  254. iIndex++;
  255. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("issave");
  256. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strSaveData;
  257. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  258. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  259. iIndex++;
  260. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("realtimeflag");
  261. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strCollectThreadData;
  262. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  263. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  264. iIndex++;
  265. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("reccurve");
  266. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strSaveCurve;
  267. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  268. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  269. iIndex++;
  270. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("isdde");
  271. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strIsDDE;
  272. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  273. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  274. iIndex++;
  275. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("registernum");
  276. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strRegNum;
  277. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  278. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  279. iIndex++;
  280. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("funcid");
  281. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strFuncID;
  282. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  283. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  284. iIndex++;
  285. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("childid");
  286. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strChildID;
  287. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  288. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  289. iIndex++;
  290. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("var_item_id");
  291. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strItemID;
  292. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  293. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  294. iIndex++;
  295. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("snmpoid");
  296. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strSnmpOid;
  297. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  298. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  299. iIndex++;
  300. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("fields");
  301. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strSnmpPublic;
  302. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  303. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  304. iIndex++;
  305. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("intreserved1");
  306. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strParamInit;
  307. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  308. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  309. iIndex++;
  310. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("intreserved2");
  311. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strParamMin;
  312. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  313. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  314. iIndex++;
  315. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("intreserved3");
  316. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strParamMax;
  317. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  318. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  319. iIndex++;
  320. Requery();
  321. // m_ctrlAnalogGrid.Execute(m_pConnection,"ProductId"/*Primary key field */
  322. // ,"*"//fields in SELECT statment
  323. // ,"Products" //from
  324. // ,"" // where
  325. // ,0); // order by N of the Grid column
  326. }
  327. void CAnalogDlg::Requery()
  328. {
  329. CString strWhere, str;
  330. int nVarSize = pVariantsManager->m_analog.GetSize();
  331. if( nVarSize > 0 )
  332. {
  333. strWhere = " id in (";
  334. }
  335. for( int i = 0; i < nVarSize; i++ )
  336. {
  337. pVariantsManager->m_analog[i]->m_nVarID;
  338. if( i == nVarSize - 1 )
  339. {
  340. str.Format("%d)", pVariantsManager->m_analog[i]->m_nVarID);
  341. strWhere += str;
  342. }
  343. else
  344. {
  345. str.Format("%d, ", pVariantsManager->m_analog[i]->m_nVarID);
  346. strWhere += str;
  347. }
  348. }
  349. m_ctrlAnalogGrid.Execute(_T("id")/*Primary key field */
  350. ,_T("*")//fields in SELECT statment
  351. ,_T("t_dev_variant") //from
  352. ,strWhere // where
  353. ,0); // order by N of the Grid column
  354. //
  355. }
  356. BEGIN_EVENTSINK_MAP(CAnalogDlg, CDialog)
  357. //{{AFX_EVENTSINK_MAP(CAnalogDlg)
  358. //}}AFX_EVENTSINK_MAP
  359. END_EVENTSINK_MAP()
  360. void CAnalogDlg::OnBnClickedAddanalog()
  361. {
  362. // TODO: 在此添加控件通知处理程序代码
  363. CAnalogPropertyDlg dlg;
  364. dlg.m_pSet = m_ctrlAnalogGrid.m_pSet;
  365. dlg.m_operation = CAnalogPropertyDlg::NEW;
  366. /************************************************************************/
  367. /* 变量对话框貌似没有操作??? */
  368. /************************************************************************/
  369. if (dlg.DoModal() == IDOK) // IDOK 实际上就是保存按钮;
  370. {
  371. //m_ctrlAnalogGrid.Invalidate();
  372. m_ctrlAnalogGrid.AddNew();
  373. Requery();
  374. CString sContent;
  375. sContent.Format("%s %s< %s >",g_strAdd,g_strVariant,dlg.m_sParamName.TrimRight() );
  376. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_ADD,0,"",(char *)(LPCTSTR)sContent );
  377. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_ADD,"",dlg.m_sUid,dlg.m_nVarID,"64320" );
  378. }
  379. }
  380. void CAnalogDlg::OnBnClickedEditanalog()
  381. {
  382. // TODO: 在此添加控件通知处理程序代码
  383. int nRow=m_ctrlAnalogGrid.IsSelectRow();
  384. if(nRow==-1)
  385. {
  386. MessageBox(g_strSelLine, g_strTip, MB_ICONINFORMATION);
  387. return;
  388. }
  389. int nSelNum = m_ctrlAnalogGrid.GetSelCount();
  390. if( g_bStartRun )
  391. {
  392. CAnalogSinglePropertyDlg dlg;
  393. dlg.m_pSet=m_ctrlAnalogGrid.m_pSet;
  394. dlg.m_nPrevRow = nRow;
  395. //dlg.m_operation=CAnalogSinglePropertyDlg::EDIT;
  396. dlg.m_operation= nSelNum<2 ? CAnalogSinglePropertyDlg::EDIT : CAnalogSinglePropertyDlg::EDITMORE;
  397. for( int i=0;i<nSelNum;i++ )
  398. dlg.m_nArrayListID.Add( m_ctrlAnalogGrid.m_nArrayListChoose[i] );
  399. if (dlg.DoModal() == IDOK)
  400. {
  401. if( dlg.m_operation==CAnalogPropertyDlg::EDIT )
  402. {
  403. CString sContent;
  404. sContent.Format("%s %s< %s >",g_strEdit,g_strVariant,dlg.m_sParamName.TrimRight() );
  405. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_EDIT,0,"",(char *)(LPCTSTR)sContent );
  406. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_EDIT,"",dlg.m_sUid,dlg.m_nVarID,"64320" );
  407. }
  408. else
  409. MessageBox(g_strEditMoreVarOK, g_strTip, MB_ICONINFORMATION);
  410. #if EDIT_VAR_IS_FRESH
  411. m_ctrlAnalogGrid.Invalidate(FALSE);
  412. Requery();
  413. m_ctrlAnalogGrid.Invalidate(TRUE);
  414. #endif
  415. }
  416. }
  417. else
  418. {
  419. CAnalogPropertyDlg dlg;
  420. dlg.m_pSet=m_ctrlAnalogGrid.m_pSet;
  421. dlg.m_nPrevRow = nRow;
  422. //dlg.m_operation=CAnalogPropertyDlg::EDIT;
  423. dlg.m_operation= nSelNum<2 ? CAnalogPropertyDlg::EDIT : CAnalogPropertyDlg::EDITMORE;
  424. for( int i=0;i<nSelNum;i++ )
  425. dlg.m_nArrayListID.Add( m_ctrlAnalogGrid.m_nArrayListChoose[i] );
  426. if (dlg.DoModal() == IDOK)
  427. {
  428. if( dlg.m_operation==CAnalogPropertyDlg::EDIT )
  429. {
  430. CString sContent;
  431. sContent.Format("%s %s< %s >",g_strEdit,g_strVariant,dlg.m_sParamName.TrimRight() );
  432. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_EDIT,0,"",(char *)(LPCTSTR)sContent );
  433. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_EDIT,"",dlg.m_sUid,dlg.m_nVarID,"64320" );
  434. }
  435. else
  436. MessageBox(g_strEditMoreVarOK, g_strTip, MB_ICONINFORMATION);
  437. #if EDIT_VAR_IS_FRESH
  438. m_ctrlAnalogGrid.Invalidate(FALSE);
  439. Requery();
  440. m_ctrlAnalogGrid.Invalidate(TRUE);
  441. #endif
  442. }
  443. }
  444. }
  445. void CAnalogDlg::OnBnClickedDelanalog()
  446. {
  447. // TODO: 在此添加控件通知处理程序代码
  448. int nRow=m_ctrlAnalogGrid.IsSelectRow();
  449. int nSelNum = m_ctrlAnalogGrid.GetSelCount();
  450. m_nArrayListID.RemoveAll();
  451. for( int i=0;i<nSelNum;i++ )
  452. m_nArrayListID.Add( m_ctrlAnalogGrid.m_nArrayListChoose[i] );
  453. if( nSelNum>1 )
  454. {
  455. if (MessageBox (g_strMsgConfirmDel, g_strMsgPrompt, MB_YESNO|MB_DEFBUTTON2 | MB_ICONQUESTION) == IDYES)
  456. {
  457. for( int m=0;m<nSelNum;m++ )
  458. {
  459. for( int n=m+1;n<nSelNum;n++ )
  460. {
  461. if( m_nArrayListID[m]<m_nArrayListID[n] )
  462. {
  463. int nTemp = m_nArrayListID[m];
  464. m_nArrayListID[m] = m_nArrayListID[n];
  465. m_nArrayListID[n] = nTemp;
  466. }
  467. }
  468. }
  469. for( int i=0;i<nSelNum;i++ )
  470. {
  471. nRow = m_nArrayListID[i];
  472. m_ctrlAnalogGrid.SetRowFocus( nRow );
  473. int nVarID = atoi(m_ctrlAnalogGrid.GetCell( nRow, 0 )->GetText());
  474. CString sUid = m_ctrlAnalogGrid.GetCell( nRow, 3 )->GetText();
  475. if( pVariantsManager->DeleteAnalog( nVarID ) )
  476. {
  477. CString sContent,sTemp=m_ctrlAnalogGrid.GetCell( nRow, 3 )->GetText();
  478. sContent.Format("%s %s< %s >",g_strDel,g_strVariant,sTemp );
  479. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_DELETE,0,"",(char *)(LPCTSTR)sContent );
  480. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_DELETE,"",sUid,nVarID,"64320" );
  481. CHAR sVarID[MAX_SQL_LENGTH + 1] = "";
  482. sprintf(sVarID, "%d", nVarID);
  483. CDBInterface::GetInstancePtr()->DelTableData( "t_var_status","devuid",(char *)(LPCTSTR)sUid,1,"varid",sVarID,2 );
  484. //m_ctrlAnalogGrid.Delete();
  485. CDBInterface::GetInstancePtr()->DelTableData( "t_dev_variant","id",(char *)(LPCTSTR)sVarID,1 );
  486. }
  487. }
  488. Requery();
  489. }
  490. }
  491. else
  492. {
  493. if(nRow==-1)
  494. {
  495. MessageBox(g_strSelLine, g_strTip, MB_ICONINFORMATION);
  496. return;
  497. }
  498. if (MessageBox (g_strMsgConfirmDel, g_strMsgPrompt, MB_YESNO|MB_DEFBUTTON2 | MB_ICONQUESTION) == IDYES)
  499. {
  500. int nVarID = atoi(m_ctrlAnalogGrid.GetCell( nRow, 0 )->GetText());
  501. CString sUid = m_ctrlAnalogGrid.GetCell( nRow, 3 )->GetText();
  502. if( pVariantsManager->DeleteAnalog( nVarID ) )
  503. {
  504. CString sContent;
  505. sContent.Format("%s %s< %s >",g_strDel,g_strVariant,m_ctrlAnalogGrid.GetCell( nRow, 3 )->GetText() );
  506. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_DELETE,0,"",(char *)(LPCTSTR)sContent );
  507. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_DELETE,"",sUid,nVarID,"64320" );
  508. CHAR sVarID[MAX_SQL_LENGTH + 1] = "";
  509. sprintf(sVarID, "%d", nVarID);
  510. CDBInterface::GetInstancePtr()->DelTableData( "t_var_status","devuid",(char *)(LPCTSTR)sUid,1,"varid",sVarID,2 );
  511. //m_ctrlAnalogGrid.Delete();
  512. CDBInterface::GetInstancePtr()->DelTableData( "t_dev_variant","id",(char *)(LPCTSTR)sVarID,1 );
  513. Requery();
  514. }
  515. }
  516. }
  517. m_ctrlAnalogGrid.m_nArrayListChoose.RemoveAll();
  518. }
  519. void CAnalogDlg::OnBnClickedCopyanalog()
  520. {
  521. // TODO: 在此添加控件通知处理程序代码
  522. if(m_ctrlAnalogGrid.IsSelectRow()==-1)
  523. return;
  524. CAnalogPropertyDlg dlg;
  525. dlg.m_pSet=m_ctrlAnalogGrid.m_pSet;
  526. dlg.m_operation=CAnalogPropertyDlg::COPY;
  527. if (dlg.DoModal() == IDOK)
  528. {
  529. m_ctrlAnalogGrid.AddNew();
  530. Requery();
  531. CString sContent;
  532. sContent.Format("%s %s< %s >",g_strAdd,g_strVariant,dlg.m_sParamName.TrimRight() );
  533. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_ADD,0,"",(char *)(LPCTSTR)sContent );
  534. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_ADD,"",dlg.m_sUid,dlg.m_nVarID,"64320" );
  535. }
  536. }
  537. void CAnalogDlg::OnBnClickedFindanalog()
  538. {
  539. ShowFindDlg();
  540. }
  541. BOOL CAnalogDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
  542. {
  543. // TODO: 在此添加专用代码和/或调用基类
  544. if (wParam == (WPARAM)m_ctrlAnalogGrid.GetDlgCtrlID())
  545. {
  546. *pResult = 1;
  547. GV_DISPINFO *pDispInfo = (GV_DISPINFO*)lParam;
  548. m_ctrlAnalogGrid.SetValue(pDispInfo);
  549. }
  550. return CDialog::OnNotify(wParam, lParam, pResult);
  551. }
  552. void CAnalogDlg::OnBnClickedBtnSetStatus()
  553. {
  554. // TODO: 在此添加控件通知处理程序代码
  555. int nRow=m_ctrlAnalogGrid.IsSelectRow();
  556. if(nRow==-1)
  557. {
  558. MessageBox(g_strSelLine, g_strTip, MB_ICONINFORMATION);
  559. return;
  560. }
  561. int nVarID = atoi(m_ctrlAnalogGrid.GetCell( nRow, 0 )->GetText());
  562. CString strDevUID = m_ctrlAnalogGrid.GetCell( nRow, 3)->GetText();
  563. CDlgVarStatusManager dlg;
  564. dlg.m_strUID = strDevUID;
  565. dlg.m_nVarID = nVarID;
  566. if( dlg.DoModal() == IDOK )
  567. {
  568. CString sContent;
  569. sContent.Format("%s %s< %s >",g_strEdit,g_strVariant,m_ctrlAnalogGrid.GetCell( nRow, 0 )->GetText() );
  570. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_SETSTATUS,0,"",(char *)(LPCTSTR)sContent );
  571. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_EDIT,"",strDevUID,nVarID,"64320" );
  572. }
  573. CAnalog *pAnalog = pVariantsManager->FindAnalog(nVarID);
  574. list<string> listStatusID, listStatusDesc;
  575. list<string>::iterator itStatusID, itStatusDesc;
  576. int nCount = 0;
  577. nCount = CDBInterface::GetInstancePtr()->GetVarStatusList(
  578. (char *)(LPCTSTR)dlg.m_strUID,
  579. dlg.m_nVarID,
  580. listStatusID,
  581. listStatusDesc);
  582. if( nCount > 0 )
  583. {
  584. list<int>::iterator it;
  585. list<CString>::iterator it_desc;
  586. for( it = pAnalog->m_listStatusID.begin(); it != pAnalog->m_listStatusID.end(); )
  587. {
  588. pAnalog->m_listStatusID.erase( it++ );
  589. }
  590. for( it_desc = pAnalog->m_listStatusDesc.begin(); it_desc != pAnalog->m_listStatusDesc.end(); )
  591. {
  592. pAnalog->m_listStatusDesc.erase( it_desc++ );
  593. }
  594. }
  595. for( itStatusID = listStatusID.begin(), itStatusDesc = listStatusDesc.begin();
  596. itStatusID != listStatusID.end(), itStatusDesc != listStatusDesc.end();
  597. itStatusID++, itStatusDesc++)
  598. {
  599. pAnalog->m_listStatusID.insert( pAnalog->m_listStatusID.end(), atoi((*itStatusID).c_str()) );
  600. pAnalog->m_listStatusDesc.insert( pAnalog->m_listStatusDesc.end(), (*itStatusDesc).c_str() );
  601. }
  602. }
  603. void CAnalogDlg::OnBnClickedBtnDatePlan()
  604. {
  605. // TODO: 在此添加控件通知处理程序代码
  606. int nRow=m_ctrlAnalogGrid.IsSelectRow();
  607. if(nRow==-1)
  608. {
  609. MessageBox(g_strSelLine, g_strTip, MB_ICONINFORMATION);
  610. return;
  611. }
  612. int nVarID = atoi(m_ctrlAnalogGrid.GetCell( nRow, 0 )->GetText());
  613. CString strDevUID = m_ctrlAnalogGrid.GetCell( nRow, 3)->GetText();
  614. CDlgDatePlan dlg;
  615. dlg.m_nPlanType = PLAN_TYPE_EQUIP;
  616. dlg.m_strUid = strDevUID;
  617. dlg.m_nVarID = nVarID;
  618. if(dlg.DoModal() == IDOK)
  619. {
  620. CString sContent;
  621. sContent.Format("%s %s< %s >",g_strEdit,g_strVariant,m_ctrlAnalogGrid.GetCell( nRow, 0 )->GetText() );
  622. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_TIMEPLAN_EIDT,0,"",(char *)(LPCTSTR)sContent );
  623. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_EDIT,"",dlg.m_strUid,dlg.m_nVarID,"64320" );
  624. pVariantsManager->AllocDatePlan();
  625. }
  626. }
  627. void CAnalogDlg::OnBnClickedBtnClose()
  628. {
  629. // TODO: 在此添加控件通知处理程序代码
  630. pVariantsManager->Store(g_strDirectory);
  631. OnCancel();
  632. }
  633. void CAnalogDlg::OnClose()
  634. {
  635. // TODO: 在此添加消息处理程序代码和/或调用默认值
  636. pVariantsManager->Store(g_strDirectory);
  637. CDialog::OnClose();
  638. }
  639. LRESULT CAnalogDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
  640. {
  641. // TODO: 在此添加专用代码和/或调用基类
  642. switch( message )
  643. {
  644. case WM_DCLICK:
  645. {
  646. if( g_bStartRun==1 && -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_EDITPARAM,"" ) )
  647. {
  648. return -1;
  649. }
  650. if( g_bStartRun )
  651. {
  652. CAnalogSinglePropertyDlg dlg;
  653. dlg.m_pSet=m_ctrlAnalogGrid.m_pSet;
  654. dlg.m_operation=CAnalogSinglePropertyDlg::EDIT;
  655. if (dlg.DoModal() == IDOK)
  656. {
  657. CString sContent;
  658. sContent.Format("%s %s< %s >",g_strEdit,g_strVariant,dlg.m_sParamName.TrimRight() );
  659. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_EDIT,0,"",(char *)(LPCTSTR)sContent );
  660. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_EDIT,"",dlg.m_sUid,dlg.m_nVarID,"64320" );
  661. #if EDIT_VAR_IS_FRESH
  662. m_ctrlAnalogGrid.Invalidate(FALSE);
  663. Requery();
  664. m_ctrlAnalogGrid.Invalidate(TRUE);
  665. #endif
  666. }
  667. }
  668. else
  669. {
  670. CAnalogPropertyDlg dlg;
  671. dlg.m_pSet=m_ctrlAnalogGrid.m_pSet;
  672. dlg.m_operation=CAnalogPropertyDlg::EDIT;
  673. if (dlg.DoModal() == IDOK)
  674. {
  675. CString sContent;
  676. sContent.Format("%s %s< %s >",g_strEdit,g_strVariant,dlg.m_sParamName.TrimRight() );
  677. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_EDIT,0,"",(char *)(LPCTSTR)sContent );
  678. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_EDIT,"",dlg.m_sUid,dlg.m_nVarID,"64320" );
  679. #if EDIT_VAR_IS_FRESH
  680. m_ctrlAnalogGrid.Invalidate(FALSE);
  681. Requery();
  682. m_ctrlAnalogGrid.Invalidate(TRUE);
  683. #endif
  684. }
  685. }
  686. }
  687. break;
  688. }
  689. return CDialog::WindowProc(message, wParam, lParam);
  690. }
  691. BOOL CAnalogDlg::PreTranslateMessage(MSG* pMsg)
  692. {
  693. // TODO: 在此添加专用代码和/或调用基类
  694. if (pMsg-> message == WM_KEYDOWN)
  695. {
  696. if( pMsg-> wParam=='F')
  697. {
  698. if(::GetKeyState(VK_CONTROL) < 0)
  699. {
  700. ShowFindDlg();
  701. }
  702. }
  703. }
  704. return CDialog::PreTranslateMessage(pMsg);
  705. }
  706. void CAnalogDlg::ShowFindDlg()
  707. {
  708. if( g_pDlgParamFind==NULL )
  709. {
  710. g_pDlgParamFind = new CDlg_ParamFind();
  711. g_pDlgParamFind->Create( IDD_DLG_PARAMFIND,this );
  712. g_pDlgParamFind->m_pAnalog = this;
  713. CRect rectFrame,rect;
  714. this->GetWindowRect( rectFrame );
  715. rect.left = rectFrame.left;//rectFrame.left+rectFrame.Width()/2-250/2;
  716. rect.top = rectFrame.top;//rectFrame.top+rectFrame.Height()/2-500/2;
  717. rect.right = rect.left+250;
  718. rect.bottom = rect.top+150;
  719. g_pDlgParamFind->MoveWindow( rect );
  720. int count=0;
  721. for(int i=0;i<m_ctrlAnalogGrid.m_field.GetSize();i++)
  722. {
  723. if(m_ctrlAnalogGrid.m_field[i].Find)
  724. {
  725. g_pDlgParamFind->m_Comb_FindType.InsertString(count,m_ctrlAnalogGrid.m_field[i].Caption );
  726. count++;
  727. }
  728. }
  729. g_pDlgParamFind->m_Comb_FindType.SetCurSel( 0 );
  730. }
  731. g_pDlgParamFind->ShowWindow( true );
  732. }