FrmVmsMsgFormMngrSRCF.cpp 38 KB

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