FrmVmsMsgUserDispSrcF.cpp 47 KB

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