FrmVmsMsgUserDispSrcF.cpp 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include <vcl.h>
  4. #include <IOUtils.hpp>
  5. #include <jpeg.hpp>
  6. #include <GIFimg.hpp>
  7. #include "ITSSkinF.h"
  8. #include "ITSUtilF.h"
  9. #include "AppGlobalF.h"
  10. #include "CDSVmsFormF.h"
  11. #pragma hdrstop
  12. #include "FrmVmsMsgUserDispF.h"
  13. #include "FrmVmsMsgUserDispSrcF.h"
  14. //---------------------------------------------------------------------------
  15. #pragma package(smart_init)
  16. //폼유형
  17. void __fastcall TFrmVmsMsgUserDisp::FillVmsFormType(TcxComboBox *ACombo)
  18. {
  19. //Not Used
  20. String sQry;
  21. TADOQuery *pADO = NULL;
  22. ACombo->Properties->Items->Clear();
  23. sQry = "SELECT VMS_FORM_TYPE_CD AS CD, \r\n"
  24. " VMS_FORM_TYPE_NM AS NM, \r\n"
  25. " USE_YN \r\n"
  26. " FROM TB_VMS_FORM_TYPE \r\n"
  27. " ORDER BY CD ASC \r\n";
  28. try
  29. {
  30. try
  31. {
  32. pADO = new TADOQuery(NULL);
  33. pADO->Close();
  34. pADO->Connection = ITSDb_GetConnection();
  35. ITSDb_SQLText(pADO, sQry);
  36. ITSDb_SQLOpen(pADO);
  37. for( ; !pADO->Eof; pADO->Next())
  38. {
  39. String sUse = pADO->FieldByName("USE_YN")->AsString;
  40. if (sUse != "Y") continue;
  41. String sCd = pADO->FieldByName("CD")->AsString;
  42. String sNm = pADO->FieldByName("NM")->AsString;
  43. ACombo->Properties->Items->Add(" [" + sCd + "] " + sNm);
  44. }
  45. ACombo->ItemIndex = 0;
  46. }
  47. catch(EDatabaseError &E)
  48. {
  49. DBERRORMSG("TFrmVmsMsgUserDisp::FillVmsFormType", String(E.ClassName()), E.Message, sQry);
  50. throw Exception(String(E.ClassName()) + E.Message);
  51. }
  52. catch(Exception &exception)
  53. {
  54. DBERRORMSG("TFrmVmsMsgUserDisp::FillVmsFormType", String(exception.ClassName()), exception.Message, sQry);
  55. throw Exception(String(exception.ClassName()) + exception.Message);
  56. }
  57. }
  58. __finally
  59. {
  60. if (pADO)
  61. {
  62. pADO->Close();
  63. delete pADO;
  64. }
  65. }
  66. }
  67. //---------------------------------------------------------------------------
  68. //표출방법
  69. void __fastcall TFrmVmsMsgUserDisp::FillVmsFormDispMode(TcxComboBox *ACombo)
  70. {
  71. //Not Used
  72. String sQry;
  73. TADOQuery *pADO = NULL;
  74. ACombo->Properties->Items->Clear();
  75. sQry = "SELECT VMS_FORM_DSPL_MTHD_CD AS CD, \r\n"
  76. " VMS_FORM_DSPL_MTHD_NM AS NM, \r\n"
  77. " USE_YN \r\n"
  78. " FROM TB_VMS_FORM_DSPL_MTHD \r\n"
  79. " ORDER BY CD ASC \r\n";
  80. try
  81. {
  82. try
  83. {
  84. pADO = new TADOQuery(NULL);
  85. pADO->Close();
  86. pADO->Connection = ITSDb_GetConnection();
  87. ITSDb_SQLText(pADO, sQry);
  88. ITSDb_SQLOpen(pADO);
  89. for( ; !pADO->Eof; pADO->Next())
  90. {
  91. String sUse = pADO->FieldByName("USE_YN")->AsString;
  92. if (sUse != "Y") continue;
  93. String sCd = pADO->FieldByName("CD")->AsString;
  94. String sNm = pADO->FieldByName("NM")->AsString;
  95. ACombo->Properties->Items->Add(" [" + sCd + "] " + sNm);
  96. }
  97. ACombo->ItemIndex = 0;
  98. }
  99. catch(EDatabaseError &E)
  100. {
  101. DBERRORMSG("TFrmVmsMsgUserDisp::FillVmsFormDispMode", String(E.ClassName()), E.Message, sQry);
  102. throw Exception(String(E.ClassName()) + E.Message);
  103. }
  104. catch(Exception &exception)
  105. {
  106. DBERRORMSG("TFrmVmsMsgUserDisp::FillVmsFormDispMode", String(exception.ClassName()), exception.Message, sQry);
  107. throw Exception(String(exception.ClassName()) + exception.Message);
  108. }
  109. }
  110. __finally
  111. {
  112. if (pADO)
  113. {
  114. pADO->Close();
  115. delete pADO;
  116. }
  117. }
  118. }
  119. //---------------------------------------------------------------------------
  120. //표출방향
  121. void __fastcall TFrmVmsMsgUserDisp::FillVmsFormDispDir(TcxComboBox *ACombo)
  122. {
  123. //Not Used
  124. String sQry;
  125. TADOQuery *pADO = NULL;
  126. ACombo->Properties->Items->Clear();
  127. sQry = "SELECT VMS_FORM_DSPL_DRCT_CD AS CD, \r\n"
  128. " VMS_FORM_DSPL_DRCT_NM AS NM, \r\n"
  129. " USE_YN \r\n"
  130. " FROM TB_VMS_FORM_DSPL_DRCT \r\n"
  131. " ORDER BY CD ASC \r\n";
  132. try
  133. {
  134. try
  135. {
  136. pADO = new TADOQuery(NULL);
  137. pADO->Close();
  138. pADO->Connection = ITSDb_GetConnection();
  139. ITSDb_SQLText(pADO, sQry);
  140. ITSDb_SQLOpen(pADO);
  141. for( ; !pADO->Eof; pADO->Next())
  142. {
  143. String sUse = pADO->FieldByName("USE_YN")->AsString;
  144. if (sUse != "Y") continue;
  145. String sCd = pADO->FieldByName("CD")->AsString;
  146. String sNm = pADO->FieldByName("NM")->AsString;
  147. ACombo->Properties->Items->Add(" [" + sCd + "] " + sNm);
  148. }
  149. ACombo->ItemIndex = 0;
  150. }
  151. catch(EDatabaseError &E)
  152. {
  153. DBERRORMSG("TFrmVmsMsgUserDisp::FillVmsFormDispDir", String(E.ClassName()), E.Message, sQry);
  154. throw Exception(String(E.ClassName()) + E.Message);
  155. }
  156. catch(Exception &exception)
  157. {
  158. DBERRORMSG("TFrmVmsMsgUserDisp::FillVmsFormDispDir", String(exception.ClassName()), exception.Message, sQry);
  159. throw Exception(String(exception.ClassName()) + exception.Message);
  160. }
  161. }
  162. __finally
  163. {
  164. if (pADO)
  165. {
  166. pADO->Close();
  167. delete pADO;
  168. }
  169. }
  170. }
  171. //---------------------------------------------------------------------------
  172. //VMS Font
  173. void __fastcall TFrmVmsMsgUserDisp::FillVmsFont(TcxComboBox *ACombo)
  174. {
  175. //Not Used
  176. String sQry;
  177. TADOQuery *pADO = NULL;
  178. ACombo->Properties->Items->Clear();
  179. sQry = "SELECT VMS_FONT_NAME_CD AS CD, \r\n"
  180. " VMS_FONT_NAME_NM AS NM, \r\n"
  181. " USE_YN \r\n"
  182. " FROM TB_VMS_FONT_NAME \r\n"
  183. " ORDER BY CD ASC \r\n";
  184. try
  185. {
  186. try
  187. {
  188. pADO = new TADOQuery(NULL);
  189. pADO->Close();
  190. pADO->Connection = ITSDb_GetConnection();
  191. ITSDb_SQLText(pADO, sQry);
  192. ITSDb_SQLOpen(pADO);
  193. for( ; !pADO->Eof; pADO->Next())
  194. {
  195. String sUse = pADO->FieldByName("USE_YN")->AsString;
  196. if (sUse != "Y") continue;
  197. String sCd = pADO->FieldByName("CD")->AsString;
  198. String sNm = pADO->FieldByName("NM")->AsString;
  199. ACombo->Properties->Items->Add(" [" + sCd + "] " + sNm);
  200. }
  201. ACombo->ItemIndex = 0;
  202. }
  203. catch(EDatabaseError &E)
  204. {
  205. DBERRORMSG("TFrmVmsMsgUserDisp::FillVmsFont", String(E.ClassName()), E.Message, sQry);
  206. throw Exception(String(E.ClassName()) + E.Message);
  207. }
  208. catch(Exception &exception)
  209. {
  210. DBERRORMSG("TFrmVmsMsgUserDisp::FillVmsFont", String(exception.ClassName()), exception.Message, sQry);
  211. throw Exception(String(exception.ClassName()) + exception.Message);
  212. }
  213. }
  214. __finally
  215. {
  216. if (pADO)
  217. {
  218. pADO->Close();
  219. delete pADO;
  220. }
  221. }
  222. }
  223. //---------------------------------------------------------------------------
  224. void __fastcall TFrmVmsMsgUserDisp::LoadFormObjectInfo(String AFormId, TVmsFormDesigner *ADesigner, String AFormType)
  225. {
  226. ADesigner->Clear();
  227. String sQry;
  228. TADOQuery *pADO = NULL;
  229. String imageFilePath;
  230. String saveDirPath = TPath::GetTempPath() + "VMS-FORM\\";
  231. ForceDirectories(saveDirPath.c_str());
  232. sQry = "SELECT A.VMS_FORM_ID, A.VMS_FORM_OBJ_ID, A.SN AS OBJ_SEQ, A.VMS_FORM_OBJ_KIND, \r\n"
  233. " NVL(A.BACK_CLR, '00') AS BACK_CLR, \r\n"
  234. " A.FORM_OBJ_PSTN_X, A.FORM_OBJ_PSTN_Y, A.FORM_OBJ_BLNK_YN, \r\n"
  235. " DECODE(B.VMS_FORM_OBJ_ID, NULL, 0, 1) AS IS_CCTV_OBJ, \r\n"
  236. " DECODE(C.VMS_FORM_OBJ_ID, NULL, 0, 1) AS IS_TEXT_OBJ, \r\n"
  237. " DECODE(D.VMS_FORM_OBJ_ID, NULL, 0, 1) AS IS_SYMB_OBJ, \r\n"
  238. " B.CCTV_ID, \r\n"
  239. " C.TXT_WDTH, C.TXT_HGHT, C.TXT_ALGN_MTHD, \r\n"
  240. " C.FONT_CLR, C.FONT_TYPE, C.FONT_SZ, NVL(C.FONT_THCK, 'N') AS FONT_THCK, \r\n"
  241. " C.VMS_TXT_ITEM_ID, C.DSPL_TXT, \r\n"
  242. " D.PICT_NM, D.PICT_WDTH, \r\n"
  243. " D.PICT_HGHT, D.PICT_DATA_SZ, \r\n"
  244. " D.PICT_DATA, D.PICT_EXT \r\n"
  245. " FROM TB_VMS_FORM_VMS_FORM_OBJ A, \r\n"
  246. " TB_VMS_FORM_OBJ_CCTV B, \r\n"
  247. " TB_VMS_FORM_OBJ_TXT C, \r\n"
  248. " TB_VMS_FORM_OBJ_PICT D \r\n"
  249. " WHERE 1=1 \r\n"
  250. " AND A.VMS_FORM_ID = :p01 \r\n"
  251. " AND A.VMS_FORM_OBJ_ID = B.VMS_FORM_OBJ_ID(+) \r\n"
  252. " AND A.VMS_FORM_OBJ_ID = C.VMS_FORM_OBJ_ID(+) \r\n"
  253. " AND A.VMS_FORM_OBJ_ID = D.VMS_FORM_OBJ_ID(+) \r\n"
  254. " ORDER BY A.VMS_FORM_ID, A.SN \r\n";
  255. try
  256. {
  257. try
  258. {
  259. pADO = new TADOQuery(NULL);
  260. pADO->Close();
  261. pADO->Connection = ITSDb_GetConnection();
  262. ITSDb_SQLText(pADO, sQry);
  263. ITSDb_SQLBind(pADO, "p01", AFormId);
  264. ITSDb_SQLOpen(pADO);
  265. int nDrawType;
  266. String sObjKind;
  267. for( ; !pADO->Eof; pADO->Next())
  268. {
  269. String sFormId = pADO->FieldByName("VMS_FORM_ID")->AsString;
  270. String sObjId = pADO->FieldByName("VMS_FORM_OBJ_ID")->AsString;
  271. int nObjSeq = pADO->FieldByName("OBJ_SEQ")->AsInteger;
  272. String sObjKind = pADO->FieldByName("VMS_FORM_OBJ_KIND")->AsString;
  273. String sBackClr = pADO->FieldByName("BACK_CLR")->AsString;
  274. int nPosX = pADO->FieldByName("FORM_OBJ_PSTN_X")->AsInteger;
  275. int nPosY = pADO->FieldByName("FORM_OBJ_PSTN_Y")->AsInteger;
  276. bool bBlinking = pADO->FieldByName("FORM_OBJ_BLNK_YN")->AsString == "N" ? false : true;
  277. int isCctvObj = pADO->FieldByName("IS_CCTV_OBJ")->AsInteger;
  278. int isTextObj = pADO->FieldByName("IS_TEXT_OBJ")->AsInteger;
  279. int isSymbObj = pADO->FieldByName("IS_SYMB_OBJ")->AsInteger;
  280. int nObjType = 0;
  281. int nDsplWdth = 0;
  282. int nDsplHght = 0;
  283. int nDsplSize = 0;
  284. String sDsplText = "";
  285. if (sObjKind == FORM_OBJ_KIND_CCTV && isCctvObj == 1) {
  286. sDsplText = pADO->FieldByName("CCTV_ID")->AsString;
  287. nDrawType = 1; //이미지그리기
  288. nObjType = 2; //이미지
  289. nDsplWdth = ADesigner->Width;
  290. nDsplHght = ADesigner->Height;
  291. nDsplSize = nDsplWdth * nDsplHght;
  292. }
  293. else
  294. if (sObjKind == FORM_OBJ_KIND_TEXT && isTextObj == 1) {
  295. sDsplText = pADO->FieldByName("DSPL_TXT")->AsString;
  296. nDsplWdth = pADO->FieldByName("TXT_WDTH")->AsInteger;
  297. nDsplHght = pADO->FieldByName("TXT_HGHT")->AsInteger;
  298. nDsplSize = sDsplText.Length();
  299. nDrawType = 0; //문자열그리기
  300. nObjType = 0; //문자열
  301. }
  302. else
  303. if (sObjKind == FORM_OBJ_KIND_IMAGE && isSymbObj == 1) {
  304. sDsplText = pADO->FieldByName("PICT_NM")->AsString;
  305. nDsplWdth = pADO->FieldByName("PICT_WDTH")->AsInteger;
  306. nDsplHght = pADO->FieldByName("PICT_HGHT")->AsInteger;
  307. nDsplSize = pADO->FieldByName("PICT_DATA_SZ")->AsInteger;
  308. //TMemoryStream *pictData = pADO->CreateBlobStream(pADO->FieldByName("PICT_DATA"), bmRead);
  309. //SAFE_DELETE(pictData);
  310. nDrawType = 1; //이미지그리기
  311. nObjType = 1; //이미지심벌
  312. }
  313. else {
  314. continue;
  315. }
  316. /////// 폼객체를 생성해서 추가한다.
  317. TVmsFormObject *pObj = ADesigner->AddObject((VmsObjectDrawType)nDrawType);
  318. if (!pObj) continue;
  319. if (sObjKind == FORM_OBJ_KIND_CCTV && isCctvObj == 1) {
  320. pObj->EditMode = false;
  321. }
  322. pObj->ObjSeq = nObjSeq;
  323. pObj->ObjId = sObjId;
  324. pObj->ObjKind = sObjKind;
  325. pObj->ObjType = sObjKind;
  326. pObj->Tag = 0;
  327. pObj->ObjSize = nDsplSize;
  328. pObj->BkColorCode = sBackClr;
  329. pObj->Blink = bBlinking;
  330. pObj->ImageId = sObjId;
  331. pObj->Text = sDsplText;
  332. pObj->RunText = pObj->Text;
  333. pObj->SetPos(nPosX, nPosY);
  334. if (sObjKind == FORM_OBJ_KIND_TEXT && isTextObj == 1) // 문자열
  335. {
  336. String sTxtItemId = pADO->FieldByName("VMS_TXT_ITEM_ID")->AsString;
  337. String sTxtAlgn = pADO->FieldByName("TXT_ALGN_MTHD")->AsString;
  338. String sFontClr = pADO->FieldByName("FONT_CLR")->AsString;
  339. String sFontType = pADO->FieldByName("FONT_TYPE")->AsString;
  340. int nFontSize = pADO->FieldByName("FONT_SZ")->AsInteger;
  341. bool bFontThck = pADO->FieldByName("FONT_THCK")->AsString == "N" ? false : true;
  342. int nTextAlign = 0;
  343. if (sTxtAlgn == "R") nTextAlign = 1;
  344. if (sTxtAlgn == "C") nTextAlign = 2;
  345. pObj->FillIn = sTxtItemId;
  346. pObj->FontNameCode = sFontType;
  347. TCDSFontName *pFontName = CDSFontManager->FFontNames.Find(pObj->FontNameCode);
  348. if (pFontName != NULL) {
  349. pObj->FontName = pFontName->VMS_FONT_NAME_NM;
  350. }
  351. else {
  352. pObj->FontName = "명조체";
  353. pObj->FontNameCode = "00";
  354. }
  355. pObj->FontColorCode = sFontClr;
  356. pObj->FontSize = nFontSize;
  357. pObj->FontBold = bFontThck;
  358. pObj->TextAlign = nTextAlign;
  359. }
  360. else
  361. if (sObjKind == FORM_OBJ_KIND_IMAGE && isSymbObj == 1)
  362. {
  363. if (pObj->ObjKind == OBJKIND_IMAGEID) {
  364. if (pObj->Text.Trim() == "") {
  365. pObj->Text = pObj->ImageId;
  366. }
  367. }
  368. TMemoryStream *pictData = new TMemoryStream();
  369. try {
  370. String sPictExt = pADO->FieldByName("PICT_EXT")->AsString;
  371. pictData->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("PICT_DATA"), bmRead));
  372. if (pictData && pictData->Size > 0) {
  373. imageFilePath = saveDirPath + sObjId + "." + sPictExt;
  374. pictData->SaveToFile(imageFilePath);
  375. LoadingImage(pObj, imageFilePath, nDsplWdth, nDsplHght);
  376. #if 0
  377. Graphics::TBitmap *Bitmap = pObj->GetBitmap();
  378. pictData->Position = 0;
  379. Bitmap->LoadFromStream(pictData);
  380. #ifdef IMAGE_RESIZE
  381. pObj->GetImage()->AutoSize= false;
  382. pObj->GetImage()->Stretch = true;
  383. pObj->GetImage()->Width = nWidth;
  384. pObj->GetImage()->Height = nHeight;
  385. pObj->SetSize(nDsplWdth, nDsplHght);
  386. #else
  387. pObj->SetSize(Bitmap->Width, Bitmap->Height);
  388. #endif
  389. #endif
  390. pObj->SetPos(nPosX, nPosY);
  391. }
  392. }
  393. __finally {
  394. SAFE_DELETE(pictData);
  395. }
  396. }
  397. pObj->Show();
  398. pObj->BringToFront();
  399. }
  400. }
  401. catch(EDatabaseError &E)
  402. {
  403. DBERRORMSG("TFrmVmsMsgUserDisp::LoadFormObjectInfo", String(E.ClassName()), E.Message, sQry);
  404. throw Exception(String(E.ClassName()) + E.Message);
  405. }
  406. catch(Exception &exception)
  407. {
  408. DBERRORMSG("TFrmVmsMsgUserDisp::LoadFormObjectInfo", String(exception.ClassName()), exception.Message, sQry);
  409. throw Exception(String(exception.ClassName()) + exception.Message);
  410. }
  411. }
  412. __finally
  413. {
  414. if (pADO)
  415. {
  416. pADO->Close();
  417. delete pADO;
  418. }
  419. }
  420. }
  421. //---------------------------------------------------------------------------
  422. void __fastcall TFrmVmsMsgUserDisp::LoadVmsForm()
  423. {
  424. #if 0
  425. FormClear();
  426. CMM_ClearGridTableView(TvList);
  427. ClearSymbloList();
  428. TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType);
  429. if (pVmsSizeType == NULL) return;
  430. String sWhereQry = "";
  431. if (pVmsSizeType->TypeCd != "ALL") {
  432. sWhereQry += " AND A.VMS_MODL_KIND = '" + pVmsSizeType->TypeCd + "' \r\n";
  433. }
  434. FVmsTypeCd = pVmsSizeType->TypeCd;
  435. FVmsWidth = pVmsSizeType->Width;
  436. FVmsHeight = pVmsSizeType->Height;
  437. FVmsCols = pVmsSizeType->Cols;
  438. FVmsRows = pVmsSizeType->Rows;
  439. ImgForm->Width = FVmsWidth;
  440. ImgForm->Height = FVmsHeight;
  441. ImgForm->Picture->Bitmap->Width = FVmsWidth;
  442. ImgForm->Picture->Bitmap->Height = FVmsHeight;
  443. {
  444. PnlEdtBack->Width = FVmsWidth+4;
  445. PnlEdtBack->Height= FVmsHeight+4;
  446. PnlRePreview->Width = FVmsWidth+4;
  447. PnlRePreview->Height= FVmsHeight+4;
  448. PnlRePreview->Color = clWhite;
  449. ImgEdtPreview->Left = 2;
  450. ImgEdtPreview->Top = 2;
  451. ImgEdtPreview->Width = FVmsWidth;
  452. ImgEdtPreview->Height= FVmsHeight;
  453. ImgEdtPreview->Picture->Bitmap->Width = FVmsWidth;
  454. ImgEdtPreview->Picture->Bitmap->Height = FVmsHeight;
  455. m_pEdtDesigner->DrawPreviewModuleBack(ImgEdtPreview, clBlack, FVmsRows, FVmsCols);
  456. #if 0
  457. #if 0
  458. ReForm->Width = FVmsWidth+22+4;
  459. ReForm->Height= FVmsHeight+22+4;
  460. #else
  461. ReForm->Width = FVmsWidth+4;
  462. ReForm->Height= FVmsHeight+4;
  463. #endif
  464. #endif
  465. ReForm->Color = clBlack;
  466. m_pEdtDesigner->Clear();
  467. m_pEdtDesigner->SizeType = FVmsTypeCd;
  468. m_pEdtDesigner->SetSize(FVmsWidth, FVmsHeight);
  469. m_pEdtDesigner->SetPos(0, 0);
  470. m_pEdtDesigner->BkColorCode = "0";
  471. m_pEdtDesigner->EditMode = true;
  472. m_pEdtDesigner->Show();
  473. }
  474. String sVmsSizeNm = pVmsSizeType->TypeNm;
  475. String sQry;
  476. TADOQuery *pADO = NULL;
  477. sQry = "SELECT A.VMS_FORM_ID, A.VMS_MODL_KIND, A.VMS_FORM_TYPE, A.VMS_FORM_NM, \r\n"
  478. " A.DSPL_EFF, NVL(A.DSPL_HR, 0) AS DSPL_HR, A.BACK_CLR, \r\n"
  479. " NVL(B.FORM_TYPE_NM, A.VMS_FORM_TYPE) AS FORM_TYPE_NM, \r\n"
  480. " NVL(C.FORM_TYPE_NM, A.DSPL_EFF) AS DSPL_EFF_NM, \r\n"
  481. " NVL(D.VMS_MODL_KIND_NM, A.VMS_MODL_KIND) AS VMS_MODL_KIND_NM \r\n"
  482. " FROM TB_VMS_FORM A, \r\n"
  483. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  484. " FROM TB_SYS_CD \r\n"
  485. " WHERE CLSS_CD = 'VMS_FORM_TYPE_CD') B, \r\n"
  486. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  487. " FROM TB_SYS_CD \r\n"
  488. " WHERE CLSS_CD = 'VMS_FORM_DSPL_EFF_CD') C, \r\n"
  489. " TB_VMS_MODL_KIND D \r\n"
  490. " WHERE 1=1 \r\n"
  491. " AND A.VMS_FORM_TYPE = B.CODE_NO(+) \r\n"
  492. " AND A.DSPL_EFF = C.CODE_NO(+) \r\n"
  493. " AND A.VMS_MODL_KIND = D.VMS_MODL_KIND(+) \r\n";
  494. sQry += sWhereQry;
  495. sQry +=" ORDER BY A.VMS_MODL_KIND, A.VMS_FORM_ID \r\n";
  496. String sFirstFormId = "";
  497. try
  498. {
  499. int nRow;
  500. TcxDataController *pGDC = TvList->DataController;
  501. TvList->BeginUpdate();
  502. try
  503. {
  504. pADO = new TADOQuery(NULL);
  505. pADO->Close();
  506. pADO->Connection = ITSDb_GetConnection();
  507. ITSDb_SQLText(pADO, sQry);
  508. ITSDb_SQLOpen(pADO);
  509. for( ; !pADO->Eof; pADO->Next())
  510. {
  511. nRow = pGDC->AppendRecord();
  512. String sVmsFormId = pADO->FieldByName("VMS_FORM_ID")->AsString;
  513. if (sFirstFormId == "") sFirstFormId = sVmsFormId;
  514. String DSPL_EFF = pADO->FieldByName("DSPL_EFF")->AsString;
  515. pGDC->Values[nRow][ColVMS_FORM_ID->Index] = sVmsFormId; //폼ID
  516. pGDC->Values[nRow][ColVMS_FORM_NM->Index] = pADO->FieldByName("VMS_FORM_NM")->AsVariant; //폼명칭
  517. pGDC->Values[nRow][ColVMS_FORM_TYPE_NM->Index] = pADO->FieldByName("FORM_TYPE_NM")->AsString; //폼종류
  518. pGDC->Values[nRow][ColDSPL_EFF_NM->Index] = pADO->FieldByName("DSPL_EFF_NM")->AsString; //표출효과
  519. pGDC->Values[nRow][ColVMS_MODL_KIND_NM->Index] = pADO->FieldByName("VMS_MODL_KIND_NM")->AsString; //폼크기
  520. pGDC->Values[nRow][ColDSPL_HR->Index] = pADO->FieldByName("DSPL_HR")->AsInteger; //표출시간
  521. pGDC->Values[nRow][ColVMS_FORM_TYPE->Index] = pADO->FieldByName("VMS_FORM_TYPE")->AsString; //폼종류코드-
  522. pGDC->Values[nRow][ColDSPL_EFF->Index] = pADO->FieldByName("DSPL_EFF")->AsString; //표출효과
  523. pGDC->Values[nRow][ColBACK_CLR->Index] = pADO->FieldByName("BACK_CLR")->AsString; //배경색코드-
  524. pGDC->Values[nRow][ColVMS_MODL_KIND->Index] = pADO->FieldByName("VMS_MODL_KIND")->AsString; //폼크기코드-
  525. #if 0
  526. Graphics::TBitmap *bitmap = new Graphics::TBitmap;
  527. try {
  528. bitmap->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("VMS_FORM_IMAG"), bmRead));
  529. } catch(Exception &e) {
  530. //throw Exception(String(e.ClassName()) + e.Message);
  531. }
  532. FListSymb->Add(bitmap);
  533. #endif
  534. }
  535. }
  536. catch(EDatabaseError &E)
  537. {
  538. DBERRORMSG("TFrmVmsMsgUserDisp::LoadVmsForm", String(E.ClassName()), E.Message, sQry);
  539. throw Exception(String(E.ClassName()) + E.Message);
  540. }
  541. catch(Exception &e)
  542. {
  543. DBERRORMSG("TFrmVmsMsgUserDisp::LoadVmsForm", String(e.ClassName()), e.Message, sQry);
  544. throw Exception(String(e.ClassName()) + e.Message);
  545. }
  546. }
  547. __finally
  548. {
  549. if (pADO)
  550. {
  551. pADO->Close();
  552. delete pADO;
  553. }
  554. TvList->EndUpdate();
  555. if (TvList->DataController->RecordCount > 0)
  556. {
  557. //CMM_SetGridRow(CxList, TvList, sFirstFormId, ColVMS_FORM_ID->Index);
  558. //DisplayInfo();
  559. }
  560. }
  561. #endif
  562. }
  563. //---------------------------------------------------------------------------
  564. bool __fastcall TFrmVmsMsgUserDisp::SaveVmsForm(String AVALID_YN)
  565. {
  566. String sQry;
  567. TADOQuery *pADO = NULL;
  568. String VMS_FORM_ID = EdFormId->Text;
  569. String VMS_MODL_KIND = APP_GetCode(CbSizeType); // FVmsTypeCd
  570. String VMS_FORM_TYPE = APP_GetCode(CbFormType);
  571. String VMS_FORM_NM = EdFormName->Text.Trim();
  572. String DSPL_EFF = APP_GetCode(CbFormDsplEff);
  573. int DSPL_HR = SeDsplHr->Value;
  574. String BACK_CLR = CDSFontManager->GetBackColorCode(CbFormBkClr->ItemIndex);
  575. String OPER_ID = g_AppCfg.OPER_ID;
  576. sQry = "MERGE INTO TB_VMS_FORM L \r\n"
  577. "USING (SELECT :p01 AS VMS_FORM_ID, \r\n"
  578. " :p02 AS VMS_MODL_KIND, \r\n"
  579. " :p03 AS VMS_FORM_TYPE, \r\n"
  580. " :p04 AS VMS_FORM_NM, \r\n"
  581. " :p05 AS DSPL_EFF, \r\n"
  582. " :p06 AS DSPL_HR, \r\n"
  583. " :p07 AS BACK_CLR, \r\n"
  584. " :p08 AS OPER_ID \r\n"
  585. " FROM DUAL) M \r\n"
  586. " ON (L.VMS_FORM_ID = M.VMS_FORM_ID) \r\n"
  587. "WHEN MATCHED THEN \r\n"
  588. " UPDATE SET L.VMS_MODL_KIND = M.VMS_MODL_KIND, \r\n"
  589. " L.VMS_FORM_TYPE = M.VMS_FORM_TYPE, \r\n"
  590. " L.VMS_FORM_NM = M.VMS_FORM_NM, \r\n"
  591. " L.DSPL_EFF = M.DSPL_EFF, \r\n"
  592. " L.DSPL_HR = M.DSPL_HR, \r\n"
  593. " L.BACK_CLR = M.BACK_CLR, \r\n"
  594. " L.CHNGR_ID = M.OPER_ID, \r\n"
  595. " L.CHG_DT = SYSDATE \r\n"
  596. "WHEN NOT MATCHED THEN \r\n"
  597. " INSERT (VMS_FORM_ID, \r\n"
  598. " VMS_MODL_KIND, \r\n"
  599. " VMS_FORM_TYPE, \r\n"
  600. " VMS_FORM_NM, \r\n"
  601. " DSPL_EFF, \r\n"
  602. " DSPL_HR, \r\n"
  603. " BACK_CLR, \r\n"
  604. " RGSTR_ID, \r\n"
  605. " REG_DT ) \r\n"
  606. " VALUES (M.VMS_FORM_ID, \r\n"
  607. " M.VMS_MODL_KIND, \r\n"
  608. " M.VMS_FORM_TYPE, \r\n"
  609. " M.VMS_FORM_NM, \r\n"
  610. " M.DSPL_EFF, \r\n"
  611. " M.DSPL_HR, \r\n"
  612. " M.BACK_CLR, \r\n"
  613. " M.OPER_ID, \r\n"
  614. " SYSDATE ) \r\n";
  615. TMemoryStream *dataStream = new TMemoryStream();
  616. ImgForm->Picture->Bitmap->SaveToStream(dataStream);
  617. try {
  618. try {
  619. pADO = new TADOQuery(NULL);
  620. pADO->Close();
  621. pADO->Connection = ITSDb_GetConnection();
  622. ITSDb_SQLText(pADO, sQry);
  623. pADO->Parameters->ParamByName("p01")->Value = VMS_FORM_ID;
  624. pADO->Parameters->ParamByName("p02")->Value = VMS_MODL_KIND;
  625. pADO->Parameters->ParamByName("p03")->Value = VMS_FORM_TYPE;
  626. pADO->Parameters->ParamByName("p04")->Value = VMS_FORM_NM;
  627. pADO->Parameters->ParamByName("p05")->Value = DSPL_EFF;
  628. pADO->Parameters->ParamByName("p06")->Value = DSPL_HR;
  629. pADO->Parameters->ParamByName("p07")->Value = BACK_CLR;
  630. pADO->Parameters->ParamByName("p08")->Value = OPER_ID;
  631. ITSDb_SQLExec(pADO);
  632. sQry = "UPDATE TB_VMS_FORM \r\n"
  633. " SET VMS_FORM_IMG = :p02 \r\n"
  634. " WHERE VMS_FORM_ID = :p01 \r\n";
  635. ITSDb_SQLText(pADO, sQry);
  636. ITSDb_SQLBind(pADO, "p01", VMS_FORM_ID);
  637. if (dataStream->Size == 0) {
  638. ITSDb_SQLBind(pADO, "p01", "");
  639. }
  640. else {
  641. pADO->Parameters->ParamByName("p02")->LoadFromStream(dataStream, ftBlob);
  642. }
  643. ITSDb_SQLExec(pADO);
  644. return true;
  645. }
  646. catch(EDatabaseError &E) {
  647. DBERRORMSG("TFrmVmsMsgUserDisp::SaveVmsForm", String(E.ClassName()), E.Message, sQry);
  648. return false;
  649. //throw Exception(String(E.ClassName()) + E.Message);
  650. }
  651. catch(Exception &e)
  652. {
  653. DBERRORMSG("TFrmVmsMsgUserDisp::SaveVmsForm", String(e.ClassName()), e.Message, sQry);
  654. return false;
  655. //throw Exception(String(e.ClassName()) + e.Message);
  656. }
  657. }
  658. __finally
  659. {
  660. if (pADO)
  661. {
  662. pADO->Close();
  663. delete pADO;
  664. }
  665. if (dataStream) delete dataStream;
  666. dataStream = NULL;
  667. }
  668. return true;
  669. }
  670. //---------------------------------------------------------------------------
  671. bool __fastcall TFrmVmsMsgUserDisp::CheckVmsFormUse(String AFormId)
  672. {
  673. String sQry;
  674. TADOQuery *pADO = NULL;
  675. try {
  676. try {
  677. pADO = new TADOQuery(NULL);
  678. pADO->Close();
  679. pADO->Connection = ITSDb_GetConnection();
  680. sQry = "SELECT VMS_FORM_ID, COUNT(1) AS CNT \r\n"
  681. " FROM TB_VMS_DSPL_PLAN_MSG \r\n"
  682. " WHERE VMS_FORM_ID = :p01 \r\n"
  683. " GROUP BY VMS_FORM_ID \r\n";
  684. ITSDb_SQLText(pADO, sQry);
  685. ITSDb_SQLBind(pADO, "p01", AFormId);
  686. ITSDb_SQLOpen(pADO);
  687. for( ; !pADO->Eof; pADO->Next()) {
  688. if (pADO->FieldByName("CNT")->AsInteger > 0) {
  689. String sMsg;
  690. sMsg = "VMS 폼 사용확인\r\n삭제할 VMS 폼 정보가 [VMS표출계획메시지] 에서 사용되고 있습니다.\r\n먼저 해당 정보를 삭제해주시기 바랍니다.";
  691. Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  692. return false;
  693. }
  694. }
  695. sQry = "SELECT VMS_FORM_ID, COUNT(1) AS CNT \r\n"
  696. " FROM TB_VMS_DFLT_FORM \r\n"
  697. " WHERE VMS_FORM_ID = :p01 \r\n"
  698. " GROUP BY VMS_FORM_ID \r\n";
  699. ITSDb_SQLText(pADO, sQry);
  700. ITSDb_SQLBind(pADO, "p01", AFormId);
  701. ITSDb_SQLOpen(pADO);
  702. for( ; !pADO->Eof; pADO->Next()) {
  703. if (pADO->FieldByName("CNT")->AsInteger > 0) {
  704. String sMsg;
  705. sMsg = "VMS 폼 사용확인\r\n삭제할 VMS 폼 정보가 [VMS기본폼구성] 에서 사용되고 있습니다.\r\n먼저 해당 정보를 삭제해주시기 바랍니다.";
  706. Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  707. return false;
  708. }
  709. }
  710. sQry = "SELECT VMS_FORM_ID, COUNT(1) AS CNT \r\n"
  711. " FROM TB_VMS_SCNR_VMS_FORM \r\n"
  712. " WHERE VMS_FORM_ID = :p01 \r\n"
  713. " GROUP BY VMS_FORM_ID \r\n";
  714. ITSDb_SQLText(pADO, sQry);
  715. ITSDb_SQLBind(pADO, "p01", AFormId);
  716. ITSDb_SQLOpen(pADO);
  717. for( ; !pADO->Eof; pADO->Next()) {
  718. if (pADO->FieldByName("CNT")->AsInteger > 0) {
  719. String sMsg;
  720. sMsg = "VMS 폼 사용확인\r\n삭제할 VMS 폼 정보가 [VMS시나리오] 에서 사용되고 있습니다.\r\n먼저 해당 정보를 삭제해주시기 바랍니다.";
  721. Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  722. return false;
  723. }
  724. }
  725. }
  726. catch(EDatabaseError &E) {
  727. DBERRORMSG("TFrmVmsMsgUserDisp::CheckVmsFormUse", String(E.ClassName()), E.Message, sQry);
  728. throw Exception(String(E.ClassName()) + E.Message);
  729. }
  730. catch(Exception &e) {
  731. DBERRORMSG("TFrmVmsMsgUserDisp::CheckVmsFormUse", String(e.ClassName()), e.Message, sQry);
  732. throw Exception(String(e.ClassName()) + e.Message);
  733. }
  734. }
  735. __finally {
  736. if (pADO) {
  737. pADO->Close();
  738. delete pADO;
  739. }
  740. }
  741. return true;
  742. }
  743. //---------------------------------------------------------------------------
  744. bool __fastcall TFrmVmsMsgUserDisp::DelVmsFormRltnTable(String AFormId)
  745. {
  746. String sQry;
  747. TADOQuery *pADO = NULL;
  748. try {
  749. try {
  750. pADO = new TADOQuery(NULL);
  751. pADO->Close();
  752. pADO->Connection = ITSDb_GetConnection();
  753. sQry = "DELETE TB_VMS_FORM_OBJ_TXT \r\n"
  754. " WHERE VMS_FORM_OBJ_ID IN (SELECT VMS_FORM_OBJ_ID \r\n"
  755. " FROM TB_VMS_FORM_VMS_FORM_OBJ \r\n"
  756. " WHERE VMS_FORM_ID = :p01) \r\n";
  757. ITSDb_SQLText(pADO, sQry);
  758. ITSDb_SQLBind(pADO, "p01", AFormId);
  759. pADO->ExecSQL();
  760. sQry = "DELETE TB_VMS_FORM_VMS_FORM_OBJ WHERE VMS_FORM_ID = :p01";
  761. ITSDb_SQLText(pADO, sQry);
  762. ITSDb_SQLBind(pADO, "p01", AFormId);
  763. pADO->ExecSQL();
  764. return true;
  765. }
  766. catch(EDatabaseError &E) {
  767. DBERRORMSG("TFrmVmsMsgFormMngr::DelVmsFormRltnTable", String(E.ClassName()), E.Message, sQry);
  768. //throw Exception(String(E.ClassName()) + E.Message);
  769. return false;
  770. }
  771. catch(Exception &e) {
  772. DBERRORMSG("TFrmVmsMsgFormMngr::DelVmsFormRltnTable", String(e.ClassName()), e.Message, sQry);
  773. //throw Exception(String(e.ClassName()) + e.Message);
  774. return false;
  775. }
  776. }
  777. __finally {
  778. if (pADO) {
  779. pADO->Close();
  780. delete pADO;
  781. }
  782. }
  783. return true;
  784. }
  785. //---------------------------------------------------------------------------
  786. bool __fastcall TFrmVmsMsgUserDisp::DelVmsForm(String AFormId)
  787. {
  788. String sQry;
  789. TADOQuery *pADO = NULL;
  790. if (!DelVmsFormRltnTable(AFormId)) {
  791. return false;
  792. }
  793. try {
  794. try {
  795. pADO = new TADOQuery(NULL);
  796. pADO->Close();
  797. pADO->Connection = ITSDb_GetConnection();
  798. sQry = "DELETE TB_VMS_FORM WHERE VMS_FORM_ID = :p01";
  799. ITSDb_SQLText(pADO, sQry);
  800. ITSDb_SQLBind(pADO, "p01", AFormId);
  801. pADO->ExecSQL();
  802. return true;
  803. }
  804. catch(EDatabaseError &E) {
  805. DBERRORMSG("TFrmVmsMsgUserDisp::DelVmsForm", String(E.ClassName()), E.Message, sQry);
  806. //throw Exception(String(E.ClassName()) + E.Message);
  807. return false;
  808. }
  809. catch(Exception &e) {
  810. DBERRORMSG("TFrmVmsMsgUserDisp::DelVmsForm", String(e.ClassName()), e.Message, sQry);
  811. //throw Exception(String(e.ClassName()) + e.Message);
  812. return false;
  813. }
  814. }
  815. __finally {
  816. if (pADO) {
  817. pADO->Close();
  818. delete pADO;
  819. }
  820. }
  821. return true;
  822. }
  823. //---------------------------------------------------------------------------
  824. String __fastcall TFrmVmsMsgUserDisp::GetNextVmsFormId(String AFormType)
  825. {
  826. String sQry;
  827. TADOQuery *pADO = NULL;
  828. String result = AFormType + "-0000";
  829. sQry = "SELECT '" + AFormType + "-' || LPAD(NVL(MAX(SUBSTR(VMS_FORM_ID, -4)), '0000') + 1, 4, '0') AS NEWID FROM TB_VMS_FORM WHERE SUBSTR(VMS_FORM_ID,1,2)='" + AFormType + "-'";
  830. try
  831. {
  832. try
  833. {
  834. pADO = new TADOQuery(NULL);
  835. pADO->Close();
  836. pADO->Connection = ITSDb_GetConnection();
  837. ITSDb_SQLText(pADO, sQry);
  838. ITSDb_SQLOpen(pADO);
  839. pADO->Open();
  840. result = pADO->FieldByName("NEWID")->AsString;
  841. }
  842. catch(EDatabaseError &E)
  843. {
  844. DBERRORMSG("TFrmVmsMsgUserDisp::GetNextVmsFormId", String(E.ClassName()), E.Message, sQry);
  845. return result;
  846. }
  847. catch(Exception &e)
  848. {
  849. DBERRORMSG("TFrmVmsMsgUserDisp::GetNextVmsFormId", String(e.ClassName()), e.Message, sQry);
  850. return result;
  851. }
  852. }
  853. __finally
  854. {
  855. if (pADO)
  856. {
  857. pADO->Close();
  858. delete pADO;
  859. }
  860. }
  861. return result;
  862. }
  863. //---------------------------------------------------------------------------