FrmVmsMsgFormMngrSRCF.cpp 43 KB

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