FrmVmsMsgFormMngrSRCF.cpp 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074
  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. //폼유형
  17. void __fastcall TFrmVmsMsgFormMngr::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("TFrmVmsMsgFormMngr::FillVmsFormType", String(E.ClassName()), E.Message, sQry);
  50. throw Exception(String(E.ClassName()) + E.Message);
  51. }
  52. catch(Exception &exception)
  53. {
  54. DBERRORMSG("TFrmVmsMsgFormMngr::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 TFrmVmsMsgFormMngr::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("TFrmVmsMsgFormMngr::FillVmsFormDispMode", String(E.ClassName()), E.Message, sQry);
  102. throw Exception(String(E.ClassName()) + E.Message);
  103. }
  104. catch(Exception &exception)
  105. {
  106. DBERRORMSG("TFrmVmsMsgFormMngr::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 TFrmVmsMsgFormMngr::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("TFrmVmsMsgFormMngr::FillVmsFormDispDir", String(E.ClassName()), E.Message, sQry);
  154. throw Exception(String(E.ClassName()) + E.Message);
  155. }
  156. catch(Exception &exception)
  157. {
  158. DBERRORMSG("TFrmVmsMsgFormMngr::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 TFrmVmsMsgFormMngr::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("TFrmVmsMsgFormMngr::FillVmsFont", String(E.ClassName()), E.Message, sQry);
  206. throw Exception(String(E.ClassName()) + E.Message);
  207. }
  208. catch(Exception &exception)
  209. {
  210. DBERRORMSG("TFrmVmsMsgFormMngr::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 TFrmVmsMsgFormMngr::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. " NVL(A.FORM_OBJ_DSPL_WDTH, 0) AS FORM_OBJ_DSPL_WDTH, \r\n"
  236. " NVL(A.FORM_OBJ_DSPL_HGHT, 0) AS FORM_OBJ_DSPL_HGHT, \r\n"
  237. " DECODE(B.VMS_FORM_OBJ_ID, NULL, 0, 1) AS IS_CCTV_OBJ, \r\n"
  238. " DECODE(C.VMS_FORM_OBJ_ID, NULL, 0, 1) AS IS_TEXT_OBJ, \r\n"
  239. " DECODE(D.VMS_FORM_OBJ_ID, NULL, 0, 1) AS IS_SYMB_OBJ, \r\n"
  240. " DECODE(E.VMS_FORM_OBJ_ID, NULL, 0, 1) AS IS_MOVE_OBJ, \r\n"
  241. // " B.CCTV_ID, B.DSPL_WDTH, B.DSPL_HGHT, \r\n"
  242. " B.CCTV_ID, \r\n"
  243. " C.TXT_WDTH, C.TXT_HGHT, C.TXT_ALGN_MTHD, \r\n"
  244. " C.FONT_CLR, C.FONT_TYPE, C.FONT_SZ, NVL(C.FONT_THCK, 'N') AS FONT_THCK, \r\n"
  245. " C.VMS_TXT_ITEM_ID, C.DSPL_TXT, \r\n"
  246. " D.PICT_NM, D.PICT_WDTH, D.PICT_HGHT, \r\n"
  247. " D.PICT_DATA_SZ, D.PICT_DATA, D.PICT_TYPE, \r\n"
  248. " E.MOV_NM, E.MOV_DATA_SZ, E.MOV_TYPE, E.THMB_IMG \r\n"
  249. " FROM TB_VMS_FORM_VMS_FORM_OBJ A, \r\n"
  250. " TB_VMS_FORM_OBJ_CCTV B, \r\n"
  251. " TB_VMS_FORM_OBJ_TXT C, \r\n"
  252. " TB_VMS_FORM_OBJ_PICT D, \r\n"
  253. " TB_VMS_FORM_OBJ_MOV E \r\n"
  254. " WHERE 1=1 \r\n"
  255. " AND A.VMS_FORM_ID = :p01 \r\n"
  256. " AND A.VMS_FORM_OBJ_ID = B.VMS_FORM_OBJ_ID(+) \r\n"
  257. " AND A.VMS_FORM_OBJ_ID = C.VMS_FORM_OBJ_ID(+) \r\n"
  258. " AND A.VMS_FORM_OBJ_ID = D.VMS_FORM_OBJ_ID(+) \r\n"
  259. " AND A.VMS_FORM_OBJ_ID = E.VMS_FORM_OBJ_ID(+) \r\n"
  260. " ORDER BY A.VMS_FORM_ID, A.SN \r\n";
  261. try
  262. {
  263. try
  264. {
  265. pADO = new TADOQuery(NULL);
  266. pADO->Close();
  267. pADO->Connection = ITSDb_GetConnection();
  268. ITSDb_SQLText(pADO, sQry);
  269. ITSDb_SQLBind(pADO, "p01", AFormId);
  270. ITSDb_SQLOpen(pADO);
  271. int nDrawType;
  272. String sObjKind;
  273. for( ; !pADO->Eof; pADO->Next())
  274. {
  275. String sFormId = pADO->FieldByName("VMS_FORM_ID")->AsString;
  276. String sObjId = pADO->FieldByName("VMS_FORM_OBJ_ID")->AsString;
  277. int nObjSeq = pADO->FieldByName("OBJ_SEQ")->AsInteger;
  278. String sObjKind = pADO->FieldByName("VMS_FORM_OBJ_KIND")->AsString;
  279. String sBackClr = pADO->FieldByName("BACK_CLR")->AsString;
  280. int nPosX = pADO->FieldByName("FORM_OBJ_PSTN_X")->AsInteger;
  281. int nPosY = pADO->FieldByName("FORM_OBJ_PSTN_Y")->AsInteger;
  282. bool bBlinking = pADO->FieldByName("FORM_OBJ_BLNK_YN")->AsString == "N" ? false : true;
  283. int nDsplWdth = pADO->FieldByName("FORM_OBJ_DSPL_WDTH")->AsInteger;
  284. int nDsplHght = pADO->FieldByName("FORM_OBJ_DSPL_HGHT")->AsInteger;
  285. int isCctvObj = pADO->FieldByName("IS_CCTV_OBJ")->AsInteger;
  286. int isTextObj = pADO->FieldByName("IS_TEXT_OBJ")->AsInteger;
  287. int isSymbObj = pADO->FieldByName("IS_SYMB_OBJ")->AsInteger;
  288. int isMoveObj = pADO->FieldByName("IS_MOVE_OBJ")->AsInteger;
  289. int nObjType = 0;
  290. int nDsplSize = 0;
  291. String sDsplText = "";
  292. if (sObjKind == FORM_OBJ_KIND_CCTV && isCctvObj == 1) {
  293. sDsplText = pADO->FieldByName("CCTV_ID")->AsString;
  294. //nDsplWdth = pADO->FieldByName("DSPL_WDTH")->AsInteger;
  295. //nDsplHght = pADO->FieldByName("DSPL_HGHT")->AsInteger;
  296. nDrawType = 1; //이미지그리기
  297. nObjType = 2; //이미지
  298. nDsplSize = nDsplWdth * nDsplHght;
  299. }
  300. else
  301. if (sObjKind == FORM_OBJ_KIND_TEXT && isTextObj == 1) {
  302. sDsplText = pADO->FieldByName("DSPL_TXT")->AsString;
  303. nDsplWdth = pADO->FieldByName("TXT_WDTH")->AsInteger;
  304. nDsplHght = pADO->FieldByName("TXT_HGHT")->AsInteger;
  305. nDsplSize = sDsplText.Length();
  306. nDrawType = 0; //문자열그리기
  307. nObjType = 0; //문자열
  308. }
  309. else
  310. if (sObjKind == FORM_OBJ_KIND_IMAGE && isSymbObj == 1) {
  311. sDsplText = pADO->FieldByName("PICT_NM")->AsString;
  312. nDsplSize = pADO->FieldByName("PICT_DATA_SZ")->AsInteger;
  313. if (nDsplWdth <= 0 || nDsplHght <= 0) {
  314. nDsplWdth = pADO->FieldByName("PICT_WDTH")->AsInteger;
  315. nDsplHght = pADO->FieldByName("PICT_HGHT")->AsInteger;
  316. }
  317. //TMemoryStream *pictData = pADO->CreateBlobStream(pADO->FieldByName("PICT_DATA"), bmRead);
  318. //SAFE_DELETE(pictData);
  319. nDrawType = 1; //이미지그리기
  320. nObjType = 1; //이미지심벌
  321. }
  322. else
  323. if (sObjKind == FORM_OBJ_KIND_MOVIE && isMoveObj == 1) {
  324. sDsplText = pADO->FieldByName("MOV_NM")->AsString;
  325. nDsplSize = pADO->FieldByName("MOV_DATA_SZ")->AsInteger;
  326. //TMemoryStream *pictData = pADO->CreateBlobStream(pADO->FieldByName("PICT_DATA"), bmRead);
  327. //SAFE_DELETE(pictData);
  328. nDrawType = 1; //이미지그리기
  329. nObjType = 1; //이미지심벌
  330. }
  331. else {
  332. continue;
  333. }
  334. /////// 폼객체를 생성해서 추가한다.
  335. TVmsFormObject *pObj = ADesigner->AddObject((VmsObjectDrawType)nDrawType);
  336. if (!pObj) continue;
  337. if (sObjKind == FORM_OBJ_KIND_CCTV && isCctvObj == 1) {
  338. pObj->EditMode = false;
  339. }
  340. pObj->ObjSeq = nObjSeq;
  341. pObj->ObjId = sObjId;
  342. pObj->ObjKind = sObjKind;
  343. pObj->ObjType = sObjKind;
  344. pObj->Tag = 0;
  345. pObj->ObjSize = nDsplSize;
  346. pObj->BkColorCode = sBackClr;
  347. pObj->Blink = bBlinking;
  348. pObj->ImageId = sObjId;
  349. pObj->Text = sDsplText;
  350. pObj->RunText = pObj->Text;
  351. pObj->SetPos(nPosX, nPosY);
  352. if (sObjKind == FORM_OBJ_KIND_TEXT && isTextObj == 1) // 문자열
  353. {
  354. String sTxtItemId = pADO->FieldByName("VMS_TXT_ITEM_ID")->AsString;
  355. String sTxtAlgn = pADO->FieldByName("TXT_ALGN_MTHD")->AsString;
  356. String sFontClr = pADO->FieldByName("FONT_CLR")->AsString;
  357. String sFontType = pADO->FieldByName("FONT_TYPE")->AsString;
  358. int nFontSize = pADO->FieldByName("FONT_SZ")->AsInteger;
  359. bool bFontThck = pADO->FieldByName("FONT_THCK")->AsString == "N" ? false : true;
  360. int nTextAlign = 0;
  361. if (sTxtAlgn == "R") nTextAlign = 1;
  362. if (sTxtAlgn == "C") nTextAlign = 2;
  363. pObj->FillIn = sTxtItemId;
  364. pObj->FontNameCode = sFontType;
  365. TCDSFontName *pFontName = CDSFontManager->FFontNames.Find(pObj->FontNameCode);
  366. if (pFontName != NULL) {
  367. pObj->FontName = pFontName->VMS_FONT_NAME_NM;
  368. }
  369. else {
  370. pObj->FontName = "명조체";
  371. pObj->FontNameCode = "00";
  372. }
  373. pObj->FontColorCode = sFontClr;
  374. pObj->FontSize = nFontSize;
  375. pObj->FontBold = bFontThck;
  376. pObj->TextAlign = nTextAlign;
  377. }
  378. else
  379. if (sObjKind == FORM_OBJ_KIND_IMAGE && isSymbObj == 1)
  380. {
  381. if (pObj->ObjKind == OBJKIND_IMAGEID) {
  382. if (pObj->Text.Trim() == "") {
  383. pObj->Text = pObj->ImageId;
  384. }
  385. }
  386. TMemoryStream *pictData = new TMemoryStream();
  387. try {
  388. String sPictType = pADO->FieldByName("PICT_TYPE")->AsString;
  389. String sPictExt = DbPictTypeToReal(sPictType);
  390. pictData->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("PICT_DATA"), bmRead));
  391. if (pictData && pictData->Size > 0) {
  392. imageFilePath = saveDirPath + sObjId + "." + sPictExt;
  393. pictData->SaveToFile(imageFilePath);
  394. LoadingImage(pObj, imageFilePath, nDsplWdth, nDsplHght);
  395. pObj->GetImage()->AutoSize= false;
  396. pObj->GetImage()->Stretch = true;
  397. pObj->GetImage()->Width = nDsplWdth;
  398. pObj->GetImage()->Height = nDsplHght;
  399. pObj->SetSize(nDsplWdth, nDsplHght);
  400. pObj->SetPos(nPosX, nPosY);
  401. }
  402. }
  403. __finally {
  404. SAFE_DELETE(pictData);
  405. }
  406. }
  407. else
  408. if (sObjKind == FORM_OBJ_KIND_MOVIE && isMoveObj == 1)
  409. {
  410. if (pObj->ObjKind == OBJKIND_IMAGEID) {
  411. if (pObj->Text.Trim() == "") {
  412. pObj->Text = pObj->ImageId;
  413. }
  414. }
  415. TMemoryStream *imagData = new TMemoryStream();
  416. try {
  417. String sPictExt = "bmp";
  418. imagData->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("THMB_IMG"), bmRead));
  419. if (imagData && imagData->Size > 0) {
  420. imageFilePath = saveDirPath + sObjId + "." + sPictExt;
  421. imagData->SaveToFile(imageFilePath);
  422. LoadingImage(pObj, imageFilePath, nDsplWdth, nDsplHght);
  423. pObj->GetImage()->AutoSize= false;
  424. pObj->GetImage()->Stretch = true;
  425. pObj->GetImage()->Width = nDsplWdth;
  426. pObj->GetImage()->Height = nDsplHght;
  427. pObj->SetSize(nDsplWdth, nDsplHght);
  428. pObj->SetPos(nPosX, nPosY);
  429. }
  430. }
  431. __finally {
  432. SAFE_DELETE(imagData);
  433. }
  434. }
  435. pObj->Show();
  436. pObj->BringToFront();
  437. }
  438. }
  439. catch(EDatabaseError &E)
  440. {
  441. DBERRORMSG("TFrmVmsMsgFormMngr::LoadFormObjectInfo", String(E.ClassName()), E.Message, sQry);
  442. throw Exception(String(E.ClassName()) + E.Message);
  443. }
  444. catch(Exception &exception)
  445. {
  446. DBERRORMSG("TFrmVmsMsgFormMngr::LoadFormObjectInfo", String(exception.ClassName()), exception.Message, sQry);
  447. throw Exception(String(exception.ClassName()) + exception.Message);
  448. }
  449. }
  450. __finally
  451. {
  452. if (pADO)
  453. {
  454. pADO->Close();
  455. delete pADO;
  456. }
  457. }
  458. }
  459. //---------------------------------------------------------------------------
  460. void __fastcall TFrmVmsMsgFormMngr::LoadVmsForm()
  461. {
  462. FormClear();
  463. CMM_ClearGridTableView(TvList);
  464. ClearSymbloList();
  465. TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType);
  466. if (pVmsSizeType == NULL) return;
  467. String sWhereQry = "";
  468. if (pVmsSizeType->TypeCd != "ALL") {
  469. sWhereQry += " AND A.VMS_MODL_KIND = '" + pVmsSizeType->TypeCd + "' \r\n";
  470. }
  471. FVmsTypeCd = pVmsSizeType->TypeCd;
  472. FVmsWidth = pVmsSizeType->Width;
  473. FVmsHeight = pVmsSizeType->Height;
  474. FVmsCols = pVmsSizeType->Cols;
  475. FVmsRows = pVmsSizeType->Rows;
  476. ImgForm->Width = FVmsWidth;
  477. ImgForm->Height = FVmsHeight;
  478. ImgForm->Picture->Bitmap->Width = FVmsWidth;
  479. ImgForm->Picture->Bitmap->Height = FVmsHeight;
  480. {
  481. PnlEdtBack->Width = FVmsWidth+4;
  482. PnlEdtBack->Height= FVmsHeight+4;
  483. PnlRePreview->Width = FVmsWidth+4;
  484. PnlRePreview->Height= FVmsHeight+4;
  485. PnlRePreview->Color = clWhite;
  486. ImgEdtPreview->Left = 2;
  487. ImgEdtPreview->Top = 2;
  488. ImgEdtPreview->Width = FVmsWidth;
  489. ImgEdtPreview->Height= FVmsHeight;
  490. ImgEdtPreview->Picture->Bitmap->Width = FVmsWidth;
  491. ImgEdtPreview->Picture->Bitmap->Height = FVmsHeight;
  492. m_pEdtDesigner->DrawPreviewModuleBack(ImgEdtPreview, clBlack, FVmsRows, FVmsCols);
  493. #if 0
  494. #if 0
  495. ReForm->Width = FVmsWidth+22+4;
  496. ReForm->Height= FVmsHeight+22+4;
  497. #else
  498. ReForm->Width = FVmsWidth+4;
  499. ReForm->Height= FVmsHeight+4;
  500. #endif
  501. #endif
  502. ReForm->Color = clBlack;
  503. m_pEdtDesigner->Clear();
  504. m_pEdtDesigner->SizeType = FVmsTypeCd;
  505. m_pEdtDesigner->SetSize(FVmsWidth, FVmsHeight);
  506. m_pEdtDesigner->SetPos(0, 0);
  507. m_pEdtDesigner->BkColorCode = "0";
  508. m_pEdtDesigner->EditMode = true;
  509. m_pEdtDesigner->Show();
  510. }
  511. String sVmsSizeNm = pVmsSizeType->TypeNm;
  512. String sQry;
  513. TADOQuery *pADO = NULL;
  514. sQry = "SELECT A.VMS_FORM_ID, A.VMS_MODL_KIND, A.VMS_FORM_TYPE, A.VMS_FORM_NM, \r\n"
  515. " A.DSPL_EFF, NVL(A.DSPL_HR, 0) AS DSPL_HR, A.BACK_CLR, \r\n"
  516. " NVL(B.FORM_TYPE_NM, A.VMS_FORM_TYPE) AS FORM_TYPE_NM, \r\n"
  517. " NVL(C.FORM_TYPE_NM, A.DSPL_EFF) AS DSPL_EFF_NM, \r\n"
  518. " NVL(D.VMS_MODL_KIND_NM, A.VMS_MODL_KIND) AS VMS_MODL_KIND_NM \r\n"
  519. " FROM TB_VMS_FORM A, \r\n"
  520. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  521. " FROM TB_SYS_CD \r\n"
  522. " WHERE CLSS_CD = 'VMS_FORM_TYPE_CD') B, \r\n"
  523. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  524. " FROM TB_SYS_CD \r\n"
  525. " WHERE CLSS_CD = 'VMS_FORM_DSPL_EFF_CD') C, \r\n"
  526. " TB_VMS_MODL_KIND D \r\n"
  527. " WHERE 1=1 \r\n"
  528. " AND A.VMS_FORM_TYPE = B.CODE_NO(+) \r\n"
  529. " AND A.DSPL_EFF = C.CODE_NO(+) \r\n"
  530. " AND A.VMS_MODL_KIND = D.VMS_MODL_KIND(+) \r\n";
  531. sQry += sWhereQry;
  532. sQry +=" ORDER BY A.VMS_MODL_KIND, A.VMS_FORM_ID \r\n";
  533. String sFirstFormId = "";
  534. try
  535. {
  536. int nRow;
  537. TcxDataController *pGDC = TvList->DataController;
  538. TvList->BeginUpdate();
  539. try
  540. {
  541. pADO = new TADOQuery(NULL);
  542. pADO->Close();
  543. pADO->Connection = ITSDb_GetConnection();
  544. ITSDb_SQLText(pADO, sQry);
  545. ITSDb_SQLOpen(pADO);
  546. for( ; !pADO->Eof; pADO->Next())
  547. {
  548. nRow = pGDC->AppendRecord();
  549. String sVmsFormId = pADO->FieldByName("VMS_FORM_ID")->AsString;
  550. if (sFirstFormId == "") sFirstFormId = sVmsFormId;
  551. String DSPL_EFF = pADO->FieldByName("DSPL_EFF")->AsString;
  552. pGDC->Values[nRow][ColVMS_FORM_ID->Index] = sVmsFormId; //폼ID
  553. pGDC->Values[nRow][ColVMS_FORM_NM->Index] = pADO->FieldByName("VMS_FORM_NM")->AsVariant; //폼명칭
  554. pGDC->Values[nRow][ColVMS_FORM_TYPE_NM->Index] = pADO->FieldByName("FORM_TYPE_NM")->AsString; //폼종류
  555. pGDC->Values[nRow][ColDSPL_EFF_NM->Index] = pADO->FieldByName("DSPL_EFF_NM")->AsString; //표출효과
  556. pGDC->Values[nRow][ColVMS_MODL_KIND_NM->Index] = pADO->FieldByName("VMS_MODL_KIND_NM")->AsString; //폼크기
  557. pGDC->Values[nRow][ColDSPL_HR->Index] = pADO->FieldByName("DSPL_HR")->AsInteger; //표출시간
  558. pGDC->Values[nRow][ColVMS_FORM_TYPE->Index] = pADO->FieldByName("VMS_FORM_TYPE")->AsString; //폼종류코드-
  559. pGDC->Values[nRow][ColDSPL_EFF->Index] = pADO->FieldByName("DSPL_EFF")->AsString; //표출효과
  560. pGDC->Values[nRow][ColBACK_CLR->Index] = pADO->FieldByName("BACK_CLR")->AsString; //배경색코드-
  561. pGDC->Values[nRow][ColVMS_MODL_KIND->Index] = pADO->FieldByName("VMS_MODL_KIND")->AsString; //폼크기코드-
  562. #if 0
  563. Graphics::TBitmap *bitmap = new Graphics::TBitmap;
  564. try {
  565. bitmap->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("VMS_FORM_IMAG"), bmRead));
  566. } catch(Exception &e) {
  567. //throw Exception(String(e.ClassName()) + e.Message);
  568. }
  569. FListSymb->Add(bitmap);
  570. #endif
  571. }
  572. }
  573. catch(EDatabaseError &E)
  574. {
  575. DBERRORMSG("TFrmVmsMsgFormMngr::LoadVmsForm", String(E.ClassName()), E.Message, sQry);
  576. throw Exception(String(E.ClassName()) + E.Message);
  577. }
  578. catch(Exception &e)
  579. {
  580. DBERRORMSG("TFrmVmsMsgFormMngr::LoadVmsForm", String(e.ClassName()), e.Message, sQry);
  581. throw Exception(String(e.ClassName()) + e.Message);
  582. }
  583. }
  584. __finally
  585. {
  586. if (pADO)
  587. {
  588. pADO->Close();
  589. delete pADO;
  590. }
  591. TvList->EndUpdate();
  592. if (TvList->DataController->RecordCount > 0)
  593. {
  594. //CMM_SetGridRow(CxList, TvList, sFirstFormId, ColVMS_FORM_ID->Index);
  595. //DisplayInfo();
  596. }
  597. }
  598. }
  599. //---------------------------------------------------------------------------
  600. bool __fastcall TFrmVmsMsgFormMngr::SaveVmsForm(String AVALID_YN)
  601. {
  602. String sQry;
  603. TADOQuery *pADO = NULL;
  604. String VMS_FORM_ID = EdFormId->Text;
  605. String VMS_MODL_KIND = APP_GetCode(CbSizeType); // FVmsTypeCd
  606. String VMS_FORM_TYPE = APP_GetCode(CbFormType);
  607. String VMS_FORM_NM = EdFormName->Text.Trim();
  608. String DSPL_EFF = APP_GetCode(CbFormDsplEff);
  609. int DSPL_HR = SeDsplHr->Value;
  610. String BACK_CLR = CDSFontManager->GetBackColorCode(CbFormBkClr->ItemIndex);
  611. String OPER_ID = g_AppCfg.OPER_ID;
  612. sQry = "MERGE INTO TB_VMS_FORM L \r\n"
  613. "USING (SELECT :p01 AS VMS_FORM_ID, \r\n"
  614. " :p02 AS VMS_MODL_KIND, \r\n"
  615. " :p03 AS VMS_FORM_TYPE, \r\n"
  616. " :p04 AS VMS_FORM_NM, \r\n"
  617. " :p05 AS DSPL_EFF, \r\n"
  618. " :p06 AS DSPL_HR, \r\n"
  619. " :p07 AS BACK_CLR, \r\n"
  620. " :p08 AS OPER_ID \r\n"
  621. " FROM DUAL) M \r\n"
  622. " ON (L.VMS_FORM_ID = M.VMS_FORM_ID) \r\n"
  623. "WHEN MATCHED THEN \r\n"
  624. " UPDATE SET L.VMS_MODL_KIND = M.VMS_MODL_KIND, \r\n"
  625. " L.VMS_FORM_TYPE = M.VMS_FORM_TYPE, \r\n"
  626. " L.VMS_FORM_NM = M.VMS_FORM_NM, \r\n"
  627. " L.DSPL_EFF = M.DSPL_EFF, \r\n"
  628. " L.DSPL_HR = M.DSPL_HR, \r\n"
  629. " L.BACK_CLR = M.BACK_CLR, \r\n"
  630. " L.CHNGR_ID = M.OPER_ID, \r\n"
  631. " L.CHG_DT = SYSDATE \r\n"
  632. "WHEN NOT MATCHED THEN \r\n"
  633. " INSERT (VMS_FORM_ID, \r\n"
  634. " VMS_MODL_KIND, \r\n"
  635. " VMS_FORM_TYPE, \r\n"
  636. " VMS_FORM_NM, \r\n"
  637. " DSPL_EFF, \r\n"
  638. " DSPL_HR, \r\n"
  639. " BACK_CLR, \r\n"
  640. " RGSTR_ID, \r\n"
  641. " REG_DT ) \r\n"
  642. " VALUES (M.VMS_FORM_ID, \r\n"
  643. " M.VMS_MODL_KIND, \r\n"
  644. " M.VMS_FORM_TYPE, \r\n"
  645. " M.VMS_FORM_NM, \r\n"
  646. " M.DSPL_EFF, \r\n"
  647. " M.DSPL_HR, \r\n"
  648. " M.BACK_CLR, \r\n"
  649. " M.OPER_ID, \r\n"
  650. " SYSDATE ) \r\n";
  651. TMemoryStream *dataStream = new TMemoryStream();
  652. ImgForm->Picture->Bitmap->SaveToStream(dataStream);
  653. try {
  654. try {
  655. pADO = new TADOQuery(NULL);
  656. pADO->Close();
  657. pADO->Connection = ITSDb_GetConnection();
  658. ITSDb_SQLText(pADO, sQry);
  659. pADO->Parameters->ParamByName("p01")->Value = VMS_FORM_ID;
  660. pADO->Parameters->ParamByName("p02")->Value = VMS_MODL_KIND;
  661. pADO->Parameters->ParamByName("p03")->Value = VMS_FORM_TYPE;
  662. pADO->Parameters->ParamByName("p04")->Value = VMS_FORM_NM;
  663. pADO->Parameters->ParamByName("p05")->DataType = ftString;
  664. pADO->Parameters->ParamByName("p05")->Value = DSPL_EFF;
  665. pADO->Parameters->ParamByName("p06")->Value = DSPL_HR;
  666. pADO->Parameters->ParamByName("p07")->DataType = ftString;
  667. pADO->Parameters->ParamByName("p07")->Value = BACK_CLR;
  668. pADO->Parameters->ParamByName("p08")->Value = OPER_ID;
  669. ITSDb_SQLExec(pADO);
  670. sQry = "UPDATE TB_VMS_FORM \r\n"
  671. " SET VMS_FORM_IMG = :p02 \r\n"
  672. " WHERE VMS_FORM_ID = :p01 \r\n";
  673. ITSDb_SQLText(pADO, sQry);
  674. ITSDb_SQLBind(pADO, "p01", VMS_FORM_ID);
  675. if (dataStream->Size == 0) {
  676. ITSDb_SQLBind(pADO, "p01", "");
  677. }
  678. else {
  679. pADO->Parameters->ParamByName("p02")->LoadFromStream(dataStream, ftBlob);
  680. }
  681. ITSDb_SQLExec(pADO);
  682. return true;
  683. }
  684. catch(EDatabaseError &E) {
  685. DBERRORMSG("TFrmVmsMsgFormMngr::SaveVmsForm", String(E.ClassName()), E.Message, sQry);
  686. return false;
  687. //throw Exception(String(E.ClassName()) + E.Message);
  688. }
  689. catch(Exception &e)
  690. {
  691. DBERRORMSG("TFrmVmsMsgFormMngr::SaveVmsForm", String(e.ClassName()), e.Message, sQry);
  692. return false;
  693. //throw Exception(String(e.ClassName()) + e.Message);
  694. }
  695. }
  696. __finally
  697. {
  698. if (pADO)
  699. {
  700. pADO->Close();
  701. delete pADO;
  702. }
  703. if (dataStream) delete dataStream;
  704. dataStream = NULL;
  705. }
  706. return true;
  707. }
  708. //---------------------------------------------------------------------------
  709. bool __fastcall TFrmVmsMsgFormMngr::CheckVmsFormUse(String AFormId)
  710. {
  711. String sQry;
  712. TADOQuery *pADO = NULL;
  713. try {
  714. try {
  715. pADO = new TADOQuery(NULL);
  716. pADO->Close();
  717. pADO->Connection = ITSDb_GetConnection();
  718. #if 0
  719. sQry = "SELECT VMS_FORM_ID, COUNT(1) AS CNT \r\n"
  720. " FROM TB_VMS_DSPL_PLAN_MSG \r\n"
  721. " WHERE VMS_FORM_ID = :p01 \r\n"
  722. " GROUP BY VMS_FORM_ID \r\n";
  723. ITSDb_SQLText(pADO, sQry);
  724. ITSDb_SQLBind(pADO, "p01", AFormId);
  725. ITSDb_SQLOpen(pADO);
  726. for( ; !pADO->Eof; pADO->Next()) {
  727. if (pADO->FieldByName("CNT")->AsInteger > 0) {
  728. String sMsg;
  729. sMsg = "VMS 폼 사용확인\r\n삭제할 VMS 폼 정보가 [VMS표출계획메시지] 에서 사용되고 있습니다.\r\n먼저 해당 정보를 삭제해주시기 바랍니다.";
  730. Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  731. return false;
  732. }
  733. }
  734. #endif
  735. sQry = "SELECT VMS_FORM_ID, COUNT(1) AS CNT \r\n"
  736. " FROM TB_VMS_INCD_RES_FORM \r\n"
  737. " WHERE VMS_FORM_ID = :p01 \r\n"
  738. " GROUP BY VMS_FORM_ID \r\n";
  739. ITSDb_SQLText(pADO, sQry);
  740. ITSDb_SQLBind(pADO, "p01", AFormId);
  741. ITSDb_SQLOpen(pADO);
  742. for( ; !pADO->Eof; pADO->Next()) {
  743. if (pADO->FieldByName("CNT")->AsInteger > 0) {
  744. String sMsg;
  745. sMsg = "VMS 폼 사용확인\r\n삭제할 VMS 폼 정보가 [VMS돌발상황대응메시지] 에서 사용되고 있습니다.\r\n먼저 해당 정보를 삭제해주시기 바랍니다.";
  746. Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  747. return false;
  748. }
  749. }
  750. sQry = "SELECT VMS_FORM_ID, COUNT(1) AS CNT \r\n"
  751. " FROM TB_VMS_EMGNC_FORM \r\n"
  752. " WHERE VMS_FORM_ID = :p01 \r\n"
  753. " GROUP BY VMS_FORM_ID \r\n";
  754. ITSDb_SQLText(pADO, sQry);
  755. ITSDb_SQLBind(pADO, "p01", AFormId);
  756. ITSDb_SQLOpen(pADO);
  757. for( ; !pADO->Eof; pADO->Next()) {
  758. if (pADO->FieldByName("CNT")->AsInteger > 0) {
  759. String sMsg;
  760. sMsg = "VMS 폼 사용확인\r\n삭제할 VMS 폼 정보가 [VMS긴급메시지] 에서 사용되고 있습니다.\r\n먼저 해당 정보를 삭제해주시기 바랍니다.";
  761. Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  762. return false;
  763. }
  764. }
  765. sQry = "SELECT VMS_FORM_ID, COUNT(1) AS CNT \r\n"
  766. " FROM TB_VMS_PUBRL_FORM \r\n"
  767. " WHERE VMS_FORM_ID = :p01 \r\n"
  768. " GROUP BY VMS_FORM_ID \r\n";
  769. ITSDb_SQLText(pADO, sQry);
  770. ITSDb_SQLBind(pADO, "p01", AFormId);
  771. ITSDb_SQLOpen(pADO);
  772. for( ; !pADO->Eof; pADO->Next()) {
  773. if (pADO->FieldByName("CNT")->AsInteger > 0) {
  774. String sMsg;
  775. sMsg = "VMS 폼 사용확인\r\n삭제할 VMS 폼 정보가 [VMS홍보메시지] 에서 사용되고 있습니다.\r\n먼저 해당 정보를 삭제해주시기 바랍니다.";
  776. Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  777. return false;
  778. }
  779. }
  780. sQry = "SELECT VMS_FORM_ID, COUNT(1) AS CNT \r\n"
  781. " FROM TB_VMS_DFLT_FORM \r\n"
  782. " WHERE VMS_FORM_ID = :p01 \r\n"
  783. " GROUP BY VMS_FORM_ID \r\n";
  784. ITSDb_SQLText(pADO, sQry);
  785. ITSDb_SQLBind(pADO, "p01", AFormId);
  786. ITSDb_SQLOpen(pADO);
  787. for( ; !pADO->Eof; pADO->Next()) {
  788. if (pADO->FieldByName("CNT")->AsInteger > 0) {
  789. String sMsg;
  790. sMsg = "VMS 폼 사용확인\r\n삭제할 VMS 폼 정보가 [VMS기본폼구성] 에서 사용되고 있습니다.\r\n먼저 해당 정보를 삭제해주시기 바랍니다.";
  791. Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  792. return false;
  793. }
  794. }
  795. sQry = "SELECT VMS_FORM_ID, COUNT(1) AS CNT \r\n"
  796. " FROM TB_VMS_SCNR_VMS_FORM \r\n"
  797. " WHERE VMS_FORM_ID = :p01 \r\n"
  798. " GROUP BY VMS_FORM_ID \r\n";
  799. ITSDb_SQLText(pADO, sQry);
  800. ITSDb_SQLBind(pADO, "p01", AFormId);
  801. ITSDb_SQLOpen(pADO);
  802. for( ; !pADO->Eof; pADO->Next()) {
  803. if (pADO->FieldByName("CNT")->AsInteger > 0) {
  804. String sMsg;
  805. sMsg = "VMS 폼 사용확인\r\n삭제할 VMS 폼 정보가 [VMS시나리오] 에서 사용되고 있습니다.\r\n먼저 해당 정보를 삭제해주시기 바랍니다.";
  806. Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  807. return false;
  808. }
  809. }
  810. }
  811. catch(EDatabaseError &E) {
  812. DBERRORMSG("TFrmVmsMsgFormMngr::CheckVmsFormUse", String(E.ClassName()), E.Message, sQry);
  813. throw Exception(String(E.ClassName()) + E.Message);
  814. }
  815. catch(Exception &e) {
  816. DBERRORMSG("TFrmVmsMsgFormMngr::CheckVmsFormUse", String(e.ClassName()), e.Message, sQry);
  817. throw Exception(String(e.ClassName()) + e.Message);
  818. }
  819. }
  820. __finally {
  821. if (pADO) {
  822. pADO->Close();
  823. delete pADO;
  824. }
  825. }
  826. return true;
  827. }
  828. //---------------------------------------------------------------------------
  829. bool __fastcall TFrmVmsMsgFormMngr::DelVmsFormRltnTable(String AFormId)
  830. {
  831. String sQry;
  832. TADOQuery *pADO = NULL;
  833. try {
  834. try {
  835. pADO = new TADOQuery(NULL);
  836. pADO->Close();
  837. pADO->Connection = ITSDb_GetConnection();
  838. sQry = "DELETE TB_VMS_FORM_OBJ_TXT \r\n"
  839. " WHERE VMS_FORM_OBJ_ID IN (SELECT VMS_FORM_OBJ_ID \r\n"
  840. " FROM TB_VMS_FORM_VMS_FORM_OBJ \r\n"
  841. " WHERE VMS_FORM_ID = :p01) \r\n";
  842. ITSDb_SQLText(pADO, sQry);
  843. ITSDb_SQLBind(pADO, "p01", AFormId);
  844. pADO->ExecSQL();
  845. sQry = "DELETE TB_VMS_FORM_VMS_FORM_OBJ WHERE VMS_FORM_ID = :p01";
  846. ITSDb_SQLText(pADO, sQry);
  847. ITSDb_SQLBind(pADO, "p01", AFormId);
  848. pADO->ExecSQL();
  849. return true;
  850. }
  851. catch(EDatabaseError &E) {
  852. DBERRORMSG("TFrmVmsMsgFormMngr::DelVmsFormRltnTable", String(E.ClassName()), E.Message, sQry);
  853. //throw Exception(String(E.ClassName()) + E.Message);
  854. return false;
  855. }
  856. catch(Exception &e) {
  857. DBERRORMSG("TFrmVmsMsgFormMngr::DelVmsFormRltnTable", String(e.ClassName()), e.Message, sQry);
  858. //throw Exception(String(e.ClassName()) + e.Message);
  859. return false;
  860. }
  861. }
  862. __finally {
  863. if (pADO) {
  864. pADO->Close();
  865. delete pADO;
  866. }
  867. }
  868. return true;
  869. }
  870. //---------------------------------------------------------------------------
  871. bool __fastcall TFrmVmsMsgFormMngr::DelVmsForm(String AFormId)
  872. {
  873. String sQry;
  874. TADOQuery *pADO = NULL;
  875. if (!DelVmsFormRltnTable(AFormId)) {
  876. return false;
  877. }
  878. try {
  879. try {
  880. pADO = new TADOQuery(NULL);
  881. pADO->Close();
  882. pADO->Connection = ITSDb_GetConnection();
  883. sQry = "DELETE TB_VMS_FORM WHERE VMS_FORM_ID = :p01";
  884. ITSDb_SQLText(pADO, sQry);
  885. ITSDb_SQLBind(pADO, "p01", AFormId);
  886. pADO->ExecSQL();
  887. return true;
  888. }
  889. catch(EDatabaseError &E) {
  890. DBERRORMSG("TFrmVmsMsgFormMngr::DelVmsForm", String(E.ClassName()), E.Message, sQry);
  891. //throw Exception(String(E.ClassName()) + E.Message);
  892. return false;
  893. }
  894. catch(Exception &e) {
  895. DBERRORMSG("TFrmVmsMsgFormMngr::DelVmsForm", String(e.ClassName()), e.Message, sQry);
  896. //throw Exception(String(e.ClassName()) + e.Message);
  897. return false;
  898. }
  899. }
  900. __finally {
  901. if (pADO) {
  902. pADO->Close();
  903. delete pADO;
  904. }
  905. }
  906. return true;
  907. }
  908. //---------------------------------------------------------------------------
  909. String __fastcall TFrmVmsMsgFormMngr::GetNextVmsFormId(String AFormType)
  910. {
  911. String sQry;
  912. TADOQuery *pADO = NULL;
  913. String result = AFormType + "-0000";
  914. 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 + "-'";
  915. try
  916. {
  917. try
  918. {
  919. pADO = new TADOQuery(NULL);
  920. pADO->Close();
  921. pADO->Connection = ITSDb_GetConnection();
  922. ITSDb_SQLText(pADO, sQry);
  923. ITSDb_SQLOpen(pADO);
  924. pADO->Open();
  925. result = pADO->FieldByName("NEWID")->AsString;
  926. }
  927. catch(EDatabaseError &E)
  928. {
  929. DBERRORMSG("TFrmVmsMsgFormMngr::GetNextVmsFormId", String(E.ClassName()), E.Message, sQry);
  930. return result;
  931. }
  932. catch(Exception &e)
  933. {
  934. DBERRORMSG("TFrmVmsMsgFormMngr::GetNextVmsFormId", String(e.ClassName()), e.Message, sQry);
  935. return result;
  936. }
  937. }
  938. __finally
  939. {
  940. if (pADO)
  941. {
  942. pADO->Close();
  943. delete pADO;
  944. }
  945. }
  946. return result;
  947. }
  948. //---------------------------------------------------------------------------