CTV0101MF.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "AppGlobalF.h"
  4. #include "ITSSkinF.h"
  5. #include "ITSUtilF.h"
  6. #include "FrmCctvOprMainF.h"
  7. #include "ITSLangTransF.h"
  8. #pragma hdrstop
  9. #include "CTV0101MF.h"
  10. //---------------------------------------------------------------------------
  11. #pragma package(smart_init)
  12. #pragma link "cxClasses"
  13. #pragma link "cxControls"
  14. #pragma link "cxCustomData"
  15. #pragma link "cxData"
  16. #pragma link "cxDataStorage"
  17. #pragma link "cxEdit"
  18. #pragma link "cxFilter"
  19. #pragma link "cxGraphics"
  20. #pragma link "cxGrid"
  21. #pragma link "cxGridCustomTableView"
  22. #pragma link "cxGridCustomView"
  23. #pragma link "cxGridLevel"
  24. #pragma link "cxGridTableView"
  25. #pragma link "cxLookAndFeelPainters"
  26. #pragma link "cxLookAndFeels"
  27. #pragma link "cxStyles"
  28. #pragma link "cxTextEdit"
  29. #pragma link "dxSkinBlack"
  30. #pragma link "dxSkinBlue"
  31. #pragma link "dxSkinCaramel"
  32. #pragma link "dxSkinCoffee"
  33. #pragma link "dxSkinDarkRoom"
  34. #pragma link "dxSkinDarkSide"
  35. #pragma link "dxSkinFoggy"
  36. #pragma link "dxSkinGlassOceans"
  37. #pragma link "dxSkiniMaginary"
  38. #pragma link "dxSkinLilian"
  39. #pragma link "dxSkinLiquidSky"
  40. #pragma link "dxSkinLondonLiquidSky"
  41. #pragma link "dxSkinMcSkin"
  42. #pragma link "dxSkinMoneyTwins"
  43. #pragma link "dxSkinOffice2007Black"
  44. #pragma link "dxSkinOffice2007Blue"
  45. #pragma link "dxSkinOffice2007Green"
  46. #pragma link "dxSkinOffice2007Pink"
  47. #pragma link "dxSkinOffice2007Silver"
  48. #pragma link "dxSkinOffice2010Black"
  49. #pragma link "dxSkinOffice2010Blue"
  50. #pragma link "dxSkinOffice2010Silver"
  51. #pragma link "dxSkinsCore"
  52. #pragma link "dxSkinscxPCPainter"
  53. #pragma link "dxSkinSeven"
  54. #pragma link "dxSkinSharp"
  55. #pragma link "dxSkinSilver"
  56. #pragma link "dxSkinStardust"
  57. #pragma resource "*.dfm"
  58. //TCTV0101M *CTV0101M = NULL;
  59. //---------------------------------------------------------------------------
  60. __fastcall TCTV0101M::TCTV0101M(TComponent* Owner)
  61. : TForm(Owner)
  62. {
  63. FRow = 0;
  64. FCol = 0;
  65. FDeleted = false;
  66. FCTLR_NMBR = -1;
  67. FObjInfo = NULL;
  68. }
  69. //---------------------------------------------------------------------------
  70. void __fastcall TCTV0101M::FormCreate(TObject *Sender)
  71. {
  72. CreateStatusList();
  73. }
  74. //---------------------------------------------------------------------------
  75. void __fastcall TCTV0101M::FormDestroy(TObject *Sender)
  76. {
  77. //TForm::FormDestroy(Sender);
  78. }
  79. //---------------------------------------------------------------------------
  80. void __fastcall TCTV0101M::FormShow(TObject *Sender)
  81. {
  82. //
  83. }
  84. //---------------------------------------------------------------------------
  85. void __fastcall TCTV0101M::CommClose()
  86. {
  87. //CTV0101M = NULL;
  88. }
  89. //---------------------------------------------------------------------------
  90. bool __fastcall TCTV0101M::Initialize()
  91. {
  92. return true;
  93. }
  94. //---------------------------------------------------------------------------
  95. void __fastcall TCTV0101M::LoadLocalSkin()
  96. {
  97. //ParentColor = false;
  98. //PnlMain->ParentColor = true;
  99. //Color = clBlue;
  100. PnlCctv->ParentColor = false;
  101. PnlCctv->Color = clBlack;
  102. TvList->Styles->Inactive = NULL;
  103. TvList->Styles->ContentOdd = NULL;
  104. TvList->Styles->ContentEven= NULL;
  105. TvList->Styles->Selection = NULL;
  106. }
  107. //---------------------------------------------------------------------------
  108. void __fastcall TCTV0101M::CreateStatusList()
  109. {
  110. TvList->OptionsView->Header = false;
  111. CMM_ClearGridTableView(TvList);
  112. TcxGridDataController *pGDC = (TcxGridDataController *)TvList->DataController;
  113. try
  114. {
  115. int nRow;
  116. TvList->BeginUpdate();
  117. pGDC->BeginUpdate();
  118. nRow = pGDC->AppendRecord();
  119. pGDC->Values[nRow][Col00->Index] = "통신";
  120. pGDC->Values[nRow][Col01->Index] = "도어";
  121. pGDC->Values[nRow][Col02->Index] = "팬";
  122. pGDC->Values[nRow][Col03->Index] = "히터";
  123. nRow = pGDC->AppendRecord();
  124. nRow = pGDC->AppendRecord();
  125. pGDC->Values[nRow][Col00->Index] = "CAM";
  126. pGDC->Values[nRow][Col01->Index] = "문자";
  127. pGDC->Values[nRow][Col02->Index] = "배터리";
  128. pGDC->Values[nRow][Col03->Index] = "";
  129. nRow = pGDC->AppendRecord();
  130. nRow = pGDC->AppendRecord();
  131. pGDC->Values[nRow][Col00->Index] = "온도값";
  132. pGDC->Values[nRow][Col01->Index] = "입-전압";
  133. pGDC->Values[nRow][Col02->Index] = "출-전압";
  134. pGDC->Values[nRow][Col03->Index] = "";
  135. nRow = pGDC->AppendRecord();
  136. }
  137. __finally
  138. {
  139. pGDC->EndUpdate();
  140. TvList->EndUpdate();
  141. }
  142. SetCommErrorStatus();
  143. }
  144. //---------------------------------------------------------------------------
  145. void __fastcall TCTV0101M::SetCommErrorStatus()
  146. {
  147. #if 0
  148. TcxGridDataController *pGDC = (TcxGridDataController *)TvList->DataController;
  149. try
  150. {
  151. int nRow;
  152. TvList->BeginUpdate();
  153. pGDC->BeginUpdate();
  154. pGDC->Values[1][Col00->Index] = String(INT_STATE_ERROR);
  155. pGDC->Values[1][Col01->Index] = String(INT_STATE_UNKNOWN);
  156. pGDC->Values[1][Col02->Index] = String(INT_STATE_UNKNOWN);
  157. pGDC->Values[1][Col03->Index] = String(INT_STATE_UNKNOWN);
  158. pGDC->Values[3][Col00->Index] = String(INT_STATE_UNKNOWN);
  159. pGDC->Values[3][Col01->Index] = String(INT_STATE_UNKNOWN);
  160. pGDC->Values[3][Col02->Index] = String(INT_STATE_UNKNOWN);
  161. pGDC->Values[3][Col03->Index] = "";
  162. pGDC->Values[5][Col00->Index] = "-";//String(INT_STATE_UNKNOWN);
  163. pGDC->Values[5][Col01->Index] = "-";//String(INT_STATE_UNKNOWN);
  164. pGDC->Values[5][Col02->Index] = "-";//String(INT_STATE_UNKNOWN);
  165. pGDC->Values[5][Col03->Index] = "";
  166. }
  167. __finally
  168. {
  169. pGDC->EndUpdate();
  170. TvList->EndUpdate();
  171. }
  172. #endif
  173. }
  174. //---------------------------------------------------------------------------
  175. void __fastcall TCTV0101M::RefreshStatus()
  176. {
  177. #if 0
  178. if (!FObjInfo) return;
  179. try
  180. {
  181. if (FObjInfo->Comm != INT_STATE_NORMAL)
  182. {
  183. SetCommErrorStatus();
  184. return;
  185. }
  186. // 통신이 정상 일 경우 해당 상태정보를 업데이트 한다.
  187. TcxGridDataController *pGDC = (TcxGridDataController *)TvList->DataController;
  188. try
  189. {
  190. int nRow;
  191. TvList->BeginUpdate();
  192. pGDC->BeginUpdate();
  193. pGDC->Values[1][Col00->Index] = String(FObjInfo->Comm);
  194. pGDC->Values[1][Col01->Index] = String(FObjInfo->Door);
  195. pGDC->Values[1][Col02->Index] = String(FObjInfo->Fan);
  196. pGDC->Values[1][Col03->Index] = String(FObjInfo->Heater);
  197. pGDC->Values[3][Col00->Index] = String(FObjInfo->Camera);
  198. pGDC->Values[3][Col01->Index] = String(FObjInfo->SetString);
  199. pGDC->Values[3][Col02->Index] = String(FObjInfo->Battery);
  200. pGDC->Values[3][Col03->Index] = "";
  201. if (FObjInfo->Door == INT_STATE_UNKNOWN)
  202. {
  203. pGDC->Values[5][Col00->Index] = "-?-";
  204. pGDC->Values[5][Col01->Index] = "-?-";
  205. pGDC->Values[5][Col02->Index] = "-?-";
  206. }
  207. else
  208. {
  209. pGDC->Values[5][Col00->Index] = String(FObjInfo->Temp);
  210. pGDC->Values[5][Col01->Index] = String(FObjInfo->Voltage);
  211. pGDC->Values[5][Col02->Index] = String(FObjInfo->VoltageOut);
  212. }
  213. //pGDC->Values[5][Col02->Index] = "";
  214. pGDC->Values[5][Col03->Index] = "";
  215. }
  216. __finally
  217. {
  218. pGDC->EndUpdate();
  219. TvList->EndUpdate();
  220. }
  221. }
  222. catch(...)
  223. {
  224. }
  225. #endif
  226. }
  227. //---------------------------------------------------------------------------
  228. void __fastcall TCTV0101M::TvListCustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  229. bool &ADone)
  230. {
  231. #if 0
  232. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  233. if (nRecordIdx < 0)
  234. {
  235. return;
  236. }
  237. try
  238. {
  239. int nItemIdx = AViewInfo->Item->Index;
  240. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return;
  241. String sStatus = AViewInfo->GridRecord->DisplayTexts[nItemIdx];
  242. sStatus = sStatus.Trim();
  243. int nStatus = -1;
  244. if (nRecordIdx == 1)
  245. {
  246. if (sStatus == "0") nStatus = 0;
  247. else if (sStatus == "1") nStatus = 1;
  248. else if (sStatus == "2") nStatus = 2;
  249. else return;
  250. switch(nItemIdx)
  251. {
  252. case 0: // Comm
  253. if (nStatus == INT_STATE_ERROR)
  254. ACanvas->Canvas->Brush->Color = clRed;
  255. else
  256. ACanvas->Canvas->Brush->Color = clLime;
  257. break;
  258. case 1: // Door
  259. if (nStatus == INT_STATE_CLOSE)
  260. ACanvas->Canvas->Brush->Color = clLime;
  261. else
  262. if (nStatus == INT_STATE_OPEN)
  263. ACanvas->Canvas->Brush->Color = clRed;
  264. else
  265. ACanvas->Canvas->Brush->Color = clSilver; // status unknown
  266. break;
  267. case 2: // Fan
  268. if (nStatus == INT_STATE_STOP)
  269. ACanvas->Canvas->Brush->Color = clLime;
  270. else
  271. if (nStatus == INT_STATE_RUN)
  272. ACanvas->Canvas->Brush->Color = clYellow;
  273. else
  274. ACanvas->Canvas->Brush->Color = clSilver; // status unknown;
  275. break;
  276. case 3: // Heater
  277. if (nStatus == INT_STATE_STOP)
  278. ACanvas->Canvas->Brush->Color = clLime;
  279. else
  280. if (nStatus == INT_STATE_RUN)
  281. ACanvas->Canvas->Brush->Color = clYellow;
  282. else
  283. ACanvas->Canvas->Brush->Color = clSilver; // status unknown;
  284. break;
  285. }
  286. ACanvas->Canvas->Font->Color = ACanvas->Canvas->Brush->Color;
  287. }
  288. else
  289. if (nRecordIdx == 3)
  290. {
  291. if (sStatus == "0") nStatus = 0;
  292. else if (sStatus == "1") nStatus = 1;
  293. else if (sStatus == "2") nStatus = 2;
  294. else return;
  295. switch(nItemIdx)
  296. {
  297. case 0: // CAM
  298. if (nStatus == INT_STATE_ERROR)
  299. ACanvas->Canvas->Brush->Color = clRed;
  300. else
  301. if (nStatus == INT_STATE_NORMAL)
  302. ACanvas->Canvas->Brush->Color = clLime;
  303. else
  304. ACanvas->Canvas->Brush->Color = clSilver; // status unknown;
  305. break;
  306. case 1: // Text
  307. if (nStatus == INT_STATE_ERROR)
  308. ACanvas->Canvas->Brush->Color = clRed;
  309. else
  310. if (nStatus == INT_STATE_NORMAL)
  311. ACanvas->Canvas->Brush->Color = clLime;
  312. else
  313. ACanvas->Canvas->Brush->Color = clSilver; // status unknown;
  314. break;
  315. case 2: // Battery
  316. if (nStatus == INT_STATE_ERROR)
  317. ACanvas->Canvas->Brush->Color = clRed;
  318. else
  319. if (nStatus == INT_STATE_NORMAL)
  320. ACanvas->Canvas->Brush->Color = clLime;
  321. else
  322. ACanvas->Canvas->Brush->Color = clSilver; // status unknown;
  323. break;
  324. }
  325. ACanvas->Canvas->Font->Color = ACanvas->Canvas->Brush->Color;
  326. }
  327. else
  328. {
  329. ACanvas->Canvas->Brush->Color = clWhite;
  330. ACanvas->Canvas->Font->Color = clBlack;
  331. }
  332. }
  333. catch(...)
  334. {
  335. }
  336. #endif
  337. }
  338. //---------------------------------------------------------------------------
  339. void __fastcall TCTV0101M::MnuNetworkPingClick(TObject *Sender)
  340. {
  341. if (!FObjInfo) return;
  342. String sCmd = "open";
  343. String sCmdParam = "ping.exe";
  344. ShellExecute(NULL, sCmd.c_str(), sCmdParam.c_str(), FObjInfo->CCTV_CTLR_IP.c_str(), NULL, SW_SHOWNORMAL);
  345. }
  346. //---------------------------------------------------------------------------