AnalogDlg.cpp 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872
  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.EnableWindow( false );
  107. m_btnDel.EnableWindow( false );
  108. m_btnAdd.EnableWindow( false );
  109. //m_btnCopy.ShowWindow(SW_HIDE);
  110. //m_btnDel.ShowWindow(SW_HIDE);
  111. //m_btnAdd.ShowWindow(SW_HIDE);
  112. }
  113. SetFields();
  114. if( g_bStartRun==1 && -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_EDITPARAM,"" ) )
  115. {
  116. m_btnEdit.EnableWindow( false );
  117. }
  118. if( g_bStartRun==1 && -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_SETSTATUS,"" ) )
  119. {
  120. m_btnSetStatus.EnableWindow( false );
  121. }
  122. if( g_bStartRun==1 && -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_TIME_PLAN,"" ) )
  123. {
  124. m_btnDatePlan.EnableWindow( false );
  125. }
  126. return TRUE; // return TRUE unless you set the focus to a control
  127. // EXCEPTION: OCX Property Pages should return FALSE
  128. }
  129. void CAnalogDlg::SetFields()
  130. {
  131. int iIndex = 0;
  132. m_ctrlAnalogGrid.m_field.SetSize(38);
  133. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("id");
  134. m_ctrlAnalogGrid.m_field[iIndex].Caption=_T("ID");
  135. m_ctrlAnalogGrid.m_field[iIndex].With=50;
  136. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  137. iIndex++;
  138. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("boolreserved3");
  139. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strIsModify;
  140. m_ctrlAnalogGrid.m_field[iIndex].With=80;
  141. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  142. iIndex++;
  143. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("boolreserved2");
  144. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strIsNotice;
  145. m_ctrlAnalogGrid.m_field[iIndex].With=110;
  146. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  147. iIndex++;
  148. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("uid");
  149. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strVarUid1;
  150. m_ctrlAnalogGrid.m_field[iIndex].With=80;
  151. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  152. iIndex++;
  153. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("varname");
  154. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strVarName1;
  155. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  156. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  157. iIndex++;
  158. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("description");
  159. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strVarDesc;
  160. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  161. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  162. iIndex++;
  163. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("vartypeid");
  164. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strVarTypeID;
  165. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  166. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  167. iIndex++;
  168. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("datalen");
  169. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strVarDataLen;
  170. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  171. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  172. iIndex++;
  173. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("ondesc");
  174. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strOnDesc;
  175. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  176. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  177. iIndex++;
  178. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("offdesc");
  179. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strOffDesc;
  180. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  181. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  182. iIndex++;
  183. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("maxvalues");
  184. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strMaxValues;
  185. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  186. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  187. iIndex++;
  188. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("minvalues");
  189. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strMinValues;
  190. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  191. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  192. iIndex++;
  193. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("maxconvtrate");
  194. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strMaxScale;
  195. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  196. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  197. iIndex++;
  198. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("minconvtrate");
  199. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strMinScale;
  200. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  201. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  202. iIndex++;
  203. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("lowerlimit");
  204. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strLowerLimit;
  205. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  206. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  207. iIndex++;
  208. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("upperlimit");
  209. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strUpperLimit;
  210. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  211. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  212. iIndex++;
  213. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("normalstate");
  214. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strNormalState;
  215. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  216. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  217. iIndex++;
  218. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("setvalue");
  219. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strSetValue;
  220. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  221. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  222. iIndex++;
  223. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("rearm");
  224. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strRearm;
  225. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  226. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  227. iIndex++;
  228. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("offsets");
  229. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strOffset;
  230. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  231. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  232. iIndex++;
  233. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("unit");
  234. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strUint;
  235. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  236. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  237. iIndex++;
  238. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("collectfrequence");
  239. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strCollectFreq;
  240. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  241. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  242. iIndex++;
  243. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("coefficient");
  244. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strCoef;
  245. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  246. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  247. iIndex++;
  248. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("warnlevel");
  249. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strAlarmLevel;
  250. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  251. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  252. iIndex++;
  253. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("readonly");
  254. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strReadWrite;
  255. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  256. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  257. iIndex++;
  258. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("issave");
  259. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strSaveData;
  260. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  261. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  262. iIndex++;
  263. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("realtimeflag");
  264. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strCollectThreadData;
  265. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  266. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  267. iIndex++;
  268. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("reccurve");
  269. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strSaveCurve;
  270. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  271. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  272. iIndex++;
  273. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("isdde");
  274. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strIsDDE;
  275. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  276. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  277. iIndex++;
  278. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("registernum");
  279. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strRegNum;
  280. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  281. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  282. iIndex++;
  283. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("funcid");
  284. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strFuncID;
  285. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  286. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  287. iIndex++;
  288. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("childid");
  289. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strChildID;
  290. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  291. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  292. iIndex++;
  293. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("var_item_id");
  294. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strItemID;
  295. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  296. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  297. iIndex++;
  298. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("snmpoid");
  299. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strSnmpOid;
  300. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  301. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  302. iIndex++;
  303. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("fields");
  304. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strSnmpPublic;
  305. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  306. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  307. iIndex++;
  308. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("intreserved1");
  309. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strParamInit;
  310. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  311. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  312. iIndex++;
  313. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("intreserved2");
  314. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strParamMin;
  315. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  316. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  317. iIndex++;
  318. m_ctrlAnalogGrid.m_field[iIndex].Field=_T("intreserved3");
  319. m_ctrlAnalogGrid.m_field[iIndex].Caption=g_strParamMax;
  320. m_ctrlAnalogGrid.m_field[iIndex].With=200;
  321. m_ctrlAnalogGrid.m_field[iIndex].Find=true;
  322. iIndex++;
  323. Requery();
  324. // m_ctrlAnalogGrid.Execute(m_pConnection,"ProductId"/*Primary key field */
  325. // ,"*"//fields in SELECT statment
  326. // ,"Products" //from
  327. // ,"" // where
  328. // ,0); // order by N of the Grid column
  329. }
  330. void CAnalogDlg::Requery()
  331. {
  332. CString strWhere, str;
  333. int nVarSize = pVariantsManager->m_analog.GetSize();
  334. if( nVarSize > 0 )
  335. {
  336. strWhere = " id in (";
  337. }
  338. for( int i = 0; i < nVarSize; i++ )
  339. {
  340. pVariantsManager->m_analog[i]->m_nVarID;
  341. if( i == nVarSize - 1 )
  342. {
  343. str.Format("%d)", pVariantsManager->m_analog[i]->m_nVarID);
  344. strWhere += str;
  345. }
  346. else
  347. {
  348. str.Format("%d, ", pVariantsManager->m_analog[i]->m_nVarID);
  349. strWhere += str;
  350. }
  351. }
  352. m_ctrlAnalogGrid.Execute(_T("id")/*Primary key field */
  353. ,_T("*")//fields in SELECT statment
  354. ,_T("t_dev_variant") //from
  355. ,strWhere // where
  356. ,0); // order by N of the Grid column
  357. //
  358. }
  359. BEGIN_EVENTSINK_MAP(CAnalogDlg, CDialog)
  360. //{{AFX_EVENTSINK_MAP(CAnalogDlg)
  361. //}}AFX_EVENTSINK_MAP
  362. END_EVENTSINK_MAP()
  363. void CAnalogDlg::OnBnClickedAddanalog()
  364. {
  365. // TODO: 在此添加控件通知处理程序代码
  366. CAnalogPropertyDlg dlg;
  367. dlg.m_pSet = m_ctrlAnalogGrid.m_pSet;
  368. dlg.m_operation = CAnalogPropertyDlg::NEW;
  369. if (dlg.DoModal() == 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_sVarName.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_sVarName.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_sVarName.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_sVarName.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. if( pAnalog==NULL )
  575. return;
  576. list<string> listStatusID, listStatusDesc;
  577. list<string>::iterator itStatusID, itStatusDesc;
  578. int nCount = 0;
  579. nCount = CDBInterface::GetInstancePtr()->GetVarStatusList(
  580. (char *)(LPCTSTR)dlg.m_strUID,
  581. dlg.m_nVarID,
  582. listStatusID,
  583. listStatusDesc);
  584. if( nCount > 0 )
  585. {
  586. list<int>::iterator it;
  587. list<CString>::iterator it_desc;
  588. for( it = pAnalog->m_listStatusID.begin(); it != pAnalog->m_listStatusID.end(); )
  589. {
  590. pAnalog->m_listStatusID.erase( it++ );
  591. }
  592. for( it_desc = pAnalog->m_listStatusDesc.begin(); it_desc != pAnalog->m_listStatusDesc.end(); )
  593. {
  594. pAnalog->m_listStatusDesc.erase( it_desc++ );
  595. }
  596. }
  597. for( itStatusID = listStatusID.begin(), itStatusDesc = listStatusDesc.begin();
  598. itStatusID != listStatusID.end(), itStatusDesc != listStatusDesc.end();
  599. itStatusID++, itStatusDesc++)
  600. {
  601. pAnalog->m_listStatusID.insert( pAnalog->m_listStatusID.end(), atoi((*itStatusID).c_str()) );
  602. pAnalog->m_listStatusDesc.insert( pAnalog->m_listStatusDesc.end(), (*itStatusDesc).c_str() );
  603. }
  604. }
  605. void CAnalogDlg::OnBnClickedBtnDatePlan()
  606. {
  607. // TODO: 在此添加控件通知处理程序代码
  608. int nRow=m_ctrlAnalogGrid.IsSelectRow();
  609. if(nRow==-1)
  610. {
  611. MessageBox(g_strSelLine, g_strTip, MB_ICONINFORMATION);
  612. return;
  613. }
  614. int nVarID = atoi(m_ctrlAnalogGrid.GetCell( nRow, 0 )->GetText());
  615. CString strDevUID = m_ctrlAnalogGrid.GetCell( nRow, 3)->GetText();
  616. CDlgDatePlan dlg;
  617. dlg.m_nPlanType = PLAN_TYPE_EQUIP;
  618. dlg.m_strUid = strDevUID;
  619. dlg.m_nVarID = nVarID;
  620. if(dlg.DoModal() == IDOK)
  621. {
  622. CString sContent;
  623. sContent.Format("%s %s< %s >",g_strEdit,g_strVariant,m_ctrlAnalogGrid.GetCell( nRow, 0 )->GetText() );
  624. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_TIMEPLAN_EIDT,0,"",(char *)(LPCTSTR)sContent );
  625. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_EDIT,"",dlg.m_strUid,dlg.m_nVarID,"64320" );
  626. //pVariantsManager->AllocDatePlan();
  627. }
  628. }
  629. void CAnalogDlg::OnBnClickedBtnClose()
  630. {
  631. // TODO: 在此添加控件通知处理程序代码
  632. //pVariantsManager->Store(g_strDirectory);
  633. OnCancel();
  634. }
  635. void CAnalogDlg::OnClose()
  636. {
  637. // TODO: 在此添加消息处理程序代码和/或调用默认值
  638. //pVariantsManager->Store(g_strDirectory);
  639. CDialog::OnClose();
  640. }
  641. LRESULT CAnalogDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
  642. {
  643. // TODO: 在此添加专用代码和/或调用基类
  644. switch( message )
  645. {
  646. case WM_DCLICK:
  647. {
  648. if( g_bStartRun==1 && -1==PMS_VerifyUserPermit( g_nUserID,PMS_P_EDITPARAM,"" ) )
  649. {
  650. return -1;
  651. }
  652. if( g_bStartRun )
  653. {
  654. CAnalogSinglePropertyDlg dlg;
  655. dlg.m_pSet=m_ctrlAnalogGrid.m_pSet;
  656. dlg.m_operation=CAnalogSinglePropertyDlg::EDIT;
  657. if (dlg.DoModal() == IDOK)
  658. {
  659. CString sContent;
  660. sContent.Format("%s %s< %s >",g_strEdit,g_strVariant,dlg.m_sVarName.TrimRight() );
  661. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_EDIT,0,"",(char *)(LPCTSTR)sContent );
  662. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_EDIT,"",dlg.m_sUid,dlg.m_nVarID,"64320" );
  663. #if EDIT_VAR_IS_FRESH
  664. m_ctrlAnalogGrid.Invalidate(FALSE);
  665. Requery();
  666. m_ctrlAnalogGrid.Invalidate(TRUE);
  667. #endif
  668. }
  669. }
  670. else
  671. {
  672. CAnalogPropertyDlg dlg;
  673. dlg.m_pSet=m_ctrlAnalogGrid.m_pSet;
  674. dlg.m_operation=CAnalogPropertyDlg::EDIT;
  675. if (dlg.DoModal() == IDOK)
  676. {
  677. CString sContent;
  678. sContent.Format("%s %s< %s >",g_strEdit,g_strVariant,dlg.m_sVarName.TrimRight() );
  679. CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_PARAM_EDIT,0,"",(char *)(LPCTSTR)sContent );
  680. pDevicesManager->SendNoticeToServer( CMD_NOTICE_READ_DB_VAR,CMD_OPERATE_EDIT,"",dlg.m_sUid,dlg.m_nVarID,"64320" );
  681. #if EDIT_VAR_IS_FRESH
  682. m_ctrlAnalogGrid.Invalidate(FALSE);
  683. Requery();
  684. m_ctrlAnalogGrid.Invalidate(TRUE);
  685. #endif
  686. }
  687. }
  688. }
  689. break;
  690. }
  691. return CDialog::WindowProc(message, wParam, lParam);
  692. }
  693. BOOL CAnalogDlg::PreTranslateMessage(MSG* pMsg)
  694. {
  695. // TODO: 在此添加专用代码和/或调用基类
  696. if (pMsg-> message == WM_KEYDOWN)
  697. {
  698. if( pMsg-> wParam=='F')
  699. {
  700. if(::GetKeyState(VK_CONTROL) < 0)
  701. {
  702. ShowFindDlg();
  703. }
  704. }
  705. }
  706. return CDialog::PreTranslateMessage(pMsg);
  707. }
  708. void CAnalogDlg::ShowFindDlg()
  709. {
  710. if( g_pDlgParamFind==NULL )
  711. {
  712. g_pDlgParamFind = new CDlg_ParamFind();
  713. g_pDlgParamFind->Create( IDD_DLG_PARAMFIND,this );
  714. g_pDlgParamFind->m_pAnalog = this;
  715. CRect rectFrame,rect;
  716. this->GetWindowRect( rectFrame );
  717. rect.left = rectFrame.left;//rectFrame.left+rectFrame.Width()/2-250/2;
  718. rect.top = rectFrame.top;//rectFrame.top+rectFrame.Height()/2-500/2;
  719. rect.right = rect.left+250;
  720. rect.bottom = rect.top+150;
  721. g_pDlgParamFind->MoveWindow( rect );
  722. int count=0;
  723. for(int i=0;i<m_ctrlAnalogGrid.m_field.GetSize();i++)
  724. {
  725. if(m_ctrlAnalogGrid.m_field[i].Find)
  726. {
  727. g_pDlgParamFind->m_Comb_FindType.InsertString(count,m_ctrlAnalogGrid.m_field[i].Caption );
  728. count++;
  729. }
  730. }
  731. g_pDlgParamFind->m_Comb_FindType.SetCurSel( 0 );
  732. }
  733. g_pDlgParamFind->ShowWindow( true );
  734. }