VMSM500MSRCF.cpp 40 KB

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