VMSM500MSRCF.cpp 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include <vcl.h>
  4. #include "ITSSkinF.h"
  5. #include "ITSUtilF.h"
  6. #include "AppGlobalF.h"
  7. #include "CDSVmsFormF.h"
  8. #pragma hdrstop
  9. #include "VMSM500MF.h"
  10. #include "VMSM500MSRCF.h"
  11. //---------------------------------------------------------------------------
  12. #pragma package(smart_init)
  13. //폼유형
  14. void __fastcall TVMSM500M::FillVmsFormType(TcxComboBox *ACombo)
  15. {
  16. String sQry;
  17. TADOQuery *pADO = NULL;
  18. ACombo->Properties->Items->Clear();
  19. sQry = "SELECT VMS_FORM_TYPE_CD AS CD, \r\n"
  20. " VMS_FORM_TYPE_NM AS NM, \r\n"
  21. " USE_YN \r\n"
  22. " FROM TB_VMS_FORM_TYPE \r\n"
  23. " ORDER BY CD ASC \r\n";
  24. try
  25. {
  26. try
  27. {
  28. pADO = new TADOQuery(NULL);
  29. pADO->Close();
  30. pADO->Connection = ITSDb_GetConnection();
  31. ITSDb_SQLText(pADO, sQry);
  32. ITSDb_SQLOpen(pADO);
  33. for( ; !pADO->Eof; pADO->Next())
  34. {
  35. String sUse = pADO->FieldByName("USE_YN")->AsString;
  36. if (sUse != "Y") continue;
  37. String sCd = pADO->FieldByName("CD")->AsString;
  38. String sNm = pADO->FieldByName("NM")->AsString;
  39. ACombo->Properties->Items->Add(" [" + sCd + "] " + sNm);
  40. }
  41. ACombo->ItemIndex = 0;
  42. }
  43. catch(EDatabaseError &E)
  44. {
  45. DBERRORMSG("TVMSM500M::FillVmsFormType", String(E.ClassName()), E.Message, sQry);
  46. throw Exception(String(E.ClassName()) + E.Message);
  47. }
  48. catch(Exception &exception)
  49. {
  50. DBERRORMSG("TVMSM500M::FillVmsFormType", String(exception.ClassName()), exception.Message, sQry);
  51. throw Exception(String(exception.ClassName()) + exception.Message);
  52. }
  53. }
  54. __finally
  55. {
  56. if (pADO)
  57. {
  58. pADO->Close();
  59. delete pADO;
  60. }
  61. }
  62. }
  63. //---------------------------------------------------------------------------
  64. //표출방법
  65. void __fastcall TVMSM500M::FillVmsFormDispMode(TcxComboBox *ACombo)
  66. {
  67. String sQry;
  68. TADOQuery *pADO = NULL;
  69. ACombo->Properties->Items->Clear();
  70. sQry = "SELECT VMS_FORM_DSPL_MTHD_CD AS CD, \r\n"
  71. " VMS_FORM_DSPL_MTHD_NM AS NM, \r\n"
  72. " USE_YN \r\n"
  73. " FROM TB_VMS_FORM_DSPL_MTHD \r\n"
  74. " ORDER BY CD ASC \r\n";
  75. try
  76. {
  77. try
  78. {
  79. pADO = new TADOQuery(NULL);
  80. pADO->Close();
  81. pADO->Connection = ITSDb_GetConnection();
  82. ITSDb_SQLText(pADO, sQry);
  83. ITSDb_SQLOpen(pADO);
  84. for( ; !pADO->Eof; pADO->Next())
  85. {
  86. String sUse = pADO->FieldByName("USE_YN")->AsString;
  87. if (sUse != "Y") continue;
  88. String sCd = pADO->FieldByName("CD")->AsString;
  89. String sNm = pADO->FieldByName("NM")->AsString;
  90. ACombo->Properties->Items->Add(" [" + sCd + "] " + sNm);
  91. }
  92. ACombo->ItemIndex = 0;
  93. }
  94. catch(EDatabaseError &E)
  95. {
  96. DBERRORMSG("TVMSM500M::FillVmsFormDispMode", String(E.ClassName()), E.Message, sQry);
  97. throw Exception(String(E.ClassName()) + E.Message);
  98. }
  99. catch(Exception &exception)
  100. {
  101. DBERRORMSG("TVMSM500M::FillVmsFormDispMode", String(exception.ClassName()), exception.Message, sQry);
  102. throw Exception(String(exception.ClassName()) + exception.Message);
  103. }
  104. }
  105. __finally
  106. {
  107. if (pADO)
  108. {
  109. pADO->Close();
  110. delete pADO;
  111. }
  112. }
  113. }
  114. //---------------------------------------------------------------------------
  115. //표출방향
  116. void __fastcall TVMSM500M::FillVmsFormDispDir(TcxComboBox *ACombo)
  117. {
  118. String sQry;
  119. TADOQuery *pADO = NULL;
  120. ACombo->Properties->Items->Clear();
  121. sQry = "SELECT VMS_FORM_DSPL_DRCT_CD AS CD, \r\n"
  122. " VMS_FORM_DSPL_DRCT_NM AS NM, \r\n"
  123. " USE_YN \r\n"
  124. " FROM TB_VMS_FORM_DSPL_DRCT \r\n"
  125. " ORDER BY CD ASC \r\n";
  126. try
  127. {
  128. try
  129. {
  130. pADO = new TADOQuery(NULL);
  131. pADO->Close();
  132. pADO->Connection = ITSDb_GetConnection();
  133. ITSDb_SQLText(pADO, sQry);
  134. ITSDb_SQLOpen(pADO);
  135. for( ; !pADO->Eof; pADO->Next())
  136. {
  137. String sUse = pADO->FieldByName("USE_YN")->AsString;
  138. if (sUse != "Y") continue;
  139. String sCd = pADO->FieldByName("CD")->AsString;
  140. String sNm = pADO->FieldByName("NM")->AsString;
  141. ACombo->Properties->Items->Add(" [" + sCd + "] " + sNm);
  142. }
  143. ACombo->ItemIndex = 0;
  144. }
  145. catch(EDatabaseError &E)
  146. {
  147. DBERRORMSG("TVMSM500M::FillVmsFormDispDir", String(E.ClassName()), E.Message, sQry);
  148. throw Exception(String(E.ClassName()) + E.Message);
  149. }
  150. catch(Exception &exception)
  151. {
  152. DBERRORMSG("TVMSM500M::FillVmsFormDispDir", String(exception.ClassName()), exception.Message, sQry);
  153. throw Exception(String(exception.ClassName()) + exception.Message);
  154. }
  155. }
  156. __finally
  157. {
  158. if (pADO)
  159. {
  160. pADO->Close();
  161. delete pADO;
  162. }
  163. }
  164. }
  165. //---------------------------------------------------------------------------
  166. //VMS Font
  167. void __fastcall TVMSM500M::FillVmsFont(TcxComboBox *ACombo)
  168. {
  169. String sQry;
  170. TADOQuery *pADO = NULL;
  171. ACombo->Properties->Items->Clear();
  172. sQry = "SELECT VMS_FONT_NAME_CD AS CD, \r\n"
  173. " VMS_FONT_NAME_NM AS NM, \r\n"
  174. " USE_YN \r\n"
  175. " FROM TB_VMS_FONT_NAME \r\n"
  176. " ORDER BY CD ASC \r\n";
  177. try
  178. {
  179. try
  180. {
  181. pADO = new TADOQuery(NULL);
  182. pADO->Close();
  183. pADO->Connection = ITSDb_GetConnection();
  184. ITSDb_SQLText(pADO, sQry);
  185. ITSDb_SQLOpen(pADO);
  186. for( ; !pADO->Eof; pADO->Next())
  187. {
  188. String sUse = pADO->FieldByName("USE_YN")->AsString;
  189. if (sUse != "Y") continue;
  190. String sCd = pADO->FieldByName("CD")->AsString;
  191. String sNm = pADO->FieldByName("NM")->AsString;
  192. ACombo->Properties->Items->Add(" [" + sCd + "] " + sNm);
  193. }
  194. ACombo->ItemIndex = 0;
  195. }
  196. catch(EDatabaseError &E)
  197. {
  198. DBERRORMSG("TVMSM500M::FillVmsFont", String(E.ClassName()), E.Message, sQry);
  199. throw Exception(String(E.ClassName()) + E.Message);
  200. }
  201. catch(Exception &exception)
  202. {
  203. DBERRORMSG("TVMSM500M::FillVmsFont", String(exception.ClassName()), exception.Message, sQry);
  204. throw Exception(String(exception.ClassName()) + exception.Message);
  205. }
  206. }
  207. __finally
  208. {
  209. if (pADO)
  210. {
  211. pADO->Close();
  212. delete pADO;
  213. }
  214. }
  215. }
  216. //---------------------------------------------------------------------------
  217. void __fastcall TVMSM500M::LoadFormObjectInfo(String AFormId, TVmsFormDesigner *ADesigner, String AFormType)
  218. {
  219. ADesigner->Clear();
  220. String sQry;
  221. TADOQuery *pADO = NULL;
  222. sQry = "SELECT A.*, \r\n"
  223. " C.VMS_FONT_NAME_NM, \r\n"
  224. " B.IMAG_DATA AS SYMB_IMG, \r\n"
  225. " B.SYMB_EXPL AS SYMB_IMG_NM \r\n"
  226. " FROM TB_VMS_FORM_OBJECT A, \r\n"
  227. " TB_VMS_SYMB_LIB B, \r\n"
  228. " TB_VMS_FONT_NAME C \r\n"
  229. " WHERE A.VMS_FORM_ID = :p01 \r\n"
  230. " AND A.SYMB_LIB_NMBR = B.SYMB_LIB_NMBR(+) \r\n"
  231. " AND A.VMS_FONT_NAME_CD = C.VMS_FONT_NAME_CD(+) \r\n"
  232. " ORDER BY A.VMS_FORM_OBJECT_ID ASC \r\n";
  233. try
  234. {
  235. try
  236. {
  237. pADO = new TADOQuery(NULL);
  238. pADO->Close();
  239. pADO->Connection = ITSDb_GetConnection();
  240. ITSDb_SQLText(pADO, sQry);
  241. ITSDb_SQLBind(pADO, "p01", AFormId);
  242. ITSDb_SQLOpen(pADO);
  243. int nDrawType;
  244. String sObjKind;
  245. for( ; !pADO->Eof; pADO->Next())
  246. {
  247. int nFormId = pADO->FieldByName("VMS_FORM_ID")->AsInteger;
  248. int nObjId = pADO->FieldByName("VMS_FORM_OBJECT_ID")->AsInteger;
  249. int nObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsInteger;
  250. if (nObjType == 1 || //이미지 심볼
  251. nObjType == 2 || //파일이미지
  252. nObjType == 3 || //소통정보이미지
  253. nObjType == 17 || //소통이미지1
  254. nObjType == 27 || //소통이미지2
  255. nObjType == 37 || //소통이미지3
  256. nObjType == 47 || //소통이미지4
  257. nObjType == 200 || //동영상
  258. nObjType == 300 || //스트리밍영상
  259. nObjType == 406 || //@통합대기등급 이미지
  260. nObjType == 407 || //@미세먼지등급 이미지
  261. nObjType == 408 || //@초미세먼지등급 이미지
  262. nObjType == 413 //@오존등급이미지
  263. )
  264. {
  265. if (nObjType == 3) sObjKind = OBJKIND_IMAGE;
  266. else sObjKind = OBJKIND_IMAGEID;
  267. nDrawType = 1; //이미지그리기
  268. }
  269. else
  270. {
  271. sObjKind = OBJKIND_TEXT; //문자열
  272. nDrawType = 0; //문자열그리기
  273. }
  274. int nBlinking = pADO->FieldByName("VMS_DSPL_BLINKING")->AsInteger;
  275. int nPosX = pADO->FieldByName("VMS_DSPL_XCRDN")->AsInteger;
  276. int nPosY = pADO->FieldByName("VMS_DSPL_YCRDN")->AsInteger;
  277. int nWidth = pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger;
  278. int nHeight = pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger;
  279. TVmsFormObject *pObj = ADesigner->AddObject((VmsObjectDrawType)nDrawType);
  280. if (!pObj) continue;
  281. if (nObjType == 200 || nObjType == 300)
  282. {
  283. pObj->EditMode = false;
  284. }
  285. String sIfscId = pADO->FieldByName("VMS_IFSC_ID")->AsString;
  286. String sFillCd = pADO->FieldByName("TRFC_FILL_CD")->AsString;
  287. pObj->ObjSeq = nObjId;
  288. pObj->ObjId = nObjId;
  289. pObj->ObjKind = sObjKind;
  290. pObj->Tag = sIfscId;
  291. if (AFormType == "15")
  292. {
  293. if (nObjType == 0 || nObjType == 1 || nObjType == 2)
  294. {
  295. pObj->Tag = sFillCd;
  296. }
  297. }
  298. pObj->ObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsString;
  299. pObj->ObjSize = pADO->FieldByName("VMS_DSPL_SIZE")->AsInteger;
  300. pObj->BkColorCode = pADO->FieldByName("VMS_DSPL_BKCOLOR")->AsString;
  301. pObj->Blink = nBlinking == 1 ? true : false;
  302. pObj->ImageId = pADO->FieldByName("SYMB_LIB_NMBR")->AsString;
  303. pObj->Text = pADO->FieldByName("VMS_DSPL_TXT")->AsString;
  304. pObj->RunText = pObj->Text;
  305. pObj->SetPos(nPosX, nPosY);
  306. if (pObj->ObjKind == OBJKIND_TEXT) // 문자열
  307. {
  308. int nFontBold = pADO->FieldByName("VMS_FONT_BOLD")->AsInteger;
  309. pObj->FontName = pADO->FieldByName("VMS_FONT_NAME_NM")->AsString;
  310. pObj->FontNameCode = pADO->FieldByName("VMS_FONT_NAME_CD")->AsString;
  311. pObj->FontColorCode = pADO->FieldByName("VMS_FONT_COLR_CD")->AsString;
  312. pObj->FontSize = pADO->FieldByName("VMS_FONT_SIZE")->AsInteger;
  313. pObj->FontBold = nFontBold == 1 ? true : false;
  314. pObj->TextAlign = pADO->FieldByName("VMS_FONT_ALIGN")->AsInteger;
  315. //pObj->SetPos(nPosX, nPosY);
  316. //pObj->SetSize(pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger, pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger);
  317. }
  318. else //if (sObjKind == "1" || sObjKind == "2") // 이미지(1), 이미지 ID(2)
  319. {
  320. if (pObj->ObjKind == OBJKIND_IMAGEID)
  321. {
  322. if (pObj->Text.Trim() == "")
  323. {
  324. pObj->Text = pObj->ImageId;
  325. }
  326. }
  327. TStream *pStream = NULL;
  328. pStream = pADO->CreateBlobStream(pADO->FieldByName("VMS_DSPL_FIGR"), bmRead);
  329. try
  330. {
  331. if (pStream && pStream->Size > 0)
  332. {
  333. Graphics::TBitmap *Bitmap = pObj->GetBitmap();
  334. pStream->Position = 0;
  335. Bitmap->LoadFromStream(pStream);
  336. #ifdef IMAGE_RESIZE
  337. #if 0
  338. if (nObjType == 1 || nObjType == 2)
  339. {
  340. pObj->GetImage()->AutoSize= false;
  341. pObj->GetImage()->Stretch = true;
  342. pObj->GetImage()->Width = nWidth;
  343. pObj->GetImage()->Height = nHeight;
  344. pObj->SetSize(nWidth, nHeight);
  345. pObj->SetPos(nPosX, nPosY);
  346. }
  347. else
  348. {
  349. pObj->SetSize(Bitmap->Width, Bitmap->Height);
  350. }
  351. #else
  352. switch(nObjType)
  353. {
  354. case 1: //심볼
  355. case 2: //이미지
  356. case 3: //소통정보배경이미지
  357. case 17: //소통정보이미지1
  358. case 27: //소통정보이미지2
  359. case 37: //소통정보이미지3
  360. case 47: //소통정보이미지4
  361. case 167: //@우회소통정보이미지
  362. case 200: //동영상이미지
  363. case 300: //스트리밍영상이미지
  364. case 406: //@통합대기등급 이미지
  365. case 407: //@미세먼지등급 이미지
  366. case 408: //@초미세먼지등급 이미지
  367. case 413: //@오존등급이미지
  368. pObj->GetImage()->AutoSize= false;
  369. pObj->GetImage()->Stretch = true;
  370. pObj->GetImage()->Width = nWidth;
  371. pObj->GetImage()->Height = nHeight;
  372. pObj->SetSize(nWidth, nHeight);
  373. pObj->SetPos(nPosX, nPosY);
  374. break;
  375. default:
  376. pObj->SetSize(Bitmap->Width, Bitmap->Height);
  377. pObj->SetPos(nPosX, nPosY); //TODO
  378. break;
  379. }
  380. #endif
  381. #else
  382. pObj->SetSize(Bitmap->Width, Bitmap->Height);
  383. pObj->SetPos(nPosX, nPosY);
  384. #endif
  385. }
  386. }
  387. __finally
  388. {
  389. SAFE_DELETE(pStream);
  390. }
  391. }
  392. //pObj->SetPos(nPosX, nPosY);
  393. //if (pObj->Left < 0) pObj->Left = 0;
  394. //if (pObj->Top < 0) pObj->Top = 0;
  395. pObj->Show();
  396. pObj->BringToFront();
  397. }
  398. }
  399. catch(EDatabaseError &E)
  400. {
  401. DBERRORMSG("TVMSM500M::LoadFormObjectInfo", String(E.ClassName()), E.Message, sQry);
  402. throw Exception(String(E.ClassName()) + E.Message);
  403. }
  404. catch(Exception &exception)
  405. {
  406. DBERRORMSG("TVMSM500M::LoadFormObjectInfo", String(exception.ClassName()), exception.Message, sQry);
  407. throw Exception(String(exception.ClassName()) + exception.Message);
  408. }
  409. }
  410. __finally
  411. {
  412. if (pADO)
  413. {
  414. pADO->Close();
  415. delete pADO;
  416. }
  417. }
  418. }
  419. //---------------------------------------------------------------------------
  420. void __fastcall TVMSM500M::LoadVmsForm()
  421. {
  422. FormClear();
  423. int nFocusedIdx = TvList->DataController->FocusedRecordIndex;
  424. CMM_ClearGridTableView(TvList);
  425. ClearSymbloList();
  426. TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType);
  427. if (pVmsSizeType == NULL) return;
  428. String sWhereQry = "";
  429. sWhereQry = " WHERE A.VMS_FORM_ID = B.VMS_FORM_ID(+) \r\n";
  430. if (pVmsSizeType->TypeCd != "ALL")
  431. {
  432. //sWhereQry = " WHERE A.VMS_TYPE_CD = '" + pVmsSizeType->TypeCd + "' \r\n";
  433. sWhereQry += " AND A.VMS_TYPE_CD = '" + pVmsSizeType->TypeCd + "' \r\n";
  434. }
  435. FVmsTypeCd = pVmsSizeType->TypeCd;
  436. FVmsWidth = pVmsSizeType->Width;
  437. FVmsHeight = pVmsSizeType->Height;
  438. FVmsCols = pVmsSizeType->Cols;
  439. FVmsRows = pVmsSizeType->Rows;
  440. if ("VMP0" == FVmsTypeCd)
  441. {
  442. BtnCopyAdd212->Visible = true;
  443. }
  444. else
  445. {
  446. BtnCopyAdd212->Visible = false;
  447. }
  448. ImgForm->Width = FVmsWidth;
  449. ImgForm->Height = FVmsHeight;
  450. ImgForm->Picture->Bitmap->Width = FVmsWidth;
  451. ImgForm->Picture->Bitmap->Height = FVmsHeight;
  452. {
  453. PnlBack->Left = 5;
  454. PnlBack->Top = 5;
  455. PnlBack->Width = FVmsWidth+4;
  456. PnlBack->Height= FVmsHeight+4;
  457. }
  458. {
  459. PnlEdtBack->Width = FVmsWidth+4;
  460. PnlEdtBack->Height= FVmsHeight+4;
  461. PnlRePreview->Width = FVmsWidth+4;
  462. PnlRePreview->Height= FVmsHeight+4;
  463. PnlRePreview->Color = clWhite;
  464. ImgEdtPreview->Left = 2;
  465. ImgEdtPreview->Top = 2;
  466. ImgEdtPreview->Width = FVmsWidth;
  467. ImgEdtPreview->Height= FVmsHeight;
  468. ImgEdtPreview->Picture->Bitmap->Width = FVmsWidth;
  469. ImgEdtPreview->Picture->Bitmap->Height = FVmsHeight;
  470. m_pEdtDesigner->DrawPreviewModuleBack(ImgEdtPreview, clBlack, FVmsRows, FVmsCols);
  471. #if 0
  472. #if 0
  473. ReForm->Width = FVmsWidth+22+4;
  474. ReForm->Height= FVmsHeight+22+4;
  475. #else
  476. ReForm->Width = FVmsWidth+4;
  477. ReForm->Height= FVmsHeight+4;
  478. #endif
  479. #endif
  480. ReForm->Color = clBlack;
  481. m_pEdtDesigner->Clear();
  482. m_pEdtDesigner->SizeType = FVmsTypeCd;
  483. m_pEdtDesigner->SetSize(FVmsWidth, FVmsHeight);
  484. m_pEdtDesigner->SetPos(0, 0);
  485. m_pEdtDesigner->BkColorCode = "0";
  486. m_pEdtDesigner->EditMode = true;
  487. m_pEdtDesigner->Show();
  488. }
  489. String sVmsSizeNm = pVmsSizeType->TypeNm;
  490. String sQry;
  491. TADOQuery *pADO = NULL;
  492. #if 0
  493. sQry = "SELECT A.VMS_FORM_ID, A.VMS_FORM_NM, A.VMS_FORM_EXPL, \r\n"
  494. " A.VMS_FORM_TYPE_CD, A.VMS_TYPE_CD, \r\n"
  495. " (SELECT VMS_TYPE_NM \r\n"
  496. " FROM TB_VMS_TYPE \r\n"
  497. " WHERE VMS_TYPE_CD = A.VMS_TYPE_CD \r\n"
  498. " AND USE_YN = 'Y') AS VMS_SIZE_TYPE_NM, \r\n"
  499. " (SELECT VMS_FORM_TYPE_NM \r\n"
  500. " FROM TB_VMS_FORM_TYPE \r\n"
  501. " WHERE USE_YN = 'Y' \r\n"
  502. " AND VMS_FORM_TYPE_CD = A.VMS_FORM_TYPE_CD) \r\n"
  503. " AS FORM_TYPE_NM, \r\n"
  504. " A.VMS_FORM_COLR_CD, \r\n"
  505. " A.VMS_FORM_DSPL_DRCT_CD, \r\n"
  506. " A.VMS_FORM_DSPL_MTHD_CD, \r\n"
  507. " A.VMS_FORM_IMAG \r\n"
  508. " FROM TB_VMS_FORM A \r\n";
  509. sQry += sWhereQry;
  510. sQry +=" ORDER BY A.VMS_TYPE_CD DESC, A.VMS_FORM_ID ASC \r\n";
  511. #else
  512. sQry = "SELECT A.VMS_FORM_ID, A.VMS_FORM_NM, A.VMS_FORM_EXPL, \r\n"
  513. " A.VMS_FORM_TYPE_CD, A.VMS_TYPE_CD, \r\n"
  514. " (SELECT VMS_TYPE_NM \r\n"
  515. " FROM TB_VMS_TYPE \r\n"
  516. " WHERE VMS_TYPE_CD = A.VMS_TYPE_CD \r\n"
  517. " AND USE_YN = 'Y') AS VMS_SIZE_TYPE_NM, \r\n"
  518. " (SELECT VMS_FORM_TYPE_NM \r\n"
  519. " FROM TB_VMS_FORM_TYPE \r\n"
  520. " WHERE USE_YN = 'Y' \r\n"
  521. " AND VMS_FORM_TYPE_CD = A.VMS_FORM_TYPE_CD) \r\n"
  522. " AS FORM_TYPE_NM, \r\n"
  523. " A.VMS_FORM_COLR_CD, \r\n"
  524. " A.VMS_FORM_DSPL_DRCT_CD, \r\n"
  525. " A.VMS_FORM_DSPL_MTHD_CD, \r\n"
  526. " A.VMS_FORM_IMAG, \r\n"
  527. " B.VMS_DSPL_TXT \r\n"
  528. " FROM TB_VMS_FORM A, \r\n"
  529. " (SELECT VMS_FORM_ID, \r\n"
  530. " LISTAGG(VMS_DSPL_TXT, ' ') WITHIN GROUP (ORDER BY VMS_FORM_OBJECT_ID) AS VMS_DSPL_TXT \r\n"
  531. " FROM TB_VMS_FORM_OBJECT \r\n"
  532. " WHERE VMS_FORM_OBJECT_TYPE_CD = '0' \r\n"
  533. " GROUP BY VMS_FORM_ID) B \r\n";
  534. sQry += sWhereQry;
  535. sQry +=" ORDER BY A.VMS_TYPE_CD DESC, A.VMS_FORM_ID ASC \r\n";
  536. #endif
  537. String sFirstFormId = "";
  538. try
  539. {
  540. int nRow;
  541. TcxDataController *pGDC = TvList->DataController;
  542. TvList->BeginUpdate();
  543. try
  544. {
  545. pADO = new TADOQuery(NULL);
  546. pADO->Close();
  547. pADO->Connection = ITSDb_GetConnection();
  548. ITSDb_SQLText(pADO, sQry);
  549. //ITSDb_SQLBind(pADO, "p01", sVmsTypeCd);
  550. ITSDb_SQLOpen(pADO);
  551. for( ; !pADO->Eof; pADO->Next())
  552. {
  553. nRow = pGDC->AppendRecord();
  554. String sFormId = pADO->FieldByName("VMS_FORM_ID")->AsString;
  555. if (sFirstFormId == "") sFirstFormId = sFormId;
  556. pGDC->Values[nRow][Col01->Index] = sFormId; //폼ID
  557. pGDC->Values[nRow][Col02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsVariant; //폼명칭
  558. pGDC->Values[nRow][Col03->Index] = pADO->FieldByName("VMS_FORM_EXPL")->AsString; //폼설명
  559. pGDC->Values[nRow][Col04->Index] = pADO->FieldByName("FORM_TYPE_NM")->AsString; //폼종류
  560. pGDC->Values[nRow][Col05->Index] = pADO->FieldByName("VMS_SIZE_TYPE_NM")->AsString; //폼크기
  561. pGDC->Values[nRow][Col06->Index] = pADO->FieldByName("VMS_FORM_DSPL_MTHD_CD")->AsString; //표출방법코드-
  562. pGDC->Values[nRow][Col07->Index] = pADO->FieldByName("VMS_FORM_DSPL_DRCT_CD")->AsString; //표출방향코드-
  563. pGDC->Values[nRow][Col08->Index] = pADO->FieldByName("VMS_FORM_COLR_CD")->AsString; //배경색코드-
  564. pGDC->Values[nRow][Col09->Index] = pADO->FieldByName("VMS_FORM_TYPE_CD")->AsString; //폼종류코드-
  565. pGDC->Values[nRow][Col10->Index] = pADO->FieldByName("VMS_TYPE_CD")->AsString; //폼크기코드-
  566. pGDC->Values[nRow][Col12->Index] = pADO->FieldByName("VMS_DSPL_TXT")->AsString; //폼표출문자
  567. Graphics::TBitmap *bitmap = new Graphics::TBitmap;
  568. try {
  569. bitmap->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("VMS_FORM_IMAG"), bmRead));
  570. } catch(Exception &e) {
  571. //throw Exception(String(e.ClassName()) + e.Message);
  572. }
  573. FListSymb->Add(bitmap);
  574. }
  575. }
  576. catch(EDatabaseError &E)
  577. {
  578. DBERRORMSG("TVMSM500M::LoadVmsForm", String(E.ClassName()), E.Message, sQry);
  579. throw Exception(String(E.ClassName()) + E.Message);
  580. }
  581. catch(Exception &e)
  582. {
  583. DBERRORMSG("TVMSM500M::LoadVmsForm", String(e.ClassName()), e.Message, sQry);
  584. throw Exception(String(e.ClassName()) + e.Message);
  585. }
  586. }
  587. __finally
  588. {
  589. if (pADO)
  590. {
  591. pADO->Close();
  592. delete pADO;
  593. }
  594. TvList->EndUpdate();
  595. if (TvList->DataController->RecordCount > 0)
  596. {
  597. //CMM_SetGridRow(CxList, TvList, sFirstFormId, Col01->Index);
  598. //DisplayInfo();
  599. }
  600. }
  601. }
  602. //---------------------------------------------------------------------------
  603. bool __fastcall TVMSM500M::SaveVmsForm(String AVALID_YN)
  604. {
  605. String sQry;
  606. TADOQuery *pADO = NULL;
  607. String sFormId = EdFormId->Text;
  608. String sVmsType = FVmsTypeCd;
  609. String sFormType = APP_GetCode(CbFormKind);
  610. String sName = EdFormName->Text.Trim();
  611. String sExpl = EdFormDesc->Text.Trim();
  612. String sFormColor = String(CbFormColor->ItemIndex);
  613. String sDispDir = APP_GetCode(CbFormDispDir);
  614. String sDispMode = APP_GetCode(CbFormDispMode);
  615. String sUpdtDt = Now().FormatString("yyyymmddhhnnss");
  616. if (StrToIntDef(sFormType, 0) == eFormTp_evehicle) {
  617. sDispDir = IntToStr(CbFormSubType->ItemIndex);
  618. }
  619. sQry = "MERGE INTO TB_VMS_FORM L \r\n"
  620. "USING (SELECT :p01 AS VMS_FORM_ID, \r\n"
  621. " :p02 AS VMS_TYPE_CD, \r\n"
  622. " :p03 AS VMS_FORM_TYPE_CD, \r\n"
  623. " :p04 AS VMS_FORM_NM, \r\n"
  624. " :p05 AS VMS_FORM_EXPL, \r\n"
  625. " :p06 AS VMS_FORM_COLR_CD, \r\n"
  626. " :p07 AS VMS_FORM_DSPL_DRCT_CD, \r\n"
  627. " :p08 AS VMS_FORM_DSPL_MTHD_CD, \r\n"
  628. " :p09 AS UPDT_DT, \r\n"
  629. " :p10 AS VALID_YN \r\n"
  630. " FROM DUAL) M \r\n"
  631. " ON (L.VMS_FORM_ID = M.VMS_FORM_ID) \r\n"
  632. "WHEN MATCHED \r\n"
  633. "THEN \r\n"
  634. " UPDATE SET L.VMS_FORM_NM = M.VMS_FORM_NM, \r\n"
  635. " L.VMS_FORM_EXPL = M.VMS_FORM_EXPL, \r\n"
  636. " L.VMS_FORM_COLR_CD = M.VMS_FORM_COLR_CD, \r\n"
  637. " L.VMS_FORM_DSPL_DRCT_CD = M.VMS_FORM_DSPL_DRCT_CD, \r\n"
  638. " L.VMS_FORM_DSPL_MTHD_CD = M.VMS_FORM_DSPL_MTHD_CD, \r\n"
  639. " L.UPDT_DT = M.UPDT_DT, \r\n"
  640. " L.VALID_YN = M.VALID_YN \r\n"
  641. "WHEN NOT MATCHED \r\n"
  642. "THEN \r\n"
  643. " INSERT (VMS_FORM_ID, \r\n"
  644. " VMS_TYPE_CD, \r\n"
  645. " VMS_FORM_TYPE_CD, \r\n"
  646. " VMS_FORM_COLR_CD, \r\n"
  647. " VMS_FORM_NM, \r\n"
  648. " VMS_FORM_EXPL, \r\n"
  649. " VMS_FORM_DSPL_DRCT_CD, \r\n"
  650. " VMS_FORM_DSPL_MTHD_CD, \r\n"
  651. " UPDT_DT, \r\n"
  652. " VALID_YN ) \r\n"
  653. " VALUES (M.VMS_FORM_ID, \r\n"
  654. " M.VMS_TYPE_CD, \r\n"
  655. " M.VMS_FORM_TYPE_CD, \r\n"
  656. " M.VMS_FORM_COLR_CD, \r\n"
  657. " M.VMS_FORM_NM, \r\n"
  658. " M.VMS_FORM_EXPL, \r\n"
  659. " M.VMS_FORM_DSPL_DRCT_CD, \r\n"
  660. " M.VMS_FORM_DSPL_MTHD_CD, \r\n"
  661. " M.UPDT_DT, \r\n"
  662. " M.VALID_YN ) \r\n";
  663. TMemoryStream *dataStream = new TMemoryStream();
  664. ImgForm->Picture->Bitmap->SaveToStream(dataStream);
  665. try
  666. {
  667. try
  668. {
  669. pADO = new TADOQuery(NULL);
  670. pADO->Close();
  671. pADO->Connection = ITSDb_GetConnection();
  672. ITSDb_SQLText(pADO, sQry);
  673. ITSDb_SQLBind(pADO, "p01", sFormId);
  674. ITSDb_SQLBind(pADO, "p02", sVmsType);
  675. ITSDb_SQLBind(pADO, "p03", sFormType);
  676. ITSDb_SQLBind(pADO, "p04", sName);
  677. ITSDb_SQLBind(pADO, "p05", sExpl);
  678. ITSDb_SQLBind(pADO, "p06", sFormColor);
  679. ITSDb_SQLBind(pADO, "p07", sDispDir);
  680. ITSDb_SQLBind(pADO, "p08", sDispMode);
  681. ITSDb_SQLBind(pADO, "p09", sUpdtDt);
  682. ITSDb_SQLBind(pADO, "p10", AVALID_YN);
  683. ITSDb_SQLExec(pADO);
  684. sQry = "UPDATE TB_VMS_FORM \r\n"
  685. " SET VMS_FORM_IMAG = :p02 \r\n"
  686. " WHERE VMS_FORM_ID = :p01 \r\n";
  687. ITSDb_SQLText(pADO, sQry);
  688. ITSDb_SQLBind(pADO, "p01", sFormId);
  689. if (dataStream->Size == 0)
  690. {
  691. ITSDb_SQLBind(pADO, "p01", "");
  692. }
  693. else
  694. {
  695. pADO->Parameters->ParamByName("p02")->LoadFromStream(dataStream, ftBlob);
  696. }
  697. ITSDb_SQLExec(pADO);
  698. if (AVALID_YN == "N")
  699. {
  700. //폼 유효성이 N 인 경우 해당폼을 사용하는 스케쥴의 사용여부를 모두 N으로 업데이트 한다.
  701. sQry = "UPDATE TB_VMS_DSPL_SCH \r\n"
  702. " SET USE_YN = 'N' \r\n"
  703. " WHERE VMS_FORM_ID = :p01 \r\n";
  704. ITSDb_SQLText(pADO, sQry);
  705. ITSDb_SQLBind(pADO, "p01", sFormId);
  706. ITSDb_SQLExec(pADO);
  707. }
  708. CDSVmsFormManager->AddVmsForm(sFormId, AVALID_YN);
  709. return true;
  710. }
  711. catch(EDatabaseError &E)
  712. {
  713. DBERRORMSG("TVMSM500M::SaveVmsForm", String(E.ClassName()), E.Message, sQry);
  714. throw Exception(String(E.ClassName()) + E.Message);
  715. }
  716. catch(Exception &e)
  717. {
  718. DBERRORMSG("TVMSM500M::SaveVmsForm", String(e.ClassName()), e.Message, sQry);
  719. throw Exception(String(e.ClassName()) + e.Message);
  720. }
  721. }
  722. __finally
  723. {
  724. if (pADO)
  725. {
  726. pADO->Close();
  727. delete pADO;
  728. }
  729. if (dataStream) delete dataStream;
  730. dataStream = NULL;
  731. }
  732. return true;
  733. }
  734. //---------------------------------------------------------------------------
  735. bool __fastcall TVMSM500M::CheckVmsFormUse(String AFormId)
  736. {
  737. String sQry;
  738. TADOQuery *pADO = NULL;
  739. try
  740. {
  741. try
  742. {
  743. pADO = new TADOQuery(NULL);
  744. pADO->Close();
  745. pADO->Connection = ITSDb_GetConnection();
  746. #if 0
  747. sQry = "SELECT COUNT(1) AS CNT \r\n"
  748. " FROM TB_VMS_PASV_MSG_DETL \r\n"
  749. " WHERE VMS_FORM_ID = :p01 \r\n";
  750. ITSDb_SQLText(pADO, sQry);
  751. ITSDb_SQLBind(pADO, "p01", AFormId);
  752. ITSDb_SQLOpen(pADO);
  753. if (pADO->FieldByName("CNT")->AsInteger > 0)
  754. {
  755. Application->MessageBox(L"VMS 폼 사용확인\r\n삭제할 VMS 폼 정보가 VMS 고정메시지 스케쥴에 사용되고 있습니다.\r\n먼저 해당 정보를 삭제해주시기 바랍니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  756. return false;
  757. }
  758. #endif
  759. #if 1
  760. sQry = "SELECT VMS_SCH_TYPE, COUNT(1) AS CNT \r\n"
  761. " FROM TB_VMS_DSPL_SCH \r\n"
  762. " WHERE VMS_FORM_ID = :p01 \r\n"
  763. " GROUP BY VMS_SCH_TYPE \r\n";
  764. String sSchedule = "";
  765. ITSDb_SQLText(pADO, sQry);
  766. ITSDb_SQLBind(pADO, "p01", AFormId);
  767. ITSDb_SQLOpen(pADO);
  768. for( ; !pADO->Eof; pADO->Next())
  769. {
  770. if (pADO->FieldByName("CNT")->AsInteger > 0)
  771. {
  772. String VMS_SCH_TYPE = pADO->FieldByName("VMS_SCH_TYPE")->AsString;
  773. if (VMS_SCH_TYPE == "A")
  774. {
  775. if (sSchedule != "") sSchedule = sSchedule + ", 자동";
  776. else sSchedule = "자동";
  777. }
  778. else
  779. if (VMS_SCH_TYPE == "F")
  780. {
  781. if (sSchedule != "") sSchedule = sSchedule + ", 고정";
  782. else sSchedule = "고정";
  783. }
  784. else
  785. if (VMS_SCH_TYPE == "B")
  786. {
  787. if (sSchedule != "") sSchedule = sSchedule + ", 기본";
  788. else sSchedule = "기본";
  789. }
  790. }
  791. }
  792. if (sSchedule != "")
  793. {
  794. String sMsg;
  795. sMsg = "VMS 폼 사용확인\r\n삭제할 VMS 폼 정보가 [" + sSchedule + "] 스케쥴에 사용되고 있습니다.\r\n먼저 해당 정보를 삭제해주시기 바랍니다.";
  796. Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  797. return false;
  798. }
  799. #else
  800. sQry = "SELECT COUNT(1) AS CNT \r\n"
  801. " FROM TB_VMS_DSPL_SCH \r\n"
  802. " WHERE VMS_FORM_ID = :p01 \r\n";
  803. ITSDb_SQLText(pADO, sQry);
  804. ITSDb_SQLBind(pADO, "p01", AFormId);
  805. ITSDb_SQLOpen(pADO);
  806. if (pADO->FieldByName("CNT")->AsInteger > 0)
  807. {
  808. //Application->MessageBox(L"VMS 폼 사용확인\r\n삭제할 VMS 폼 정보가 VMS 자동 스케쥴에 사용되고 있습니다.\r\n먼저 해당 정보를 삭제해주시기 바랍니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  809. Application->MessageBox(L"VMS 폼 사용확인\r\n삭제할 VMS 폼 정보가 VMS 스케쥴에 사용되고 있습니다.\r\n먼저 해당 정보를 삭제해주시기 바랍니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  810. return false;
  811. }
  812. #endif
  813. }
  814. catch(EDatabaseError &E)
  815. {
  816. DBERRORMSG("TVMSM500M::CheckVmsFormUse", String(E.ClassName()), E.Message, sQry);
  817. throw Exception(String(E.ClassName()) + E.Message);
  818. }
  819. catch(Exception &e)
  820. {
  821. DBERRORMSG("TVMSM500M::CheckVmsFormUse", String(e.ClassName()), e.Message, sQry);
  822. throw Exception(String(e.ClassName()) + e.Message);
  823. }
  824. }
  825. __finally
  826. {
  827. if (pADO)
  828. {
  829. pADO->Close();
  830. delete pADO;
  831. }
  832. }
  833. return true;
  834. }
  835. //---------------------------------------------------------------------------
  836. bool __fastcall TVMSM500M::DelVmsForm(String AFormId)
  837. {
  838. String sQry;
  839. TADOQuery *pADO = NULL;
  840. int nRowHeight = 0;
  841. try
  842. {
  843. try
  844. {
  845. pADO = new TADOQuery(NULL);
  846. pADO->Close();
  847. pADO->Connection = ITSDb_GetConnection();
  848. sQry = "DELETE TB_VMS_FORM_OBJECT \r\n"
  849. " WHERE VMS_FORM_ID = :p01 \r\n";
  850. ITSDb_SQLText(pADO, sQry);
  851. ITSDb_SQLBind(pADO, "p01", AFormId);
  852. pADO->ExecSQL();
  853. sQry = "DELETE TB_VMS_FORM \r\n"
  854. " WHERE VMS_FORM_ID = :p01 \r\n";
  855. ITSDb_SQLText(pADO, sQry);
  856. ITSDb_SQLBind(pADO, "p01", AFormId);
  857. pADO->ExecSQL();
  858. return true;
  859. }
  860. catch(EDatabaseError &E)
  861. {
  862. DBERRORMSG("TVMSM500M::DelVmsForm", String(E.ClassName()), E.Message, sQry);
  863. throw Exception(String(E.ClassName()) + E.Message);
  864. }
  865. catch(Exception &e)
  866. {
  867. DBERRORMSG("TVMSM500M::DelVmsForm", String(e.ClassName()), e.Message, sQry);
  868. throw Exception(String(e.ClassName()) + e.Message);
  869. }
  870. }
  871. __finally
  872. {
  873. if (pADO)
  874. {
  875. pADO->Close();
  876. delete pADO;
  877. }
  878. }
  879. return true;
  880. }
  881. //---------------------------------------------------------------------------
  882. bool __fastcall TVMSM500M::GetNextVmsFormId(int &AFormId)
  883. {
  884. String sQry;
  885. TADOQuery *pADO = NULL;
  886. sQry = "SELECT NVL(MAX(VMS_FORM_ID), 9999)+1 AS NEWID FROM TB_VMS_FORM \r\n";
  887. try
  888. {
  889. try
  890. {
  891. pADO = new TADOQuery(NULL);
  892. pADO->Close();
  893. pADO->Connection = ITSDb_GetConnection();
  894. pADO->SQL->Clear();
  895. pADO->SQL->Text = sQry;
  896. pADO->Open();
  897. AFormId = pADO->FieldByName("NEWID")->AsInteger;
  898. return true;
  899. }
  900. catch(EDatabaseError &E)
  901. {
  902. DBERRORMSG("TVMSM500M::GetNextVmsFormId", String(E.ClassName()), E.Message, sQry);
  903. throw Exception(String(E.ClassName()) + E.Message);
  904. }
  905. catch(Exception &e)
  906. {
  907. DBERRORMSG("TVMSM500M::GetNextVmsFormId", String(e.ClassName()), e.Message, sQry);
  908. throw Exception(String(e.ClassName()) + e.Message);
  909. }
  910. }
  911. __finally
  912. {
  913. if (pADO)
  914. {
  915. pADO->Close();
  916. delete pADO;
  917. }
  918. }
  919. return false;
  920. }
  921. //---------------------------------------------------------------------------