FrmVmsMsgUserDispSRCF.cpp 40 KB

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